Autor | Zpráva | ||
---|---|---|---|
BlackMartin Profil |
#1 · Zasláno: 10. 2. 2008, 09:52:05 · Upravil/a: BlackMartin
Mám takový jednoduchý script, který má sloužit jako template systém, ale nefunguje jak má.
<?php /** * @author Martin Pernica * @copyright 2008 */ // Settings require("config.php"); $source = file_get_contents("./templates/$template/index.tpl"); // Header $header = require_once("./header.php"); $source = str_replace("{header}", $header, $source); // Left Menu $leftmenu = require_once("./menu/left.php"); $source = str_replace("{leftmenu}", $leftmenu, $source); // Content $content = require_once("./content.php"); $source = str_replace("{content}", $content, $source); // FlashNews $flashnews = require_once("./flashnews.php"); $source = str_replace("{flashnews}", $flashnews, $source); // Footer $footer = require_once("./footer.php"); $source = str_replace("{footer}", $footer, $source); echo $source; ?> V .tlp souboru mám na správných místech dáno {menu} ..atd. Chybu můžete vydět zde http://nofear.clanweb.cz/index.php Místo obsahu se tam vypisuje 1 a ten obsah se vypisuje nad celý web. Nevíte kde je chyba ? Děkuju za pomoc. |
||
nightfish Profil |
#2 · Zasláno: 10. 2. 2008, 10:03:39
$content = require_once("./content.php");
require_once není funkce, a tedy nevrací žádné hodnoty chování je tedy naprosto logické zřejmě bude místo require_once potřeba použít třeba již jednou použité file_get_contents |
||
BlackMartin Profil |
#3 · Zasláno: 10. 2. 2008, 10:07:17
Tak jsem to přepsal na file_get_contents() ale výsledek můžete vydět na výše uvedené adrese.
|
||
nightfish Profil |
hmm
je potřeba adresy k těm php souborům upravit tak, aby se zpracovávaly webserverem (což však u některých hostingů může narazit) další řešení mě napadá ještě přes eval(), ale to je taková prasárna, že tady o ní snad raději ani nebudu psát |
||
BlackMartin Profil |
#5 · Zasláno: 10. 2. 2008, 10:12:11
Jakým způsobem bych to měl ty adresy upravit ?
Jn eval() mě tady napadlo, ale jak jste napsal byla by to prasárna. |
||
BetaCam Profil |
#6 · Zasláno: 10. 2. 2008, 10:13:32
BlackMartin
A co máš v ./header.php, ./content.php atd.??? Předpokládám, že tam máš PHP včetně tagů <?php a ?> pokud to tam tedy vložíš tak se ti to podělá. |
||
BetaCam Profil |
#7 · Zasláno: 10. 2. 2008, 10:17:43 · Upravil/a: BetaCam
BlackMartin
Jakým způsobem bych to měl ty adresy upravit ? atd. |
||
BlackMartin Profil |
#8 · Zasláno: 10. 2. 2008, 10:17:59
Ano jsou tam php tagy.
|
||
BlackMartin Profil |
#9 · Zasláno: 10. 2. 2008, 10:20:29
http://nofear.clanweb.cz/footer.php http://nofear.clanweb.cz/content.php Nějak nechápu co tím docílím. |
||
Mastodont Profil |
#10 · Zasláno: 10. 2. 2008, 10:20:30 · Upravil/a: Mastodont
nightfish
require_once není funkce, a tedy nevrací žádné hodnoty Vážně? Viz http://cz.php.net/manual/cs/function.include.php : Uvnitř vkládaného souboru lze provést příkaz return() k ukončení provádění souboru a návrat do volajícího skriptu. Je tedy možné z vložených souborů vracet hodnoty. Můžete vzít hodnotu volání include, jako by to byla normální funkce. |
||
BlackMartin Profil |
#11 · Zasláno: 10. 2. 2008, 10:28:09
Nějak jsem nepochopil jak to spravit.
Mohl by mi někdo naznačit co stím ? |
||
nightfish Profil |
Mastodont
Vážně? Viz http://cz.php.net/manual/cs/function.include.php : hmm, díky, o tomhle jsem nevěděl BlackMartin další možností je použít output buffering použij následující funkci místo těch require_once (přebráno z manuálové stránky k include): <?php $string = get_include_contents('somefile.php'); function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include $filename; $contents = ob_get_contents(); ob_end_clean(); return $contents; } return false; } ?> |
||
BlackMartin Profil |
#13 · Zasláno: 10. 2. 2008, 11:49:45 · Upravil/a: BlackMartin
Díky moc, funguje to.
Ale jen maličký problém ... Když si v menu kliknete na Registrace tak by se měla v Main Content zobrazit, ale nic tam není :-( A ani novinky, které by tam měli být se nezobrazí... Menu i Rychlé Novinky jsou tahané z DB a fungují ale vše co se má zobrazit v Main Content nefunguje. Obsah souboru content.php : <?php $obsah = $_GET['obsah']; $type = $_GET['type']; if ($obsah==FAlSE) { include ("scripts/news.php"); } elseif ($obsah!="" && $type=="db") { $query = mysql_query ("SELECT * FROM pages WHERE getname = '$obsah'"); while ($zaznam = MySQL_Fetch_Array($query)) { echo "<br> <h2>".$zaznam["title"]."</h2><br>"; echo $zaznam["content"]; } } elseif ($obsah==index) { echo "Nelze vkládat index !"; } elseif($obsah==MinAdmin) { header("Location: scripts/MinAdmin.php"); } else { include ("scripts/$obsah.php"); } ?> <br> <br> |
||
Pietro Profil |
#14 · Zasláno: 10. 2. 2008, 14:19:12
index a MinAdmin jsou konstanty, že je píšeš bez uvozovek?
|
||
nightfish Profil |
#15 · Zasláno: 10. 2. 2008, 14:32:21
- vypiš si obsahy proměnných $obsah a $type
- zapni si zobrazování všech chyb - error_reporting(E_ALL); |
||
BlackMartin Profil |
#16 · Zasláno: 10. 2. 2008, 15:49:00
Chybu mi to nevypisuje žádnou ale ani obsah proměnných ...
Nechápu kde je chyba když proměná je deklarována jako $_GET[""]; a zkoušel jsem i $HTTP_GET_VARS[""]; pořád nic ... :( |
||
Časová prodleva: 16 let
|
0