Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Smarty i ugneždeni šabloni

[es] :: PHP :: Smarty template engine :: Smarty i ugneždeni šabloni

[ Pregleda: 4314 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

WEXY
Beograd

Član broj: 33948
Poruke: 163
*.dial.InfoSky.Net

ICQ: 166638118


+7 Profil

icon Smarty i ugneždeni šabloni11.09.2004. u 12:31 - pre 224 meseci
Vidim da je o ovome bilo reči u jednoj od TOP tema, međutim moj problem se malo razlikuje i unapred se izvinjavam ako ovo predstavlja ponavljanje iste teme.

Početnik sam sa Smarty-jem, sinoć sam ga skinuo sa neta i instalirao, igrao se tu i tamo, skontao par stvari i rešio da krenem dalje. Pre izvesnog vremena sam počeo da pravim neki jednostavan blogger i to je sve išlo lepo međutim nedostajali su šabloni i postalo je previše komplikovano mešati html i php u istom fajlu. Nađoh Smarty i sreći nikad kraja :)

Problem je sledeći, imam index.tpl koji je podeljen na 4 dela (header, content, sidebar, footer). U index.tpl se nalazi dizajn za sve osim content-a. Content bi trebao da bude odgovarajuća stranica u zavisnosti od upita korisnika i da ima svoj zaseban template (post.tpl, modify.tpl, delete.tpl, etc..).

Možda ja grešim, ali u index.tpl ne mogu da napišem na mestima gde mi trebaju header, footer i sidebar {include....} pošto su neke stvari i u tim šablonima generisane od php skripte index.php.

Source code od index.php (uprošćen):

Code:

<?php
    ...
    ...
    assign('naslov', 'NEKI NASLOV');    // Ovo ide u header deo (index.tpl)
    assign('Link1', 'Index');                // Ovo ide u sidebar deo (index.tpl)
    ...
    ...
    // E ovde treba da dodje nesto sto bi ukljucilo i content.tpl (odgovarajući)
    // recimo include('content.php'); koji koristi content.tpl mada sumnjam da bi
    // ovako radilo
    ...
    ...
    assign('credits', 'Pera mika laza');  // Ovo ide u footer deo (index.tpl)
    $smarty->display('index.tpl');
?>


Kako se ovo rešava?
Hvala unapred na odgovoru.
"Nutri-matik je konstruisala i izradila Sirijuska kibernetska korporacija čije odeljenje za žalbe sada prekriva sve glavne kopnene mase prve tri planete zvezde Tau iz sistema Sirijusa"
 
Odgovor na temu

WEXY
Beograd

Član broj: 33948
Poruke: 163
*.dial.InfoSky.Net

ICQ: 166638118


+7 Profil

icon Re: Smarty i ugneždeni šabloni11.09.2004. u 14:47 - pre 224 meseci
Čitanje Smarty manual-a se isplati. FETCH metoda radi upravo ono što mi treba. Sad ću napisati kako sam to primenio, može nekome da zatreba iako nisam siguran da je ovo baš adekvatan način i da se to tako radi.

Fajlovi:
index.php, glavna skripta, radi uglavnom ceo posao
index.tpl, globalni kostur za sve stranice sadrži header, footer, sidebar
content.tpl, kostur za content deo index.tpl-a

Stari kod:

Code:

<?php
    ...
    ...
    assign('naslov', 'NEKI NASLOV');    // Ovo ide u header deo (index.tpl)
    assign('Link1', 'Index');                // Ovo ide u sidebar deo (index.tpl)
    ...
    ...
    // E ovde treba da dodje nesto sto bi ukljucilo i content.tpl (odgovarajući)
    // recimo include('content.php'); koji koristi content.tpl mada sumnjam da bi
    // ovako radilo
    ...
    ...
    assign('credits', 'Pera mika laza');  // Ovo ide u footer deo (index.tpl)
    $smarty->display('index.tpl');
?>


Rešenje, novi kod:

Code:

<?php
    ...
    ...
    assign('naslov', 'NEKI NASLOV');    // Ovo ide u header deo (index.tpl)
    assign('Link1', 'Index');                // Ovo ide u sidebar deo (index.tpl)
    ...
    ...
        assign('naslov_contenta', 'Vesti');
        assign('text_contenta', $vesti);
 
        $content = $smarty->fetch('content.tpl');
        assign('content', $content);

        // fetch radi nešto slično kao display, samo sto ne ispisuje stranicu već
        // to stavlja u promenljivu u ovom slucaju $content, posle preko assign
        // tu istu promeljivu sa HTML kodom dodelimo polju {$content} u index.tpl
    ...
    ...
    assign('credits', 'Pera mika laza');  // Ovo ide u footer deo (index.tpl)
    $smarty->display('index.tpl');
?>


