Avatar billede lopolla123 Nybegynder
08. april 2006 - 21:48 Der er 15 kommentarer og
1 løsning

Smarty template engine

Jeg er begyndt at bruge Smarty (efter jeg fik det anbefalet her på eksperten), og det ser jo godt ud. Jeg ville høre om der er andre der anvender Smarty - for jeg har en del spørgsmål, og jeg tænkte om der monstro var et forum, der kunne være interessant, mm.

Hvis der er nogle der har nogle smarty-ressourcer-net-steder så ville jeg i hvert fald blive meget glad, hvis I lige kunne skrive dem her :-)

Grunden til, at jeg også spørger er, at forum på: http://smarty.php.net/ ikke virker for mig - det er et dødt link.
Avatar billede erikjacobsen Ekspert
08. april 2006 - 21:50 #1
Det link bør virke. Ja, jeg bruger da Smarty - spørg bare løs her ;)
Avatar billede lopolla123 Nybegynder
08. april 2006 - 21:57 #2
Jeg kunne ikke huske hvem det var, der anbefalede det, men det var vist dig :-)
Jeg er begyndt at lege med det, og er samtidig begyndt at anvende PEAR, klasser og metoder er nyere for mig, men det hjælper efterhånden :-)

1. Er der et smarty forum, i givet fald har du et link?
2. Kan man samle variabler indenfor Smarty, dvs.

(kommer lige med et eksempel fra min kode)

    {* FIRM *}
    {if $smarty.get.Page eq "Firm"}

        {* Menu *}
        {capture name=menu1}
            {include file='firmmenu.tpl'}
        {/capture}

        {* Show all firms *}
        {if $smarty.get.Page2 eq "All"}
            {capture name=firmAll}
                {include file='firmAll.tpl'}
            {/capture}
        {/if}
    {/if}


Ved oven stående laver capture på "menu1" og
Avatar billede erikjacobsen Ekspert
08. april 2006 - 22:02 #3
og ??  Det lyder som overkill at skulle bruge capture. Hvorfor?
Avatar billede lopolla123 Nybegynder
08. april 2006 - 22:05 #4
Syret hele mit spørgsmål kom ikke med! Men pyt her kommer det lige helt forfra!

Jeg kunne ikke huske hvem det var, der anbefalede det, men det var vist dig :-)
Jeg er begyndt at lege med det, og er samtidig begyndt at anvende PEAR, klasser og metoder er nyere for mig, men det hjælper efterhånden :-)

1. Er der et smarty forum, i givet fald har du et link?
2. Kan man samle variabler indenfor Smarty, dvs.

(kommer lige med et eksempel fra min kode)

    {* FIRM *}
    {if $smarty.get.Page eq "Firm"}

        {* Menu *}
        {capture name=menu1}
            {include file='firmmenu.tpl'}
        {/capture}

        {* Show all firms *}
        {if $smarty.get.Page2 eq "All"}
            {capture name=firmAll}
                {include file='firmAll.tpl'}
            {/capture}
        {/if}
    {/if}


Ved oven stående laver capture på "menu1" og "firmAll", og disse ønsker jeg skal blive til variablen "content" (spørgsmålet er om det kan lade sig gøre?)

3. Er det muligt at skrive sin PEAR-kommando direkte ind i sine tpl-filer eller skal man skrive sin sql-forespørgsel ind i sin PHP? Se fx
<?php
$sql = 'select contact_id, name, nick from contacts order by contact';
$smarty->assign("contacts", $db->getAssoc($sql));
?>
{foreach key=cid item=con from=$contacts}
<a href="contact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{/foreach}

(ovenstående er fra side 43 i manualen).

Jeg ser frem til at høre fra dig..........hvordan anvender du egentlig smarty - er der i nogle særlige tilfælde, hvor det er supersmart - jeg er jo lidt nysgerrig og sidder ivrigt og læser den gode dokumentation.
Avatar billede lopolla123 Nybegynder
08. april 2006 - 22:06 #5
Som kommentar så siger du capture er overkill........måske. Pointen er bare, at jeg foretrækker at skrive al content ud ét sted, og samle elementerne og underelementerne efterhånden så man bygger videre på variabler - det er muligt det ikke er optimalt, men hvad er så optimalt/bedre?
Avatar billede erikjacobsen Ekspert
08. april 2006 - 22:08 #6
Du skal dele dine programmer op i 2 dele:  Noget PHP, der laver beregninger, og kan bruge klasser fra PEAR og Zend, og så noget der viser det. Det er 2 helt adskilte ting, og skal ikke blandes.

Du får $smarty.capture.menu1 og $smarty.capture.firmAll som variabler med din capture. Men der skulle ikke være nogen grund til det.
Avatar billede erikjacobsen Ekspert
08. april 2006 - 22:10 #7
Man plejer jo bare at skrive koden i templates, der hvor den skal være

        {if $smarty.get.Page2 eq "All"}
          {include file='firmAll.tpl'}
        {/if}
Avatar billede lopolla123 Nybegynder
08. april 2006 - 22:16 #8
OK.........men sig mig er der et forum forlinket fra smarty.php.net er dødt for mig...... :-(

Kender du nogle smarty-source steder, der er smarty-specifikke?
Avatar billede erikjacobsen Ekspert
08. april 2006 - 22:19 #9
Jeg har bare brugt smarty-dokumentationen, og linket http://www.phpinsider.com/smarty-forum/ virker fint hos mig
Avatar billede lopolla123 Nybegynder
08. april 2006 - 22:29 #10
syret........det virker bare ikke for mig, hverken IE/firefox - har osse prøvet fra arbejde af :-(
Avatar billede erikjacobsen Ekspert
08. april 2006 - 22:45 #11
Avatar billede lopolla123 Nybegynder
09. april 2006 - 01:49 #12
Tak for den :-)

btw. jeg er ved at lave en liste, men farveskiftet virker ikke helt for mig, når jeg erstatter de almindelige farvekoder med variabler......

    {foreach item=firm from=$firmAll}
        <tr>
            <td height="18" align="left" valign="middle" bgcolor="{cycle values="{#color1#},{#color4#}"}">
                <a href="./index.php?Page=Firm&Page2=details&firmid={$firm.firmid}" class="">{$firm.firmname}</a>
            </td>
        </tr>
    {/foreach}

Variablerne: color1 og color4 er defineret igennem smarty (variabler lavet og loadet igennem smarty. Har du været ude for dette problem? Eller laver jeg en eller anden syntaksfejl?
Avatar billede lopolla123 Nybegynder
09. april 2006 - 01:51 #13
Output bliver......

        </tr>
            <tr>
            <td height="18" align="left" valign="middle" bgcolor="{#color1#,#F4F4F1"}">
                <a href="./index.php?Page=Firm&Page2=details&firmid=5" class="">Mit firmanavn</a>
            </td>
        </tr>
Avatar billede erikjacobsen Ekspert
09. april 2006 - 09:11 #14
Det du kan gøre er at definere een variabel

    farver=red,green

i din config fil - eller hvor den nu kommer fra - og så

    bgcolor="{cycle values=#farver#}"

Øh, bgcolor - lyder som gammeldags HTML. Man bør vel bruge CSS
Avatar billede lopolla123 Nybegynder
12. april 2006 - 12:08 #15
OK - mange tak for hjælpen - så er jeg efterhånden et godt stykke videre med Smarty ;)
Du må gerne lægge svar med dine fremragende svar ;)
Avatar billede erikjacobsen Ekspert
12. april 2006 - 12:09 #16
Jeg samler slet ikke på point, tak. Accepter blot dit eget svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester