Paprastieji moduliai

  • Tekstinis puslapis
  • Naujienos
  • Galerija
  • Paieška
  • Svetainės medis

Tekstinis puslapis

Informacijos išvedimas
Pavyzdys kaip išvedama paprasto tekstinio puslapio informacija.

{$data.content.text_content01.value}

Naujienos

Sąrašas

Pavyzdys kaip išvedamas naujienų sąrašas:
{*
===============================================
Naujienų vaizdavimas
===============================================
*}
{*Surūšiuojame pagal datą*}
{ext2->aasort array=$data.elements args="-news_date_from" assign='newslist'}
{*Paruošiame puslapiavimui*}
{ext2->paging
        elements=$newslist
        items_per_page=$data.content.news_count01.value|default:5
        page=$smarty.get.page assign="page_data"}

{assign var="counter_is" value=1}

{foreach from=$newslist item="el" name="listas"}
    {* Patikriname ar naujienos parašymo data nera iš ateities *}
    {if $smarty.now > $el.news_date_from && $el.hide}

        {* Patikriname ar naujiena vis dar galioja *}
        {if ($el.news_date_to > $smarty.now) || $el.news_date_to == ""}

            {* Rodome tik dabartinio puslapio elementus *}
            {if $counter_is >= $page_data.current_page.from &&
                $counter_is <= $page_data.current_page.to}


                {* naujienos data *}
                {$el.news_date_from|date_format:"%Y-%m-%d"}

                {* naujienos pavadinimas, vedantis į pačia naujieną *}
                <a href="{$el.url}">{$el.name}</a>

                {* naujienos aprašymas *}
                {$el.news_intro}
            {/if}

            {math equation="x + 1" x=$counter_is assign="counter_is"}
        {/if}
    {/if}
{/foreach}

{*
===============================================
Puslapiaviams
===============================================
*}
{if $page_data.totalpages>1}
    {if $smarty.get.page>1}
       <a href="index.php?id={$data.page.id}&page={$smarty.get.page-1 }">Atgal</a>
    {/if}
    {foreach from=$page_data.pages item="el"}
       <a href="index.php?id={$data.page.id}&page={$el.number}"> ;{$el.number}</a>
    {/foreach}
    {if $smarty.get.page<$page_data.totalpages}
        {if !$smarty.get.page}
            {assign var="apage" value="2}
        {else}
            {assign var="apage" value=$smarty.get.page+1}
        {/if}
        <a href="index.php?id={$data.page.id}&page={$apage}">
            Pirmyn
        </a>
    {/if}
{/if}

Sąrašo elementas

Pavyzdys kaip vaizduoti naujienos elementą:
{* Naujienos data *}
{$data.content1.news_date_from|date_format:"%m.%d"}
<br />
{* Nuajienos tekstas *}
{$data.content1.news_full_text}


Galerija

Galerijos sąrašas

Pavyzdys kaip išvesti visus paveikslėlių galerijos paveikslėlius:
{foreach from=$imglist item="item"}

    <img src="{$_http_path}/get.php?i.{$item.images01 }:w.200:h.200"
            onclick="openImagePopupID('{$item.images01}',
                                    '{$bin.info.width}',
                                    '{$bin.info.height}',
                                    '{$item.name}');" />

{/foreach}

Atskiras galerijos elementas

Paveikslėlių galerijos atskiro elemento pavyzdys:
<img id="mainImage" src="get.php?i.{$data.content1.images01}:w.700:h.550" />
{if $data.content.aprasymas001.value}
    {$data.content.aprasymas001.value}
{/if}


Paieška

Svetainės paieškos pavyzdys

{*
Formos pavyzdys
*}
<form action="search/" method="get" name="search_form">
    <input type="text" name="query" />
    <input type="submit" value="Ieškoti" />
</form>




{*
Rezultatų vaizdavimo pavyzdys
*}
Jūsų užklausa: {$smarty.get.query|urldecode}<br />
{if $data.search}
    {foreach from=$data.search item=el}
        <a href="{$el.url}">{$el.name}</a><br />
        {if $el.intro}
            {$el.intro}<br />
        {/if}
       <br /><br />
    {/foreach}
{else}
    Rezultatų nėra.<br />
{/if}

Svetainės medis

Svetainės medžio pavyzdys (su rekursija)

Šis pavyzdys veikia su bet kokiu kiekiu medžio lygmenį, tačiau jis turi vieną trūkumą: iš pirmo žvilgnio - jis paprastas ir netgi elegantiškas, tačiau realiai pats algoritmo veikimas yra komplikuotas. Pavyzdžiui kiekvienam rekursijos žingsniui naudojama failo įterpimo operacija reikalauja sąlyginai nemažai resursų.
Taigi, norint išvengti bereikalingo "overhead" galima naudotis ir kitokiais metodais (kad ir paprasčiausiu vieno lygmens foreach, išlygiavimui pasinaudojant $tree elemento depth atributu).

{*
Pagrindinis failas
*}
{foreach from=$tree item="el"}
    {if $el.parent}
    {else}
    {$el.name}
        {include file="guest/reqursion.html" parent=$el.id left=1}
    {/if}
{/foreach}



{*
guest/reqursion.html
*}
{foreach from=$tree item="el"}
    {if $el.parent.id==$parent}
        <div style="margin-left: {$left*20}px;">
        {$el.name}
        {include file="guest/reqursion.html" parent=$el.id left=$left+1}
        </div>
    {/if}
{/foreach}