Autor Zpráva
BlackMartin
Profil
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
$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
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
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
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
BlackMartin
Jakým způsobem bych to měl ty adresy upravit ?



atd.
BlackMartin
Profil
Ano jsou tam php tagy.
BlackMartin
Profil

http://nofear.clanweb.cz/footer.php
http://nofear.clanweb.cz/content.php


Nějak nechápu co tím docílím.
Mastodont
Profil
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
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
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
index a MinAdmin jsou konstanty, že je píšeš bez uvozovek?
nightfish
Profil
- vypiš si obsahy proměnných $obsah a $type
- zapni si zobrazování všech chyb - error_reporting(E_ALL);
BlackMartin
Profil
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 ... :(

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: