Pages 1
You must login or register to post a reply
- Registered: 2010-04-11
- Posts: 236
Topic: Smarty .tpl
Sveiki asai,
Pradėjau domėtis "Smarty", iškilo keletas klausimų todėl prašau jūsų nuomonės.
Tarkime, kad turime struktūrą .tpl:
main.tpl
header.tpl
login.tpl
profile.tpl
footer.tpl
Suprantama, kad viską reiktų "sukišti" į main.tpl, t.y. kad atvaizduotų header'į, login'ą/profilį, footer'į. Dabar kyla klausimas man su tuo arba arba (/), kaip paduoti smarčiui ką reikia atvaizduoti, login.tpl ar profile.tpl.
Aš mastau daryti taip, pirmiausia pačiame php kode priskirti kažkokį var, pvz:
....
$var logged = FALSE;
....
$this->tpl->assign('logged', $this->logged);
$this->tpl->display('main.tpl');
....
Po to main.tpl failiuke:
{if ($logged== FALSE) }
{include file=”login.tpl”}
{else}
{include file=”profile.tpl”}
Na, o po to kintamuosius jau automatiškai paduodi į .tpl pagal situaciją atvaizduojant kažką.
Ar į tą pusę mastau?
Jeigu ne būtų malonu jeigu pataisytumėt, vis gi, su Smarty dar tik antra diena susipažindinėju. :)
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Smarty .tpl
Viskas į tą pusę. Galima dar ir taip: su PHP nuspręsti ką krauti, o smarty paduoti tik šablono pavadinimą. Skirtumas tas, kur tu nori turėti daugiau veikimo logikos - šablone ar PHP. Ilaginiui tikriausiai norėsi kuo daugiau logikos valdyti iš PHP, o smarty palikti tik neesminius klausimus.
- Registered: 2010-04-11
- Posts: 236
Re: Smarty .tpl
Ačiū Minde už komentarą, patarimus. :)
Na, bet kokiu atveju, kaip ir pats minėjai logiką reiktų palikti būtent PHP. :)
- Registered: 2006-12-04
- Posts: 309
Re: Smarty .tpl
aš visvien nesuprantu to smarty:
{if ($logged== FALSE) }...
P.S smarty turėjo būt išjungtas kartu su register_globals...
Kiek maigyklių sudėvėjai ?
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Smarty .tpl
md5 wrote:aš visvien nesuprantu to smarty:
{if ($logged== FALSE) }...
P.S smarty turėjo būt išjungtas kartu su register_globals...
Ta prasme tu nori pasakyt, kad čia globalus kintamasis? Aš taip nemanau..
- Registered: 2006-12-04
- Posts: 309
Re: Smarty .tpl
kitaip paklausiu, kas yra smarty, be registry pattern;o ir kodėl visi taip myli?
esmė, jog tai eilinis tempteitas;)
Kiek maigyklių sudėvėjai ?
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Smarty .tpl
md5 wrote:kitaip paklausiu, kas yra smarty, be registry pattern;o ir kodėl visi taip myli?
esmė, jog tai eilinis tempteitas;)
čia kitas klausimas. Kaip tu ir sakei - eilinis template engine. Bet kuriuo atveju jis padaro daugiau negu vien tik <?php echo $variable; ?>, tą daugiau programuotis pačiam niekas nenori, todėl ir naudoja tokius varikliukus, o smarty tiesiog yra labiausiai išpopuliarintas.
- Registered: 2010-04-11
- Posts: 236
Re: Smarty .tpl
mhm.
Dar vienas klausimas. :)
Nusipiešiau dizainą, iš pradžių jį susikodavau .css .html, smarty .tpl interpretuoja, kaip .html tik + visokių pribumbasų, tačiau tarkim visą tą šabloną iš .html nukopijavus į tą layout.tpl ir per php atvaizdavus:
$this->tpl->display(layout.tpl');
Visą dizainą visiškai iškraipo.
Pačiame html'e be div'ų ir css link'ų daugiau nieko nėra.
Gal yra galinčių užvest ant kelio, ką ne taip darau?
O gal stiliams visai kitaip daroma, smarty's naudojamas tik visokiom lentelėm ir panašiai? Bet nebūtų template engine'as jeigu tik lentutėm visokiom, o ne visam layout'ui..
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Warning: count(): Parameter must be an array or an object that implements Countable in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
814
- From: Klaipėda
- Registered: 2006-10-31
- Posts: 432
Re: Smarty .tpl
pasitikrink ar tikrai css stiliai ikeliami, kazkaip tiketina kad css neuzsikrauna tau, nes smarty niekaip negali paveikti tavo html dizaino.
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Smarty .tpl
Smarty gali interpretuoti "{" ir "}", kas dažniausiai būna embedded css arba js. O šiaip tai reikia žiūrėti source ir spręsti, kodėl neveikia stiliai. Antra dažniausiai problema - neteisingas kelias iki css failo.
- Registered: 2010-04-11
- Posts: 236
Re: Smarty .tpl
Ačiū už atsakymus.
Na dairausi po netą, jau mačiau įvairiausių variantų, kad ir .css formate: .tpl :D
Tai, kad bajeris tame, jog iš html į .tpl konvertavus ir per smarty atvaizdavus užkrauna visus paveiksliukus, tiesiog juos iškraipo, o tą patį .tpl konvertavus vėl į .html vėl viską tvarkingai rodo.. :D
Turbūt imsiu ir perkoduosiu..
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- Registered: 2011-05-23
- Posts: 4
Re: Smarty .tpl
Pats naudoju ir domiuosi Smarty, tai ką galiu pridurti temos autoriui - visiškai klaidingas smarty panaudojimo supratimas. Jei būtum paskaitęs smarty tutorialus ar examples pavartęs nuosekliau, ten radęs būtum jog Smarty idėja - atskirti logiką nuo prezentacijos.
{if ($logged== FALSE) }
{include file=”login.tpl”}
{else}
{include file=”profile.tpl”}
Taip, tai veikia, tačiau mano supratimu tai yra blogas smarty panaudojimo pavyzdys ir tokiu keliu mąstant, tavo tpl puslapis taps panašus į PHP, su pilna if ir else. Tokias sąlygas reikia naudoti PHP faile ir ten daryti išvedimus. Nieko baisaus, pradžioje ir aš tokias klaidas dariau (įprastas mastymas PHP programuotojui), tačiau kiekvieną kartą atsidarius .tpl failą reikia prisiminti - čia neturi būti logikos, o tik atvaizdavimas. Tam, kad nesakytum jog tuščiažodžiauju duodu pavyzdį tavo atvejui:
<?php
# Plius pavyzdukas kintamas title panaudojimas
if( user tikrinimo sąlyga ) { // aš pvz. čia tikrinu user access per kokią nors klasę ar sesijas
$smarty->assign('title', 'Welcome', true); // true = nocache.
$smarty->display('index.tpl');
} else { // useris neprisijungęs, todėl parenkam kitą template -> login.tpl
$smarty->assign('title', 'Please Login', true);
$smarty->display('login.tpl', true);
}
?>
Na o .tpl failiukuose viskas paprasta. Na ir nepamirštam - jokios logikos dėl title:
<title>{$title}</title>
Blogo pavyzdžio atveju rašytum:
<title>{if $smarty.template == 'login.tpl'}Please Login{else}Welcome{/if}</title>
PHP, MySQLi, Smarty, jQuery, Ajax, Eclipse
Pages 1
You must login or register to post a reply