Jump to content
php.lv forumi

Par templeišu sistēmām


andrisp

Recommended Posts

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

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 by Delfins
Link to comment
Share on other sites

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

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

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 by andrisp
Link to comment
Share on other sites

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

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

  • 1 month later...

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

×
×
  • Create New...