Autor Zpráva
Hologos
Profil
Zdravím,
chci se zeptat, zda-li někdo nevíte, jak funguje šablonovací systém?
Chtěl bych si oddělit php od html, ale nechci používat robustní šablonovací systém. Jedná se o malinký projekt.
Tak bych si ho rád napsal sám.
Díky
watchick
Profil
Jestli neodpovím zcela mimo, tak bych asi do HTML dával něco jako %uzivatele_blog%, %iduzivatele%, %uzivatele_tabulka%,...
a poté bych to v php přes
$html = str_replace("%uzivatele_blog%",$vytvoreny_div_v_php,$html);

změnil
Majkl578
Profil
Jednoduše řečeno se jedná o nahrazení zástupných symbolů za jejich reálné hodnoty. Šablonovací systémy mívají parsery, které šablonu převedou na PHP kód, který je následně použit. Nejčastěji se používá regulárních výrazů (PCRE). Syntaxe šablonovacích systémů jsou různé, např. Smarty vs. PHPBB vs. Nette\Templates.
mckay
Profil
Hologos:
Já třeba svůj šablonovací systém mám založený na "proměnných". Proměnné uzavírám do složených závorek a potom pomocí php převádím na html. Tak si vytvářím i moduly atd.

{title} - převede se na to, co potřebuji narvat do hlavičky
{mod_lastarts} - převede se kupříkladu na modul, který bude zobrazovat poslední články.

De facto je to parser, kterej si poradí s proměnnými šablonovacího systému, který si ty zvolíš.
Hologos
Profil
Jeho funkci takovou vím, asi jsem to špatně napsal.
Jde mi právě o to parsování. Jak zajistit, aby se mi dokument projel a nahradil například [title] za $title a to následně za 'Úvodní stránka'.
ShiraNai7
Profil
S parsováním si jde hodně vyhrát. Já mám třeba template systém s docela komplexní syntaxí kde můžu mít tagy jednotlivé i párové, s parametry, vázané na proměnnou, podmínkování a podobně.. Parsoval jsem původně pomocí funkcí pro regulerní výrazy, ale nakonec jsem si musel napsat vlastní třídu (regulérní nestačily při párových značkách které obsahují další značky apod).
Hologos
Profil
Jediné, co pořád nevím, je to, jak udělat, aby se mi v dokumentu nahradilo {title} za proměnnou, ale tak, aby se to stalo pouze u výstupu, aby se neupravoval soubor.

To znamená, mám soubor head.phtml, kde je třeba {title}. Udělat to, aby se mi za {title} dosadilo $title je hračka, ale jde mi to, že pokud to udělám takhle:

$head = fce_co_nacte_soubor('head.php');
$head = nahrad('{title}', '$title', $head);

tak se mi to už napořád změní, tzn, při každém dalším spuštění stránky se šablonovací systém volá zbytečně, protože už není co překládat, upraví se soubor head.phtml, takže pokud ho otevřu, už uvidím doplnění php. Jde mi to o, jak nahradit ty značky tak, aby se stávající soubor nezměnil.

Díky
Majkl578
Profil
Hologos:
Jde mi to o, jak nahradit ty značky tak, aby se stávající soubor nezměnil.
K tomu slouží cache.
Hologos
Profil
Aha, a jak na to? :)
tiso
Profil
[#7] Hologos nesmieš ten nahradený text uložiť do toho súboru šablóny, ale vypísať na výstup.

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:

0