andrisp Posted November 21, 2006 Report Share Posted November 21, 2006 Nepatīk man uzdot šādus vispārīgus jautājumus, bet... Kā parasti veido templeišu sistēmas ? Vienā variantā katra template ir pilnīgs html fails, kas nozīmē, ka ja vēlos pamainīt kaut ko globālu (tur platāka headeris vai kautko tādu), tad man visticamāk būs jāmaina katra template atsevišķi. Otrā variantā - kaut kādas daļas tiek rejūzotas starp visām templatēm, kas nozīmētu vienkāršāku to atjaunināšanu. Pirmo variantu realizēt ir pavisam vienkārši, bet ja šo templeitu paliek daudz, tad jebkādu nelielu izmaiņu veikšana kopējā struktūrā var pārvērsties par lielu darbu. Tāpat arī būtu daudz dublējošā html koda. Kaut gan šādā veidā var sasniegt augstu kustomizēšanas līmeni (Katru templeiti varu noformēt kā vajag līdz pēdējam sīkumam, neietekmējot citas templeitas). Otrajā variantā varētu rejūzot kaut kādas daļas. Piem., katrs template fails varētu izskatīties šāds: <!--dtd--> <html> <head> <title><?php echo $_C['title']; ?></title> </head> <body> <?php require('head.php'); ?> <?php require('nav.php'); ?> <table> <?php foreach($_C['products'] as $item) { ?> <tr> <td><?php echo $item['id']; ?></td> <td><?php echo $item['title']; ?></td> <td><a href="edit.php?id=<?php echo $item['id']; ?>">Edit</a></td> </tr> <?php } ?> </table> <?php require('foot.php'); ?> </body> </html> Šajā gadijumā ja vajadzētu veikt izmaiņas navigācijā, galvenē vai kājenē, jāmaina būtu viens fails. Tomēr, bieži ir tā, ka kādam templeitam kaut ko vajag nedaudz savādāk nekā citiem. Un ja tādi parādās vairāki, kam, piem., vajag nedaudz savādāku navigāciju, tad nākas piemēslot nav.php failu. Kāda ir jūsu pieredze ? Kā saglabāt augstu templeišu kustomizēšanas pakāpi, bet tā lai nedublētos daudz html koda ? Link to comment Share on other sites More sharing options...
Delfins Posted November 21, 2006 Report Share Posted November 21, 2006 (edited) Atkarīgs no dziņa/karkasa... bet imho, jāliek pa klučiem, vai arī jākešo. Teiksim, ir: main.tpl - karkass simple-block.tpl - bloka templeits, kuru iesprauž/pieliek klāt kādā vietā main.tpl.. Edited November 21, 2006 by Delfins Link to comment Share on other sites More sharing options...
hmnc Posted November 21, 2006 Report Share Posted November 21, 2006 tur jau tā h* ar templeitiem, ka augstu kustomizācijas līmeni tu nekad nespēsi saglabāt, ja vien līdz marazmam nesarežģī to visu pasākumu es arī agrāk centos ar templeitiem kko taisīt, bet man vienmēr pagadījās tādas lapas, kur vajadzēja taisīt perversijas visādas :) tā arī to lietu zamjal :) Link to comment Share on other sites More sharing options...
Delfins Posted November 21, 2006 Report Share Posted November 21, 2006 Augstākā kustomizācija ir pats PHP :) Link to comment Share on other sites More sharing options...
v3rb0 Posted November 21, 2006 Report Share Posted November 21, 2006 katrai lapai/formai pa include('templates/formas-nosaukums.php'); tajā formas-nosaukums.php tad ar includē headeri/footeri un kustomizē kā gribi. ar šitādu pieeju tiek izmantots template patterns kā tāds, bet nav nekāda 'templeišu engine'. imho viens no labākajiem variantiem, jo php pats par sevi ir kā templeišu valoda. Link to comment Share on other sites More sharing options...
andrisp Posted November 21, 2006 Author Report Share Posted November 21, 2006 (edited) v3rb0, ja pareizi tevi saprotu, tad mans otrais vairants ir tāds, kā tu saki. Šis variants man patīk, bet kā jau teicu - ja kādam templeitam vajadzētu nedaudz pamainīt headeri, tad būtu vai nu jāpiemēslo header tpl bloks ar papildus php kodu (kas tur galīgi neiederētos), vai arī jāveido jauns papildus header tpl bloks speciāli vienam templeitam. Un ja šādi templeiti paliktu vairāk, kam vajadzētu specializētus header tpl blokus, tad atkal nevajadzīgi dublētos html kods. Enīvei, laikam būs jāpaliek pie šīs metodes un jāmeklē zelta vidusceļš starp php kodu likšanu templeitu failos un templeitu failu dublēšanu. Edited November 21, 2006 by andrisp Link to comment Share on other sites More sharing options...
hmnc Posted November 21, 2006 Report Share Posted November 21, 2006 miljons includes neietekmē performanci? Link to comment Share on other sites More sharing options...
andrisp Posted November 21, 2006 Author Report Share Posted November 21, 2006 (edited) Par to gan nemāku neko teikt. Bet domāju, ka ātrāk būtu par tādu templeitu sistēmu izmantošanu, kas pārsē templeites un aizvieto vērtības. Edited November 21, 2006 by andrisp Link to comment Share on other sites More sharing options...
Delfins Posted November 21, 2006 Report Share Posted November 21, 2006 a kurš taisās aizvietot? <td><?php print $left; ?></td><td><?php print $center; ?></td><td><?php print $right; ?></td> Link to comment Share on other sites More sharing options...
v3rb0 Posted November 21, 2006 Report Share Posted November 21, 2006 var jau beigās uzrakstīt scriptu kas include('header.php') aizstāj ar header.php saturu un noliek rezultātu 'sagatavoto' templeitu folderī. kad vēlāk kaut ko pielabo iekš header.php, tad ar roku palaid scriptu pa jaunam, lai updeito headerus visos failos. Link to comment Share on other sites More sharing options...
Kaitnieks Posted November 21, 2006 Report Share Posted November 21, 2006 Nelieliem projektiem (Web sistēmām, ne lapām, lapas mēs maucam uz Constructor, kā zini) esmu atradis šādu variantu par vislabāko esam: Izpildes modulis: //moduļa obligātā inicializācija ar headera includošana un konfigurācijas vērtību uzstādīšanu <? require('inc/head.php'); $title = 'Lapas virsraksts, piemēram'; ?> <? //mans php kods - viss izvadītais tiks savākts mainīgajā $content echo $_POST['whatever']; ?> //modulja finalizācija <? require('inc/foot.php'); ?> Inicializaacijaa tiek kešots outputs, finalziācijā outputs tiek savākts un izsaukts kaut kas līdzīgs šim: include('templates/' . $pgtemplate); Templeits izskatās apmēram tāds: <html> <head> <link rel="stylesheet" type="text/css" href="style.css" /> <meta http-equiv="content-type" content="text/html; čarset=utf-8" /> <title>MANA SISTEMA - <?= $title ?></title> </head> <body> <div id="content"> <?= $content ?> </div> </body> </html> Šāda freimworka neertība ir tāda, ka visos moduļos jātaisa inicializācija un finalizācija, toties gan vienu gan otru var pamainīt, nemainot moduļus. Tādām vērtībām kā $title, $content, $pgtemplate pie inicializācijas uzstādam defaultās vērtības, ar iespēju modulim tās kustomizēt. Un vēl, moduļiem šādā veidā var atstāt failu nosaukumus bez modrewraitiem, piemēram, klienti.php, pievienoklientu.php u.t.t. Templeiti netiek parsēti, tos izpilda php tieši, tātad ātri. Esmu ilgi domājis, izmēģinājis visu ko un bakstījies un manuprāt labāks templeitu sistēmas php nav. Link to comment Share on other sites More sharing options...
john.brown Posted November 21, 2006 Report Share Posted November 21, 2006 Lietojot mvc paternu un php5 par labu un ērtu esmu atradis šitādu template engine: http://www.avtox.ru/templus/ Tur gan doķi švaki, un krieviski, tak lietošana bezgala primitīva, bet iespējas diezgan plašas... Link to comment Share on other sites More sharing options...
andrisp Posted January 8, 2007 Author Report Share Posted January 8, 2007 Ja nu kādam interesē, tad lūk kur ir aprakstīta manuprāt veiksmīga template sistēma - http://www.massassi.com/php/articles/template_engines/ . PS. Vispār tā ir diezgan līdzīga Kaitnieks aprakstītajai sistēmai. Link to comment Share on other sites More sharing options...
KAC Posted January 8, 2007 Report Share Posted January 8, 2007 katrs teimpleitus realizee "peec garshas" es agraak lietoju templeitus ar mainiigo parseeshanu, bet sapratu, ka tas ir dubultdarbs, seviskji ja ir daudz mainiigo. taapeec tagad izmantoju liidziigu Kaitnieka variantam Link to comment Share on other sites More sharing options...
Recommended Posts