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

pomoc oko dizajna za SMarty-jem

[es] :: PHP :: Smarty template engine :: pomoc oko dizajna za SMarty-jem
(TOP topic, by Aleksandar Marković)
Strane: 1 2

[ Pregleda: 21242 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ana
Ana Balevic
LIACS & ACE
Amsterdam

Član broj: 5669
Poruke: 170
*.yubc.net

Jabber: ana@elitesecurity.org
Sajt: tesla.rcub.bg.ac.rs/~tauc..


Profil

icon pomoc oko dizajna za SMarty-jem02.05.2003. u 22:27 - pre 254 meseci
Pozdrav svima!
Tek sam se susrela sa Smarty-jem ,pa bi mi trebalo malo pomoci.
Interesuje me sta sve od fajlova treba napraviti za ispis jedne od stranica.
Htela bih da imam unificirani dizajn sajta za header,footer i menije,
odnosno da menjam samo sadrzaj centralnog dela strane - koji dobijam
ili kao obican tekst,ili upitom u bazu.

Da li je ovo dobra logika sta se gde radi,ili ipak treba drugacije:

default.php
new smarty
display('default.tpl')
default.tpl
include (header,menus,footer)
ispise contenet glavne strane
ima link na 'SPISAK PREDAVANJA'

predavanja.php
napravim upit u bazu i podatke za ispis prosledim u predavanja.tpl
new smarty
display('predavanja.tpl')
predavanja.tpl
include (header,menus,footer)
ispise podatke dobijene iz predavanja.php

p.s. Da li mozda negde ima da se skine source za bilo kakav sajt koji je ceo uradjen
sa php-om,smarty-jem,css-om i mysql bazom. Jedan kompletan primer bi mi bas dobro dosao :)
Ana
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem03.05.2003. u 02:16 - pre 254 meseci
Pa to je otprilike to, samo ne zaoravi da uradis assign za sve varijable koje prosledjujes u template. znaci (2 i 3 mozes da permutujes):

PHP:
1. settings
2. processing (upit iz baze i fetchovanje podatakaa)
3. $smarty = new smarty
4. smarty settings (ako neces default vrednosti) recimo:
$smarty->template_dir =..
$smarty->compile_dir =...
$smarty->config_dir =...
$smarty->cache_dir = ...

4. $smarty->assign
5. $smarty->display

TPL:
1. include i opciono assign ako ti treba...
2. prikaz podataka
... include... include... (koliko hoces puta i na kom hoces mestu)

To je neka logika... a sve ostalo ti pise u helpu (mada ako imas jos nekih nejasnoca - pokusacu da ti pomognem)
Goran Pilipović fka bluesman
 
Odgovor na temu

ana
Ana Balevic
LIACS & ACE
Amsterdam

Član broj: 5669
Poruke: 170
*.yubc.net

Jabber: ana@elitesecurity.org
Sajt: tesla.rcub.bg.ac.rs/~tauc..


Profil

icon Re: pomoc oko dizajna za SMarty-jem03.05.2003. u 23:31 - pre 254 meseci
tnx :)
Samo mi reci da li za svaku stranu treba praviti novu instancu smartija?
Kako bi izgledao kod za ispis neke tabele,ali da pratim broj reda sa nekom promenljivom koju takodje mogu da ispisem( nesto kao for petlja) .Evo za primer dela koda koji sam napisala u PHP-u,pa bih sada htela da tabelu $rezultat prenesem u template,a da ispis radim sa smartijem.

Code:

$rezultat = $kernel -> upit($query);                     
   if ($rezultat->brojRedova==0) {    echo " <BR> Nema podataka! ";   exit; }
   echo "<BR><BR> <H2>Aktuelne manifestacije su:</H2><BR>";
   echo "<table border = 1>";
 for($i = 1; $i <= $rezultat->brojRedova; $i++) {
   echo "<tr>";
   foreach($rezultat->tabela[$i] as $column){ echo "<td>" .$column . "</td>";  }
   echo "<td> <A HREF='InfoManifest.php?idM=$i' 
     TITLE='Podaci o Manifestaciji $i'>    Informacije o Manifestaciji $i </A></td></tr>"; 
 }
   echo "</table>"; 
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: pomoc oko dizajna za SMarty-jem04.05.2003. u 01:47 - pre 254 meseci
prvo komentar za prvi post, kao što reče bluesman, to je otprilike to. nema tu mnogo mudrosti.

