Autor | Zpráva | ||
---|---|---|---|
Hologos Profil |
#1 · Zasláno: 6. 7. 2010, 18:25:47
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 |
#2 · Zasláno: 6. 7. 2010, 18:39:03
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 |
#3 · Zasláno: 6. 7. 2010, 18:41:57 · Upravil/a: Majkl578
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 |
#4 · Zasláno: 6. 7. 2010, 18:42:39
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 |
#5 · Zasláno: 6. 7. 2010, 18:45:58
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 |
#6 · Zasláno: 7. 7. 2010, 12:44:40 · Upravil/a: ShiraNai7
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 |
#7 · Zasláno: 7. 7. 2010, 12:52:20
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 |
#8 · Zasláno: 8. 7. 2010, 22:55:31
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 |
#9 · Zasláno: 8. 7. 2010, 23:00:21
Aha, a jak na to? :)
|
||
tiso Profil |
#10 · Zasláno: 8. 7. 2010, 23:03:04
[#7] Hologos nesmieš ten nahradený text uložiť do toho súboru šablóny, ale vypísať na výstup.
|
||
Časová prodleva: 14 let
|
0