Jump to content
php.lv forumi

Template engine


Robis

Recommended Posts

Es pats izmantoju pure-php-template.. gandriiz, jo vienīgais, kas ir vajadzīgs parsēt, ir include un block tagi. Nosacījumus un ciklus lai dara PHP, pats viņš tos ļoti labi prot:

<?php if($kaut_kas == 1):?>
iz vadam kaut ko
<?php endif?>

tā pat cikli:

<?php while($is_something):?>
tjip kaut kaut kādas tabulas rina, piem.
<?php endwhile?>

vienīgais, kā jau teicu, ir tikai inklud tagi, kas failā (lasīt templeitā) iekļau citu failu:

<%include("designs/first_design")%>

un block tagi

<%block name="row"%>
bloka saturs
<%blockend%>

 

līdz ar to parserim ir jāatrod 3 tagi: include, block un blockend. Sākumā atrodam visus include tagus, iekļaujaum visu, ko vajag, tad meklējam block tagus, saglabājam tos kaut kādā masīvā globālā (nu tā, lai pie viņiem pēc "name" var piekļūt) un pēc tam pašu templeiti izlaižam cauri eval. Nu apmērām tā! Kiš miš jau sanāk - ta kaut kadi <%include ..%> tagi, ta block tādi paši, tad php ar html sajaukumā - bet strādā 6 līdz 7 reizes ātrāk nekā kaut kāds smags templeitu endžīnis!

Link to comment
Share on other sites

andrisp: templeita ideja ir atdalīt datus no noformējuma. html tagi drīzāk ir noformējums nevis dati. ja sataisi scriptā lielu html blāķi, kuru echo starp body tagiem, tad nevarēsi dabūt no scripta tikai datus ko izmantot lai taisīt printer friendly versiju, pdf, exceli, csv utt.

Link to comment
Share on other sites

To es saprotu.

Mans piemērs bija laikam pārāk triviāls.

parasti man ir tā ka template failā tiek inkludotas arī citas lietas, un tas $page_cnt parasti satur tikai kautkādus <p><h><a><div> tagus un varbūt kādu tabuliņu.

 

Reāli tad template fails izskatās, piemēram, šāds:

<html>
<head>
<title><?php echo $page_name ?></title>
</head>
<body>
<div><?php require('templ/head.php'); ?></div>
<div><?php require('templ/menu.php'); ?></div>
<div><?php echo $page_cnt; ?></div>
<div><?php require('templ/foot.php'); ?></div>
</body>
</html>

 

Arī šis, protams, ir triviāls piemērs (pseido-templeits), bet apmēram tā es taisu. Zinu, ka tas nav labākais veids (bet nezinu kā ir labāk).

 

Īstenībā es nemaz nevaru iedomāties kā var panākt pilnīgu html atdali no php koda.

Link to comment
Share on other sites

a dari šitā

lapa.php

<?php
$dati  = array();
$dati['title'] = 'manas lapas title';
$dati['texts'] = 'texts';
$dati['kaut_kads_saraksts'] = array(1,2,3,4,5,6,7..);

require('template.php');
?>

un

template.php

<html>
 <head><title><?php echo $dati['title'];?></title></head>
 <body>
<p><?php echo $dati['texts'];?></p>
<?php foreach($dati['kaut_kads_saraksts'] as $item) : ?>
  <?php echo $item?><br />
<?php endforeach?>
 </body>
</html>

Link to comment
Share on other sites

×
×
  • Create New...