mada, ponekad u svom frameWork-u volim da koristim i malo generalnije šablone. recimo, ako iz php-a prosledim promenjivu $page, onda mogu da uvek prikažem jedan šablon koji sadrži kostur svih stranica, i includujem() specifičnu stranicu da prikažem glavni sadržaj. nešto kao:


Code:

// u php-u
$page='proizvod.tpl'; // ovo je naravno promenjivo..
$smarty->display('main.tpl');

// u šablonu main.tpl
<table>
  <tr>
    <td colspan=2>{include file='header.tpl'}</td>
  </tr>
  <tr>
    <td width=30>{include file='menu.tpl'}</td>
    <td>{include file=$page}</td>
  </tr>
  <tr>
    <td colspan=2>{include file='footer.tpl'}</td>
  </tr>
</table>


e, za drugi post, prvo da moraš na svakoj stranici kreirati novu instancu Smarty klase, ali recimo ovako kako sam ja stavio, možeš napraviti jednu smarty() funkciju koju ćeš includovati u svaku stranicu. (a prosleđivaćeš joj dva parametra, $page i $vars)

dalje, to što ti praviš je očigledno prikaz podataka iz baze, a za to se najčešće koristi {foreach} u kombinaciji sa id poljima. evo primera kako to izgleda sa foreach. (pisano napamet bez testiranja, ali bi trebalo da radi)

Code:

// u php-u
$rezultat=$kernel->upit($query);
$table=$rezultat->tabela;

// u šablonu
<table bla=...>
  {foreach from=$table item=row}
    <tr>
      {foreach from=$row item=column}
        <td>{$column}</td>
      {/foreach}
        <td><a href="InfoManifest.php?idM={$row.id}">podaci o bla..</a></td>
    </tr>
  {/section}
</table>


ako baš insistiraš na for-like petlji, onda pogledaj {section}. nažalost, nisam ga skoro uopšte koristio (malo je nezgodnije -- probaj pa ćeš videti) pa ti ne mogu baš mnogo pomoći sa njim..
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem05.05.2003. u 00:12 - pre 254 meseci
pa nije bas {section} tako komplikovan :-))

Evo najprostije, ako imas niz "$errors" i hoces da prikazes greske, kod je jednostavan:
Code:

{section name=err loop=$errors}
    {$errors[err]}<br>
{/section}


Malo je mozda cudno sto moras da dajes imena sekcijama, ali odmah se naviknes, odnosno uvek mozes da das isto ime ako nemas "ugnjezdene" sekcije.

Moze i komplikovanije:
Code:

{section name=l loop=$affiliatePayments}
    <tr>
        <td>{$affiliatePayments[l].pay_timestamp|date_format:"%b %d %Y"} </td>
        <td width=80 align=right>$<em>{$affiliatePayments[l].pay_amount_total|number_format:2}</em><br></td>
    </tr>
{sectionelse}
    <tr>
        <td colspan=2>no record of any previous payments</td>
    </tr>
{/section}


Gde se recimo {sectionelse} prikazuje u slucaju da je $affiliatePayments prazan. Ima mnogo primena, ali ne bih sada da gusim sa tim. Na kraju, sve pise u help-u.
Goran Pilipović fka bluesman
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: pomoc oko dizajna za SMarty-jem05.05.2003. u 02:20 - pre 254 meseci
pa dobro, ako nije težak, što ne odradi ovaj primer što je želela da ispisuje redni broj (ne preko id polja iz baze ;)

i ja sam hteo preko {section} da joj pokažem (uz help ništa nije teško), ali nisam skontao kako da štampam loop varijablu pošto se ona ne referencira preko $nešto, pa onda {loop} ne pali jel tako očekuje funkciju..

btw, ajde priznaj realno, da li si, i ako jesi koliko puta (u odnosu na {foreach}) koristio {section}...
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem05.05.2003. u 17:55 - pre 254 meseci
Pa ja nisam ni citao pazljivo njen post jer sam mislio da si odgovorio :-)

Nista lakse od toga, a ima i nekoliko nacina:

nacin 1:
Code:

{section name=customer loop=$custid}
    {$smarty.section.customer.rownum} id: {$custid[customer]}<br>
{/section}

output:
Code:

1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br> 


ovo moze i drugacije (ovoga nema u help-u)
Code:

{section name=customer loop=$custid}
    {%customer.rownum%} id: {$custid[customer]}<br>
{/section}