Sa ovim jedini problem, koji i nije veliki, je taj što se u content.tpl prosleđuju i sve dodeljeno sa assign, al pošto tamo nema odgovarajućih polja to neće ni biti prikazano. Jedino treba da se pazi da se ne dupliraju polja u index.tpl i u ostalim template fajlovima koje se ugeždavaju u index.tpl.

Verovatno postoji bolji način kojim bi se ovo eliminisalo, tako da ako neko zna neka postuje.
"Nutri-matik je konstruisala i izradila Sirijuska kibernetska korporacija čije odeljenje za žalbe sada prekriva sve glavne kopnene mase prve tri planete zvezde Tau iz sistema Sirijusa"
 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
*.ppp-01.sa.lol.ba.



Profil

icon Re: Smarty i ugneždeni šabloni12.09.2004. u 09:23 - pre 223 meseci
Da fetch ti moze mnogo pomoci da posaljes u smarty "string" koji ti treba a logiku rjesis programabilno u php sto je mislim dosta dobro.

Nekada umjesto da fetchujes mozes poslati varijablu u template sa imenom fajla koji zelis da se include-uje. Ako ne razumijes reci da ti dam primjer.
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.27.eunet.yu



+1 Profil

icon Re: Smarty i ugneždeni šabloni12.09.2004. u 22:07 - pre 223 meseci
Ne znam zasto tako radis osim ako ti bas to treba. Kao i u PHP mozes da includeujes...

ako imas header.tpl, footer.tpl i index.tpl
ti mozes u index.tpl da napises

{include file="header.tpl"}

... tvoj sadrzaj ...

{include file="footer.tpl"}

onda u tvom index.php imas samo
$smarty->display('index.tpl') i bas te briga ste je u index.tpl...

Posto su ta dva dela uglavnom fiskni, bolje je da ih napravis kao poseban tpl pa ih include-ujes, nego da stalno sa $smarty->assign (...) saljes templete-u vrednosti, brze je ovako i jede manje resursa.

Fetch se uglavnom koristi kada hoces da nesto "pametno" (nesto drugo sto nije display) radis sa sablonom, recimo ako ima neke sablone koji se salju na mail, mozes da ih napravis kao sto pravis i sve ostale, prosledis mu varijable... a onda ga fetch-ujes pa to sto si "pokupio" posaljes na mail sa mail() funkcijom...
Goran Pilipović fka bluesman
 
Odgovor na temu

WEXY
Beograd

Član broj: 33948
Poruke: 163
*.dial.InfoSky.Net

ICQ: 166638118


+7 Profil

icon Re: Smarty i ugneždeni šabloni13.09.2004. u 18:23 - pre 223 meseci
Mislim da se nismo baš razumeli do kraja, imam index.tpl koji sadrži sve sem content dela koji bi trebao da ima svoj zaseban template (post.tpl, edit.tpl, delete.tpl, etc...). Iz tog razloga moram sa fetch da dobijem HTML od tog template-a koji ubacujem u index.tpl i da ga prosledim posle kao promenljivu sa assign u index.tpl.

To sad nije ni bitno, problem sam rešio, hvala na pomoći u svakom slučaju.
"Nutri-matik je konstruisala i izradila Sirijuska kibernetska korporacija čije odeljenje za žalbe sada prekriva sve glavne kopnene mase prve tri planete zvezde Tau iz sistema Sirijusa"
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.74.EUnet.yu



+1 Profil

icon Re: Smarty i ugneždeni šabloni14.09.2004. u 00:37 - pre 223 meseci
To je to, samo na drugi nacin, a assign celog template da bih ga prikazao ima "ruzne" posledice.

mozes
index.php:

$smarty->assign ('do_what', 'edit');


index.tpl:

{include file="header.tpl"}

{if $do_what == 'edit'}
{include file='edit.tpl'}
{if $do_what == 'delete'}
{include file='delete.tpl'}
{else}
{include file='default.tpl'}
{/if}

{include file="footer.tpl"}

Goran Pilipović fka bluesman
 
Odgovor na temu

Dr NIK
Novakovic Marko
BG

Član broj: 19744
Poruke: 132
*.mobtel.com

Sajt: www.mnovakovic.info


+1 Profil

icon Re: Smarty i ugneždeni šabloni07.10.2004. u 22:12 - pre 223 meseci
Kako si to resio, reci odma!!!!!!
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Smarty i ugneždeni šabloni23.11.2004. u 21:17 - pre 221 meseci
Citat:
bluesman:
Code:
{include file="header.tpl"}

{if $do_what == 'edit'}
     {include file='edit.tpl'}
{if $do_what == 'delete'}
     {include file='delete.tpl'}
{else}
     {include file='default.tpl'}
{/if}

{include file="footer.tpl"}

Radi li ovo posao?
Code:
{include file="header.tpl"}
{assign var="do_what" value=$do_what|default:"default"}
{include file="$do_what.tpl"}

{include file="footer.tpl"}

 
Odgovor na temu

[es] :: PHP :: Smarty template engine :: Smarty i ugneždeni šabloni

[ Pregleda: 4314 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.