yeahz Posted February 19, 2010 Report Share Posted February 19, 2010 Papētīju phpbb templates, un sapratu, ka es arī tādā stilā gribu taisīt, lūk piemērs: <!-- BEGIN bool --> <!-- IF bool.FIELD_LENGTH eq 1 --> <!-- BEGIN options --><input type="radio" class="radio" name="{bool.FIELD_IDENT}" value="{bool.options.OPTION_ID}"{bool.options.CHECKED} /><span class="genmed">{bool.options.VALUE}</span> <!-- END options --> <!-- ELSE --> <input type="checkbox" class="radio" name="{bool.FIELD_IDENT}" value="1"<!-- IF bool.FIELD_VALUE eq 1 --> checked="checked"<!-- ENDIF --> /> <!-- ENDIF --> <!-- END bool --> Pats ar googles palīdzību esmu ticis tik tālu: function template_output($page = 'index') { global $INFO; include("$INFO[switch]/$page.php"); $template = file_get_contents("template/header.html"); $template .= file_get_contents("template/$page.html"); $template .= file_get_contents("template/footer.html"); $search = array( '|{TITLE}|', '|{ERRORS}|', '|{SUCCESSFULLY}|' ); $replace = array( 'kkaads title', $errors = isset($errors)?$errors:'', $successfully = isset($successfully)?$successfully:'' ); $output = preg_replace($search, $replace, $template); echo $output; } <h2>Ielogošanās</h2> <div id="login"> <form action="" method="post"> {ERRORS}{SUCCESSFULLY} <table> <tr><td><p>Lietotājvārds</p></td><td><input class="medium" type="text" name="username" /></td></tr> <tr><td><p>Parole</p></td><td><input class="medium" type="password" name="password" /></td></tr> <tr><td colspan="2" align="right"><input type="submit" value="Ielogoties" /></td></tr> </table> </form> </div> Ar konkrētām lietām, kā {ERRORS} esmu ticis galā, bet kā lai veido to konstrukciju ar IF'iem? Būtu ļoti jauku, ja kāds izskaidrotu. + Varbūt jums ir kādi citi varianti, kā veidot šādas lietas. Ja ir, padalies. :) Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 19, 2010 Report Share Posted February 19, 2010 Jeega to pasham rakstiit nav - izmanto Smarty. Un vispaar - es iesaku taadas lietas vispaar neizmantot. Pasaki luudzu kaadi tev buus ieguvumi ja izgudrosi savu (vai izmantosi gatavu) template language? Reku tas augshas kods normala izskata (izgriezu nedaudz funkcionalitati, bet tas pats vien ir): <? if($field_length == 1) : ?> <input type="radio" class="radio" name="name_var_rakstit_pats" value="<?= $value ?>" /> <span class="genmed"><? echo $kautkas; ?></span> <? else : ?> <input type="checkbox" class="radio" name="name_var_rakstit_pats" value="1" /> <? endif; ?> Quote Link to comment Share on other sites More sharing options...
yeahz Posted February 19, 2010 Author Report Share Posted February 19, 2010 Laikam jau nav īsti jēgas, bet viegli labojams un pārskatāms template. Man vajadzēja tikai to if konstrukciju, vairāk neko (nu tā vismaz pagaidām izskatās), bet paldies par to pašu. Quote Link to comment Share on other sites More sharing options...
marcis Posted February 19, 2010 Report Share Posted February 19, 2010 PHP pats par sevi ir template engine :) Bet ja nu tik ļoti gribas, tad viens no labākajiem/vienkāršākajiem variantiem varētu būt CodeIgniter template klase. Lai gan vienīgais, kas pa lielam mainās ir <?=$var;?> uz {var} MVC arī zināmā mērā varētu saukt par template sistēmu, jo atkarībā no apstākļiem tiek ielādēts konkrēts view's. Es te vienā ne uz MVC balstītā projektā izdomāju ieviest vismaz CV (bez M) un tad tika uzrakstīta elementāra funkcija (arī balstīta uz tā paša CI loģikas). function view($view, $vars = array(), $echo = true){ if(!empty($vars)) extract($vars); // mainīgie extraktojas tikai funkcijas ietvaros ob_start(); include($view.'.php'); $html = ob_get_contents(); ob_end_clean(); if($echo) echo $html; return $html; } Quote Link to comment Share on other sites More sharing options...
2easy Posted February 19, 2010 Report Share Posted February 19, 2010 rakstīt if/else iekš html komentāriem... tiešām labs piemērs, kā nevajag darīt :D Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 19, 2010 Report Share Posted February 19, 2010 2easy, ne tikai rakstīt if / else, bet pat izdomāt jaunu sintaksi pašsaprotamām lietām: "if a == b" vietā "if a eq b". Vēl tikai pietrūkst, lai sāktu templeitus rakstīt izmantojot ASM sintaksi Quote Link to comment Share on other sites More sharing options...
2easy Posted February 19, 2010 Report Share Posted February 19, 2010 (edited) njaa tā ir kā valoda valodā tā kā kkādas matrjoškas. bet ja cilvēkiem tā patīk, kāpēc gan ne? :D btw man arī tas "eq" kkā ar asmu asociējās, lai gan pats asm nemaz neprotu. tikai kodu esmu paskatījies (arī domājot par kodēšanas stilu :D) oi un perlā tač arī tas eq bija ;) Edited February 19, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
foxsk8 Posted February 19, 2010 Report Share Posted February 19, 2010 Tā, še re kur template engine, kurš līdzīgs phpbb template bāzei: http://quickskin.worxware.com/ Vari būvēt tālāk visu, ko tev vajag. Quote Link to comment Share on other sites More sharing options...
codez Posted February 19, 2010 Report Share Posted February 19, 2010 Tikai un vienīgi izmantot pašu PHP kā template engini, pārējais viss, ko esmu redzējis, ir suņa murgi. Quote Link to comment Share on other sites More sharing options...
renathy Posted February 20, 2010 Report Share Posted February 20, 2010 Man tad gribētos jautāt - ja template sistēmas ir tāds murgs, kāpēc tik daudzi tos izmanto. Kāpēc, piemēram, PHPBB radījis šādu savu template? Un man viņu template pagaidām liekas diezgan parocīga. Es neaizstāvu neko, tikai gribu zināt... Quote Link to comment Share on other sites More sharing options...
2easy Posted February 20, 2010 Report Share Posted February 20, 2010 kādam vnm liksies ērts kkas, kas citam liksies galīgi neērts (vai suņa murgi). pieņemsim, ka 10 miljoniem developeru patīk templates, un viņi raksta savos blogos, cik tas ir forši. bet citiem 50 miljoniem developeru pietiek ar php replace funkcijām un nekas nav pretī arī, ka htmlā ir <?php if (...) ?> vēl citi vsp nelieto templates, bet raksta htmlu tāpat iekš echo 'daudzas rindas ar html tagiem' un/vai ģenerē html ar funkcijām (piemēram crazy 2easy :D:D:D) Quote Link to comment Share on other sites More sharing options...
briedis Posted February 20, 2010 Report Share Posted February 20, 2010 Man tad gribētos jautāt - ja template sistēmas ir tāds murgs, kāpēc tik daudzi tos izmanto. Kāpēc, piemēram, PHPBB radījis šādu savu template? Un man viņu template pagaidām liekas diezgan parocīga. Es neaizstāvu neko, tikai gribu zināt... Nez, iespējams, ka viņi padomāja arī par tiem, kas paši vēlētos mainīt templeitu saturu. Un kaut kādam cilvēkam, kas nerubī php, šis tē izskatītos tīrāk, skaidrāk: html html html {user_name} html html html nekā html html html <?php echo $user_name;} html html html Quote Link to comment Share on other sites More sharing options...
codez Posted February 20, 2010 Report Share Posted February 20, 2010 Man tad gribētos jautāt - ja template sistēmas ir tāds murgs, kāpēc tik daudzi tos izmanto. Es nesaku, ka pati template ideja ir nepareiza. Bet tas, ka PHP pati ir template valoda un nav vajadzīgs template valodā būvēt iekšā vēlvienu valodu. Kāpēc, piemēram, PHPBB radījis šādu savu template? Un man viņu template pagaidām liekas diezgan parocīga. Kam negadās realizēt savas stulbās iedomas? Viņu template nav nearko parocīgāka, kā uz PHP balstīta, bet daudz lēnāka gan. Kāpēc es esmu tik kritisks? Tāpēc, lai jaunie, kas mācās, nesāk jau pašā sākumā iet pa nepareiziem ceļiem. Quote Link to comment Share on other sites More sharing options...
2easy Posted February 20, 2010 Report Share Posted February 20, 2010 (edited) solis pretī muļķiem dažreiz ir arī solis pretī muļķīgam risinājumam EDIT: es ar to gribēju teikt tikai to, ka Jūs visi, kas protat php, labāk izmantojiet php kodu ar <?= $user_name ?> nevis kkādu template valodu ar {user_name}. bet ja ļoti gribās htmlā repleisot {user_name}, tad vnk strtr(file_get_contents('lapa.tpl'), array('{user_name}' => '2easy')) savādāk codez pareizi teica, ka template engini ir lēnāki, jo ir apkarināti vēl ar 100 citām fīčām, kuras jūs nemaz nelietojat. ja vajag tikai kko repleisot, to var izdarīt arī ar php. ja templeitā vajag ifus vai ciklus, tad vēlreiz padomājiet, vai tiešām Jums tos vajag likt iekš template Edited February 20, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted February 20, 2010 Report Share Posted February 20, 2010 (edited) html html html {user_name} html html html nekā html html html <?php echo $user_name;} html html html Un tad kad tekstaa Reali vajadzees {user_name} tad tas nabga lietootajs, skjers galvu {vai nejaushi trapiisies kaada skritiiba ... tad vispar var meklet un kjert buugus lidz bezgaliibai, teiksim izveidojiet standarta Templatu (HTML) kas aprakstiis dotas Templatu Engina Prieksrociibas ( neizmantojot Special entiites etc viltiibinjas) ... Vismaz otrais varjants Skaidri un gaishi noraada Kura vieta ir Inkludots konkretais teksts ( bilde etc) Ja maak smuki nodaliit PHP pamat kodu no pasha HTML tad nelieli PHP iestarpinajumi ( echo ... ) nepavisam nepgruutina HTML dizaina nomainju etc .. Un Userim paskaidrot kas ir {user_name} un kas ir <?php echo $user_name; ?> ir vienlidiz sarezgiiti/viegli pedejais varjant Preciizak norda ka tas ir Kods, nevis vienkarsh teksts ... P.S. nu ja vel Jau ir Relegiskas dabas jautaajums ;) Edited February 20, 2010 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.