Jump to content
php.lv forumi

par templeitiem


ezs

Recommended Posts

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

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

ā) 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

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

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

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

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

<?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

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

Ī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

×
×
  • Create New...