output je isti.

nacin 2:
index varijabla, index_prev, index_next

nacin 3:
loop varijabla

+ imas i total varijablu, da prikaze ukupan broj podataka

Ja ne znam da li moze biti lakse od ovoga? Ti si bese pisao neki clanak o Smarty-ju, mogao si bar da procitas help :-)

Goran Pilipović fka bluesman
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem05.05.2003. u 17:57 - pre 254 meseci
Citat:
-zombie-:
i ja sam hteo preko {section} da joj pokažem (uz help ništa nije teško), ali nisam skontao kako da štampam loop varijablu pošto se ona ne referencira preko $nešto, pa onda {loop} ne pali jel tako očekuje funkciju..

Pa nije bas tako, procitaj help :-)

Citat:
-zombie-:
btw, ajde priznaj realno, da li si, i ako jesi koliko puta (u odnosu na {foreach}) koristio {section}...

Uvek i koristim samo {section}, ne znam da li sam neki put koristio {foreach} ;-)

Goran Pilipović fka bluesman
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: pomoc oko dizajna za SMarty-jem05.05.2003. u 21:02 - pre 254 meseci
(zombie sedi u ćošku i stidi se)

Citat:
bluesman:
Ja ne znam da li moze biti lakse od ovoga? Ti si bese pisao neki clanak o Smarty-ju, mogao si bar da procitas help :-)


heh.. me and my big mouth ;D priznajem, sam sam tražio..

nego, moraću stvarno da uzmem neki normalni format smarty man-a. koristim .chm verziju verziju jer sam navikao na nju kao mnogo bolji format.. (php man.chm kao najbolji primer, a od skora i mysql man), ali ne valja što je dokumentacija malo starija, od neke starije verzije smarty-ja.. hm.. možda ipak odem na pdf :(
 
Odgovor na temu

ana
Ana Balevic
LIACS & ACE
Amsterdam

Član broj: 5669
Poruke: 170
*.yubc.net

Jabber: ana@elitesecurity.org
Sajt: tesla.rcub.bg.ac.rs/~tauc..


Profil

icon Re: pomoc oko dizajna za SMarty-jem14.05.2003. u 00:53 - pre 254 meseci
...malo sa zakasnjenjem ali da vam se zahvalim za pomoc!
na kraju sam ispis odradila ovako (nije mi uspelo ono sa row.id ?!)
Code:

{foreach from=$tabela item=row}
    <p>
      {foreach from=$row item=column}
        {$column}
      {/foreach}

     <br><A HREF="InfoManifest.php?idM={$row.idM}" TITLE="Podaci o Manifestaciji {$row.idM}"> Informacije o Manifestaciji {$row.idM} </A>
 <br><A HREF='Satnice.php?idM={$row.idM}' TITLE='Podaci o Manifestaciji {$row.idM}'> Satnica Manifestacije {$row.idM} </A>
       {/foreach} 

ako nije problem jel moze neko da mi napise kako bi to izgledalo sa sectionima (ja sam citala pre par dana onaj help,i jasno mi je za obican niz- ali tabelu nikako nisam uspela da ispisem,a probala sam na ovaj nacin:
Code:

<table>
{section name=red loop=$brredova}
    <tr>
    {section name=kolona loop=$tabela[red]}
        <td> {$tabela[red][kolona]} </td>
     {/section}
     </tr>
{/section}
</table>


Hvala unapred! :) Ana
 
Odgovor na temu

ana
Ana Balevic
LIACS & ACE
Amsterdam

Član broj: 5669
Poruke: 170
*.yubc.net

Jabber: ana@elitesecurity.org
Sajt: tesla.rcub.bg.ac.rs/~tauc..


Profil

icon Re: pomoc oko dizajna za SMarty-jem14.05.2003. u 00:57 - pre 254 meseci
...ups :)
probala sam da jednom polju pristupam sa $tabela[kolona]
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem14.05.2003. u 03:41 - pre 254 meseci
imas array:
$categories = array ("cat_id" => 1, "cat_name" => "Kategorija", "cat_description" => "nesto trece")

onda napravios
Code:

{section name=cat loop=$categories}
    {$categories[cat].cat_id}
    {$categories[cat].cat_name}
    {if !empty($categories[cat].cat_description)}
        {$categories[cat].cat_description|escape:stripslashes}
    {/if}
{/section}


