Autor | Zpráva | ||
---|---|---|---|
mzk Profil * |
#1 · Zasláno: 4. 8. 2012, 20:39:08
Zdravím,
potřeboval bych poradit, jakým způsobem bych měl postupovat. Mám pole s odkazy a jednoduchou šablonu: .. nějaké html .. {začátek cyklu - pole odkazy} <li><a href="{url}">{text}</a></li> {konec cyklu} .. nějaké html .. .. nějaké html .. <li><a href="odkaz.htm">text odkazu</a></li> <li><a href="odkaz.htm">text odkazu</a></li> <li><a href="odkaz.htm">text odkazu</a></li> <li><a href="odkaz.htm">text odkazu</a></li> .. nějaké html .. |
||
Dědeček Profil |
#2 · Zasláno: 4. 8. 2012, 22:35:25
Budu předpokládat, že v key máš odkaz a v value máš text odkazu
<?php $polesodkazy=array(" http://example.com"=>"Example.com","http://example.eu"=>"Example.eu ");
foreach($polesodkazy as $key => $value) { echo '<li><a href="'.$key.'">'.$value.'</a></li>'; } ?> |
||
mzk Profil * |
#3 · Zasláno: 4. 8. 2012, 23:32:39
Dědeček:
díky za odpověď, ale bohužel jsem to špatně popsal.. {začátek cyklu - pole odkazy} <li><a href="{url}">{text}</a></li> {konec cyklu} je šablona, kterou potřebuji jednoduše měnit. Např. <li> vyměním za <br> atd. jsou na to šablonovací systémy, ale z nich jsem nepochopil, jak tuto operaci provádí |
||
Alphard Profil |
#4 · Zasláno: 4. 8. 2012, 23:44:19
mzk:
A tam není {foreach}? Třeba v Latte by to šlo snadno, ale my fakt nevíme, co používáte. |
||
mzk Profil * |
#5 · Zasláno: 5. 8. 2012, 00:29:16
Alphard:
nepoužívám nic, to je příklad.. Potřeboval bych to jako jednoduchej šablonovaci system.. A prave nevim, jak to vyřešit. Jestli to nějak projít reg. výrazem a najít to mezi {cyklus} a {konec.. ale nevím, jak s tím dál pracovat.. Výsledek chci ukládat pak do souboru. |
||
Alphard Profil |
#6 · Zasláno: 5. 8. 2012, 00:45:13
Aha, už zase :-) Má rada je použít hotový mocný (a velký) šablonovací systém.
Jinak viz Systém šablon, jsou tam zmíněny i menší systémy a následně hned problém, že nejde cyklus zanořit... |
||
mzk Profil * |
#7 · Zasláno: 5. 8. 2012, 10:38:41
Alphard:
jojo, už zase.. na to jsem se díval, ale je tam k mému "problému" zmíněno jen to, že vycucnout reg. výrazem <li><a href="{url}">{text}</a></li> když budu mít toto, tak to zvládnu nahradit podle potřeb, ale nevím jak to nahrazené dostat do toho html. |
||
Alphard Profil |
#8 · Zasláno: 5. 8. 2012, 11:19:21
mzk:
Už minuje jsem slíbil, že uvedu jednoduchý příklad, takže: menu.tpl <ul> {foreach #menu} <li><a href="{#url}">{#name}</a></li> {/foreach} <ul> index.php <?php $replace['menu'] = array( array('url' => 'http://djwp.cz', 'name' => 'Diskuse jak psat web'), array('url' => 'http://php.net', 'name' => 'Manual PHP net'), ); $tpl = file_get_contents('menu.tpl'); preg_match_all('~{foreach #(\w+)}(.+){/foreach}~isU', $tpl, $loops); foreach ($loops[1] as $key => $name) { $temp = ''; foreach ($replace[$name] as $dic) { $t = $loops[2][$key]; foreach ($dic as $k => $v) { $t = str_replace("{#$k}", $v, $t); } $temp .= $t; } $tpl = preg_replace('~{foreach #'.$name.'}(.+){/foreach}~isU', $temp, $tpl); } echo $tpl; A výstup <ul> <li><a href="http://djwp.cz">Diskuse jak psat web</a></li> <li><a href="http://php.net">Manual PHP net</a></li> <ul> Víc se s tím zabývat nebudu. Když vás baví vynalézat kolo, je to vaše věc. |
||
mzk Profil * |
#9 · Zasláno: 5. 8. 2012, 20:54:19
Alphard:
díky moc! kolo vynalézat nebudu, jen jsem chtěl vědět, jakým způsobem se to řeší. moc mi to pomohlo. ještě jednou díky! |
||
Alphard Profil |
#10 · Zasláno: 5. 8. 2012, 20:57:01
[#9] mzk
Právěže se používají kompilované šablony a řeší se to jinak... |
||
mzk Profil * |
#11 · Zasláno: 6. 8. 2012, 01:55:44
Alphard:
tak zas nic :-D ale aj tak dik! |
||
Ugo Profil |
#12 · Zasláno: 6. 8. 2012, 08:04:39
mzk:
řeší se to takto ... if(neni nakesovanej soubor) { $text = file_get_contents(SABLONA); $text = preg_replace({foreach} za <?php foreach(); ?>); file_put_contents(nakesovanej soubor, $text); } include(nakesovanej soubor); je to lehčí než procházení regulárama což by šlo taky, ale zbláznil by ses z toho a přitom ti to dává víc možností, jedinej problém je - musíš mít práva zápisu, ale zatim sem se nesetkal s tim že by nebyly a zbytek webu by šel, asi vždycky sou někde potřeba |
||
Časová prodleva: 13 let
|
0