ezs Posted August 16, 2004 Report Share Posted August 16, 2004 vai kāds lūdzu varētu lēnām un mierīgi izskaidrot kā izveidot vienkāršu uz templeitiem balstītu dzinēju. kāda ir pati ideja šādam scenārijam, kā teiksim veidot dzinēju kurš ir balstīts uz vairākiem templeitiem un, kā izveidot ko līdzīgu šim lai php scripts sapratu kas ir kas un kur kas ir jāliek. html dokuments body.html <html> <head><title>{title}</title> </head> <body> {body} </body> </html> un daudzos blogos navigācijas joslā rādās nevis www.me.lv/index.php?id=4253 bet gan www.me.lv/4253/ kā to dobon gatavu un kas notiek tad ja teixim man ir jāpadod vairāki manīgie ar GET metodi kautkas bija raxtīts jāzepa blogā un sviesc savā menuāļu saraxtā arī šo to bija iekļāvis, bet nu jau abi resursi vairs nau pieejami :( ceru uz atsaucību Link to comment Share on other sites More sharing options...
Venom Posted August 16, 2004 Report Share Posted August 16, 2004 ā) $templ=@implode('',@file('body.html')); $templ=str_replace('{body}',$body,$templ); ... bē) Apache mod_rewrite human readable urls, go google Link to comment Share on other sites More sharing options...
ezs Posted August 16, 2004 Author Report Share Posted August 16, 2004 (edited) thx viss smuki sanāk ar tiem templeitiem, bet noteikti ir arī kāda autoamtizēšanas iespēja tipa lai {title} automātiski tiktu uztasīts par $title lai katram nebūtu jāraksta $templ=str_replace('{title}',$title,$templ); ... un kā varētu satasīt inclūdu tipa mēģināju šādi, bet tas nu ir galīgi garām <?php $title = "title ir"; $body = include("temp/text.html"); #šitā rindiņa neiet kopā ar to echo $botom = "© ezs 2004"; $templ=@implode('',@file('temp/index.html')); $templ=str_replace('{body}',$body,$templ); $templ=str_replace('{title}',$title,$templ); $templ=str_replace('{botom}',$botom,$templ); echo "$templ"; ?> doma ir tāda ka tieši {body} ir jāinklūdo dažādi failiņi tipa ar switch() šamie manīsies, bet me namāk savietot echo ar include tā lai šamie strādātu korekti Edited August 16, 2004 by ezs Link to comment Share on other sites More sharing options...
Venom Posted August 16, 2004 Report Share Posted August 16, 2004 ā) nu, "ierobežo" visus mainīgos, kas ir jāmaina kādā masīvā, e.g. $templ['body']='tas un tas'; $templ['title']='šis un cits kas'; foreach($templ as $key=>$val) $html=str_replace('{'.$key.'}',$val,$html); bē) ņemnogo ņepoņal naščet echo include, ko tu mēģini izdarīt, iekš body ielasīt tā include tekstu vai pamainīt $body tā, lai {body} vietā būtu cits fails? ja pirmais variants: go with $body=@implode('',@file('template.html')); ja otrais variants: go with include('/template'.$body.'.html'); trešais variants: if (..) $switched='index'; else $switched='other'; $body=@implode('',@file($switched.'.html')); $html=str_replace('{body}',$body,$html); es personīgi izmantotu sekojošo variantu: ob_start();//viss outputs tiek iekešots RAMā darāmies iekš php, inclūdojam templātes ar visiem {body} utml, neaizstājot tos $html=ob_get_clean();//tagad mumsīm iraid viss htmls ar visām templāšu mainīgiem pielietojam varinatu ā. Link to comment Share on other sites More sharing options...
ezs Posted August 17, 2004 Author Report Share Posted August 17, 2004 viss jau ir baigi skaisti bet sūdi rodas tad ja {body} fails satur arī višādus {head} {text} etc šamie vienkārši netiek menītīti un tiek vienkārši izvadīti kā ir :( un kurā vietā tad būtu jāliek MySql cikls lai teiksim {body} atrodošais fails attēlotu vusus ieraxtus pašu sql uzraxtīt ta vel māku bet par tiem templeitiem vel tikai mācos :blink: Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2004 Report Share Posted August 17, 2004 Tu lasi ko tev atbild un piedomā pie tā ko lasi/raksti? (sorry, esmu sliktā noskaņojumā) ā) Tev no sākumā jāsastāda pilns lapas teksts, ar visām iespējamām templātēm, un tikai pēc tam visu mainīt. E.g. <?php ob_start(); ?> {HEADER} <?php include 'some.tpl'; //satur {welcome}{text} ?> {FOOTER} <?php $html=ob_get_clean(); /* tagad iekš $html mums ir {HEADER} {welcome}{text} {FOOTER} */ foreach($tpl as $key=>$val) $html=str_replace('{'.$key.'}',$val,$html); echo $html; ?> bē) viens no variantiem. pieņemsim, tu gribi izvadīt no mysqla rakstu, datumu un autoru, pie tam mainot dizainu: include 'some.tpl'; vietā mēs taisam, piem. include 'raksti.php'; kas darās sekojoši: //mysql savienojums etc. $tpl['body']=''; [b]variants ā, tagu simulēšana - dizaina atdalīšana no satura[/b] while($res=mysql_fetch_array...) $tpl['body'].='{DATUMS}'.date('Y/m/d H:i:s',$res['date']).'{/DATUMS}{RAKSTS}'.$res['article'].'{/RAKSTS}{AUTHOR}'.$res['author'].'{/AUTHOR}'; un kaut kur pēc tam nomainām {RAKSTS} piem. par <p>, bet {/RAKSTS} par </p>, bet citā gadījumā attiecīgi <div id="raksts"> un </div> utml. [b]variants bē, teplāšu atkārtošana - mainām izvietojumu/saturu[/b] $raksta_tpl=@implode('',@file('raksts.tpl')); /* raksts.tpl var saturēt piem. <p>{raksts}<br /><i>{autors}</i>, {datums}</p> vai <b>{autors}</b><br /> <p>{raksts}</p> {datums} utml. */ while($res=mysql_fetch_array...) { //note: arī raksti var saturēt templāšmainīgos! $tmp=$raksta_tpl; $tmp=str_replace('{author}',$res['author'],$tmp); $tmp=str_replace('{raksts}',$res['article'],$tmp); $tmp=str_replace('{datums}',date('H:i d/m',$res['stamp']),$tmp); $tpl['body'].=$tmp; } un beigās palaižām to, kas iet ar ob_get_clean, lai nomaina body pret attiecīgo vērtību abus variantus var un vajag maisīt <b>note:</b> jānodrošina, ka {BODY} vai cits "ietverošs" elements tiek aizvietots pirms visādiem "ietvertiem" sīkumiem. to var darīt vai nu pareizi iniciējot $tpl masīvu, vai nu ar rociņām pierakstīt str_replace('{BODY}'); str_replace('{datums}'); vai nu jāsastāda templāšmainīgo prioritāšu masīvs $priority=array('body','raksts','datums'); while($key=array_shift($priority)) $html=str_replace('{'.$key.'}',$tpl[$key],$html); cik cilvēku, tik pieeju Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2004 Report Share Posted August 17, 2004 (edited) buggy dupe Edited August 17, 2004 by Venom Link to comment Share on other sites More sharing options...
bubu Posted August 17, 2004 Report Share Posted August 17, 2004 (edited) Venom, domāju ka šim tāpat no tava pēdējā koda gabala būs ne silts, ne auksts. Tāpat kautkas neies ;) Varēji tik traki nepūlēties. Edited August 17, 2004 by bubu Link to comment Share on other sites More sharing options...
ezs Posted August 17, 2004 Author Report Share Posted August 17, 2004 varbūt me ir pilnīga lāme bet ā) variantā me vairs nered $templ=@implode('',@file('temp/index.html')); vai ko tamlīdzīgu :blink: un līdz ar to viss smuki rādās ar visiem {head} etc nevis smuki atgriež to vērtības <?php $title = "ezs page"; $sad = "sad"; $botom = "© ezs 2004"; $body = @implode('',@file('temp/text.php')); $templ=@implode('',@file('temp/index.html')); $templ=str_replace('{body}',$body,$templ); $templ=str_replace('{title}',$title,$templ); $templ=str_replace('{botom}',$botom,$templ); ob_start(); ?> {HEADER} <?php include 'temp/index.html'; //satur {welcome}{text} ?> {FOOTER} <?php $html=ob_get_clean(); foreach($tpl as $key=>$val) $html=str_replace('{'.$key.'}',$val,$html); echo $html; ?> Link to comment Share on other sites More sharing options...
ezs Posted August 17, 2004 Author Report Share Posted August 17, 2004 Venom, domāju ka šim tāpat no tava pēdējā koda gabala būs ne silts, ne auksts. Tāpat kautkas neies ;) Varēji tik traki nepūlēties. es priecājos ka vismaz kāds man palīdz mācīties un saku lielu lielu paldies 2 Venom esmu es tāds dīvainītis kurš ne īsti labi saprot en un ru galīgi nea Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2004 Report Share Posted August 17, 2004 <?php $title = "ezs page"; $sad = "sad"; $botom = "© ezs 2004"; $body = @implode('',@file('temp/text.php')); par šo brīnos šiem te ^ jābūt template apakšmasīvā $templ=@implode('',@file('temp/index.html')); $templ=str_replace('{body}',$body,$templ); steidzamies, steidzamies, tam visam automātiski jādarās lejā, kur foreach $templ=str_replace('{title}',$title,$templ); $templ=str_replace('{botom}',$botom,$templ); ob_start(); ?> {HEADER} <?php include 'temp/index.html'; //satur {welcome}{text} tev jau viš iekš $templ bija, vai ne? ?> {FOOTER} <?php $html=ob_get_clean(); foreach($tpl as $key=>$val) $html=str_replace('{'.$key.'}',$val,$html); echo $html; ?> tu jauc tods mainīgos, kas satur template vērtības un to, kur ir pati template. AIZMIRSTI par tādu template mainīgo, kā {body}, ieciklējies uz viņa esi, vai nu arī nepareizu jēgu piesaisti. labots variants <?php $tpl['title'] = "ezs page"; $tpl['sad'] = "sad"; $tpl['botom'] = "© ezs 2004"; $tpl['HEADER']='kaut kāda galvene'; $tpl['FOOTER']='kaut kāda kājene'; //galvenās lapas daļas, kas var saturēt citus {mainīgos} $priority=array('HEADER','FOOTER'); ob_start(); ?> {HEADER} <?php include 'temp/index.html'; //šis ķipa ir tas body, kurā ir {title}{sad}{bottom} echo '<br />{bottom}';//tā arī var maisīt ?> {FOOTER} <?php $html=ob_get_clean(); NB: $html satur: {HEADER} ...{title}...{sad}...{bottom}...<br />{bottom} {FOOTER} //nomainām prioritārās daļas while($key=array_shift($priority)) { $html=str_replace('{'.$key.'}',$tpl[$key],$html); unset($tpl[$key]); } //nomainām pārējos sīkumus foreach($tpl as $key=>$val) $html=str_replace('{'.$key.'}',$val,$html); echo $html; ?> ezs, mēģini izprast, nevis nokopēt un palaist (tik un tā nestrādās ;) ) Link to comment Share on other sites More sharing options...
ezs Posted August 17, 2004 Author Report Share Posted August 17, 2004 (edited) okz šo to sapratu bet par to {body} kapē gan nelietot viņu? saraxtiju vusu smuki bet tik un tā šams negrib ņemt no faila {body} un pārtasīt tos {sad} etc par $sad vai ko citu paliek {sad} un pēc tava piedāvātā varianta tik un tā nesaprotu kur vajadzētu {body} piešķirt failu, jo faili tak var atšķirties me darija šita <?php $b= @implode('',@file('temp/text.php')); $tpl['body']="$b"; ?> bet tas tik un tā nelīdzēja :( Edited August 17, 2004 by ezs Link to comment Share on other sites More sharing options...
Gacha Posted August 17, 2004 Report Share Posted August 17, 2004 Īpaši nepētiju tur to visu augšā, bet tev te pašā apakšā: <?php$b= @implode('',@file('temp/text.php')); $tpl['body']="$b"; ?> Vienīgais, kas tev te ir lieks, tas ir "" ap to $b Bet principā šim būtu jastrādā, ja tas fails patiešām eksistē! Link to comment Share on other sites More sharing options...
jannis Posted August 17, 2004 Report Share Posted August 17, 2004 personiigi es lietoju phpOBTemplate. es gan uztaisiiju veel vienu classi, lai eertaak buutu failus iekljaut un veel dazhus siikumus. Link to comment Share on other sites More sharing options...
sviesc Posted August 18, 2004 Report Share Posted August 18, 2004 nu me personigi lieto http://smarty.php.net/ tamster ieteica ;) man jau patīk Link to comment Share on other sites More sharing options...
Recommended Posts