znaci {$ime_niza[ime_sekcije].ime_polja}

ako je jednodimezionalni niz, na primer $errors = array ("1", "2", "3", "4"); onda ides samo
Code:

{section name=err loop=$errors}
    {$errors[err]}<br>
{/section}


i opet je sistem isti {$ime_niza[ime_sekcije]}
Goran Pilipović fka bluesman
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon Re: pomoc oko dizajna za SMarty-jem14.05.2003. u 04:01 - pre 254 meseci
ej, jedan kratak tip na koji si me sad podsetio sa ovim error[] nizovima..

elem, kad sam prošli/prvi put pravio dvojezični (višejezični, no..) sajt, počeo sam slično kao ti sa greškama.. (vrlo klasičan form validator)

Code:

if (!isset($_POST['username'])) {
    $errors[]='missing username';
}
if (strlen($_POST['password'])<6) {
    $errors[]='short password';
}
// ...


i naravno kod u templejtu sličan ovom u prethodnom goranovom postu..

ali kako onda da dobijem višejezičnost samo menjajući templejte.. hm..

ovako sam ja smilio, i mislim da je mnogo elegantnije..

Code:

    $errors['uname']=!isset($_POST['username'])
    $errors['pass']=(strlen($_POST['password'])<6);
// ...


samim tim, php kod je još kraći, a naravno, templejt sada sadži samu poruku o grešci, pa je prevođenje olakšano..

Code:

{if $errors.uname} 
  missing username<br>
{/if}     
{if $errors.pass} 
   password to short...
{/if}     
// ...


[Ovu poruku je menjao -zombie- dana 14.05.2003. u 14:36 GMT]
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem14.05.2003. u 12:29 - pre 254 meseci
Pa znas kako ja resavam greske (to je i onaj primer)... Sve sto procesiram, ako ima neka greska trpam u jedan globalni array, i onda samo proverim da li je taj niz prazan. Ako nije, ispisem sve greske. Pravio sam i komplikovaniju verziju gde cuva i podatke o polju koje je pogresno popunjeno, ali mozda je to preterivanje.

samo mislim da ce ti PHP prijaviti gresku kod
Code:

strlen($_POST['password'])<6

ako ti $_POST['password'] nije definisan.

zato sam napravio funkciju koja te stvari resava zauvek:
Code:

function getValue (&$variable, $default = "")
    {
    return isset($variable) ? trim($variable) : $default;
    }

pa zoves recimo sa
Code:

$password = getValue ($_POST['password'], "");


tako da samo proveravas da li je empty();

... opet smo pobegli od teme.
Goran Pilipović fka bluesman
 
Odgovor na temu

mist
Milos Stanic
Kragujevac

Član broj: 4871
Poruke: 210
*.netpro.co.yu



+190 Profil

icon Re: pomoc oko dizajna za SMarty-jem13.08.2004. u 10:02 - pre 238 meseci
Ljudi bre,

pa što niste rekli da ovo ne radi sa rezultatima MySQL querija. Tri dana se ubih pokušavajući da prikažem rezultate iz MySql querija, dok nisam iz zezanja pokušao da prebacim rezultate u običan 2D niz. Tek onda mi je uspelo da prikažem tabelu pomoću Smartyja. A bilo me blam da pitam, vidim vi sve kao super radite, sve vam to funkcioniše, a meni nikako da proradi...

Eto, dakle, ko se prvi put susreće sa Smartyjem - NARAVOUČENIJE:
Smarty {section} neće da prikazuje direktno rezultate MySQL queryja, nego mora sve da se pretvori prvo u običan dvodimenzionalni niz.
http://www.kgonline.info - Prvi kragujevački portal i forum
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


+5 Profil

icon Re: pomoc oko dizajna za SMarty-jem13.08.2004. u 16:53 - pre 238 meseci
hm.. o čemu ti pričaš?

kakve direktne rezultate iz mysqla?

kakvo pretvaranje u kakav niz?

 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem13.08.2004. u 23:28 - pre 238 meseci
Koliko ja kapiram covek je pokusavao iz tpl da radi neki mysq_fetch_array() ili nesto slicno. Da znas da moze i to, ali ne onako kako si ti to radio :-)
Goran Pilipović fka bluesman
 
Odgovor na temu

mist
Milos Stanic
Kragujevac

Član broj: 4871
Poruke: 210
*.vdial.verat.net



+190 Profil

icon Re: pomoc oko dizajna za SMarty-jem15.08.2004. u 14:37 - pre 238 meseci
Probao sam

php:
Code:

$result = mysql_query($query);
$smarty->assign('tabela', $result);
$smarty->display('main.tpl');


tpl:
Code:

{section name=mysec loop=$tabela}
{strip}
   <tr bgcolor="{cycle values="#eeeeee,#dddddd"}">      
      <td>{$tabela[mysec].Polje1}</td>
      <td>{$tabela[mysec].Polje2}</td>
{/strip}
{/section}
</table>


Medjutim nije islo dok nisam $result propustio kroz funkciju:

Code:

function sql2table ($dataset) {
    // Funkcija koja od mysql rezultata vraca tabelu (2D niz)
    $i=0;
    $j=0;
    while ($row = mysql_fetch_row($dataset)) {
        $j=0;
        foreach($row as $column) {
            $izlazni_niz[$i][$j] = $column;
            ++$j;
        }
        ++$i;
    }
    return($izlazni_niz);
}


A i posle toga nisam mogao da pristupam po imenima polja nego po numerickim indeksima.
http://www.kgonline.info - Prvi kragujevački portal i forum
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem16.08.2004. u 00:08 - pre 238 meseci
ok, ovo su pocetnicke greske, ako zelis mogu da ti pomognem:

- sto se mysql_query tice, $result nije nikakva tabela niti podaci vec tiop Resource, nesot kao ID linka ka rezultatima koji su bufferovani. U tvom slucaju je NISTA, odnosno nista upotrebljivo, bilo da si to radio sa Smarty ili bez Smarty.

Kao sto vidis, ti taj link prenosis u mysq_fetch_array() kako bi on znao iz kog buffera da cita podatke (oprosceno objasnjenje)

- sto se tice smarty coda u tpl, on je ok, jedino sto tvoj $tabela nije sadrzao ono sto si ocekivao pa zato nisi imao nikakv output.

- nije nenormalno sto ne mozes da pristupis tvom nizu preko asocijativnih kljuceva, zato sto si niz kreirao kao numericki: $izlazni_niz[$i][$j]

evo ti jednostavnijeg resenja:
Code:

$queryResource = @mysql_query ($queryString,$dbLink) or echo (mysql_error());
if ($queryResource)
    {
    for ($records = false; $aFetch = @mysql_fetch_array($queryResource); $records[] = $aFetch);
    }

ovo ti smesta sve u jedan array koji sam nazvao $records (ali mislim da sam negde ranije postovao ovaj kod), koji je zgodan za smarty, jer uz

$smarty->assign_by_ref ('tabela', $records)

mozes da pristupis tabeli onako kako si ti pristupio u TPL

Napominjem da su rezultati tipa koji ti navedes - default su BOTH, ali ja stavljam samo MYSQ_FETCH_ASSOC jer nije mnogo sporiji od numerickih a opet mozes da pristupis elementima po nazivima polja. Za razliko od MYSQ_FETCH_BOTH, nije dupliran (kod ...BOTH imas i numericke i asocijativne)

To je te - nadam se da ce ti pomoci.
Goran Pilipović fka bluesman
 
Odgovor na temu

bluesman

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



+1 Profil

icon Re: pomoc oko dizajna za SMarty-jem16.08.2004. u 00:13 - pre 238 meseci
samo pazi sa $smarty->assign_by_ref () jer ako uradis novi query, prepisace ti prethodne rezultate u $records, tako da ces morati za vise querija da koristis $smarty->assign ();

kod rezultata bi trebao da pravis proveru koji je tip querija jer za UPDATE, DELETE... nemas nikakv output pa ti moze generisati gresku, pa tako proveris pre for petlje:

if (eregi("^SELECT ", $queryString)
|| eregi("^SHOW ", $queryString)
|| eregi("^EXPLAIN ", $queryString)
|| eregi("^DESCRIBE ", $queryString))

pa ako je true (znaci da je SELECT, SHOW, EXPLAIN, DESCRIBE) onda vracas output odnosno citas mysql_fetch_array(), u portivnom ne uzimas nista jer ga ni nema.
Goran Pilipović fka bluesman
 
Odgovor na temu

[es] :: PHP :: Smarty template engine :: pomoc oko dizajna za SMarty-jem
(TOP topic, by Aleksandar Marković)
Strane: 1 2

[ Pregleda: 21242 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

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