Výpisy

List-container

Výpis produktů dle šablony list-item. Pokud nejsou nalezeny žádné produkty, použije se zpráva definovaná v list-empty.

Do volitelného data-role=“pagination“ je doplněn obsah definovaný přes pagination v souboru _listing.tpl (_listing_article.tpl pro články atd.). Různé šablony lze určit atributem data-name.

POZOR! Není možné obalovat stránkování podmínkou pro zobrazení. Takový kód by nefungoval při fitrování přes AJAX. Pokud je potřeba například skrýt stránkování u výpisů s jen jednou stranou, stačí přidat podmínku do <i:list-pagination>

{# použije šablonu "default" (nebo bez jména) z _listing.tpl #}
<i:list-container type="product">
    <div data-role="pagination"/>
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
<i:list-container type="product">
    <div data-role="pagination"/>
    <div data-role="empty"/>
    <div data-role="list" data-name="short"/>
    <div data-role="pagination" data-name="simple" />
</i:list-container>
{# obalit boxy po třech do .wrap, proložit <hr> a přidat třídu "third" #}
<i:list-container type="product" wrap="3:div.wrap" append="3:hr" box-class="3:third">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
{# obalit boxy po třech do .wrap a .www-rap, proložit <hr> a přidat třídu "third" #}
<i:list-container type="product" wrap="3:div.wrap.www-rap" append="3:hr" box-class="3:third">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
{# použije šablonu "news" z _listing.tpl #}
<i:list-container type="product" name="news">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
Atributy list-container

data-role

Povinný

Popis

type

ano

typ výpisu

source

ne

Twig object s parametry výpisu (nelze kombinovat s collection)

collection

ne

seznam položek k vypsání (nelze kombinovat s source a nepodporuje stránkování)

name

ne

šablona položky (dle list-item)

analytics-name

ne

pojmenování pro měření (např „product.detail.bottom“)

wrap

ne

obalovat skupiny boxů

append

ne

přidat tag za skupinu boxů

box-class

ne

přidat třídu

hide-empty

ne

skýt celý container, pokud neobsahuje položky (bez hodnoty)

scroll-offset

ne

CSS selector pro započítání fixní hlavičky

insert-before

ne

název šablony listing-insert pro vložení před každou položku

insert-after

ne

název šablony listing-insert pro vložení za každou položku

insert-arguments

ne

argumenty k předání do šablony prepend-insert - twig zapsán jako {{ {abc: product.id} }} bude zpracován přes json_encode

takže pouze jednoduché hodnoty (čísla

pole

jednoduché objekty)

class

třída

hide-empty - skrýt výpis bez položek

Při uvedení atributu hide-empty (uvádí se bez hodnoty) se container vůbec nevypíše, pokud neobsahuje žádné položky. S tímto atributem se pak vůbec nepoužívá definice prázdného výpisu.

<i:list-container type="product" source="{kategorie:123,limit:10}" hide-empty>
    <div data-role="list"/>
</i:list-container>

source - parametry výpisu

Pokud není atribut source uveden, použije se defaultní výpis pro danou stránku. Například v kategorii se budou vypisovat produkty z kategorie atd. Výpis bez uvedeného source aktualizuje URL při změně (strana, filtr, …)

V parametrech je možné použít globální proměnné, ale není možné použít žádnou lokální proměnou. Tzn. zápis musí fungovat úplně stejně, pokud se smaže zbytek šablony.

<i:list-container type="product" source="{kategorie:123,limit:10}">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
<i:list-container type="product" source="{kategorie:kategorie.id,limit:10}">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>

wrap - obalení boxů do jednoho tagu

Atributem wrap lze definovat, jakým tagem s jakou třídou (třída je nepovinná) a z jakých podmínek se mají boxy obalit.

<i:list-container source="zdroj_zbozi" wrap="3:ul.sublist" class="list">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
<div class="list">
    <ul class="sublist">
        <li>product</li>
        <li>product</li>
        <li>product</li>
    </ul>
    <ul class="sublist">
        <li>product</li>
        <li>product</li>
        <li>product</li>
    </ul>
    <ul class="sublist">
        <li>product</li>
    </ul>
</div>

append - přidání tagu dle pořádí

Atribut append určuje tag, který se má vkládat za vypisované boxy dle podmínek. Podmínek lze zapsat i více a oddělit je čárkou - použije se první tag, který splňuje podmínku.

<i:list-container append="3:hr.divider,last:hr.last" class="list">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
<div class="list">
    <div class="item">product</div>
    <div class="item">product</div>
    <div class="item">product</div>
    <hr class="divider"/>
    <div class="item">product</div>
    <div class="item">product</div>
    <div class="item">product</div>
    <hr class="divider"/>
    <div class="item">product</div>
    <hr class="last"/>
</div>

List pagination

Definice stránkování - vždy v souboru _listing.tpl. Definuje makro, které se následně využívá pro výpis produktů v list-container.

Obvykle obsahuje stránkování, informace o počtu záznamů atd.

Nelze přistupovat ke globálním proměnným a je dostupná pouze proměnná pagination a filterActive.

{# _listing.tpl #}
<i:list-pagination>
    {%if pagination.stran > 1%}
        {%trans%}celkem položek{%endtrans%}: <strong>{{pagination.nsum}}</strong>
        {%trans%}strana{%endtrans%}:  <strong>{{pagination.strany|raw}}</strong>
    {%endif%}
</i:list-pagination>
{# _listing.tpl #}
<i:list-pagination>
    {# přidá další stranu do výpisu místo změny strany #}
    <button data-role="add-page">další produkty</button>
</i:list-pagination>
Atributy pagination

data-role

Default

Popis

type

typ položky (product, article, …)

name

default

název boxu pro provázání s list-container

Atributy pagination.strany

Atribut

Hodnoty

Popis

spaces

true/false

vkládat mezi stránky nedělitelnou mezeru

size

1/2/3/4/5/…

počet zobrazených odkazů

label_next

‚string‘

text odkazu na další stránku

label_previous

‚string‘

text odkazu na předchozí stránku

hash

‚string‘

do odkazu se doplní hash za #

{# _listing.tpl #}
<i:list-pagination>
    {{pagination.strany({spaces: true, label_next: 'next-page'|trans})}}
</i:list-pagination>

List empty

Definice zpráv při prázdném výpisu - vždy v souboru _listing.tpl. Definuje makro, které se následně využívá pro výpis produktů v list-container.

Je dostupná pouze proměnná url.

<i:list-empty type="product" name="short">
    Nebyly nalezeny žádné produkty
</i:list-empty>
<i:list-empty type="product">
    <div data-role="default">Nebyly nalezeny žádné produkty</div>
    <div data-role="filter">
        Filtr nenalezl žádné produkty.
        Zkuste upravit hledané vlastnosti nebo <a href="{{url.reset}}">zrušit filtr</a>.
        </div>
</i:list-empty>
Atributy list-empty

data-role

Default

Popis

type

typ položky (product, article, …)

name

default

název pro provázání s list-container

Dostupné proměnné

název

hodnota

url.reset

URL bez filtru a strany

List insert

Definice šablony, která se vloží před (nebo za) každou vypisovanou položku - vždy v souboru _listing.tpl. Definuje makro, které se následně využívá pro výpis produktů v list-container.

<i:list-insert type="product" name="banner">
    {% if limit == 16 and position % 5 === 0 %}
        {% set article = repository.article.findOneBy({id:arguments.id}) %}
        {{ article.name }}
    {% endif %}
</i:list-insert>

<i:list-container insert-after="banner" insert-arguments="{{ {id:article.id} }}">
    <div data-role="empty"/>
    <div data-role="list"/>
</i:list-container>
Atributy list-insert

data-role

Popis

type

typ položky (product, article, …)

name

název pro provázání s list-container

Dostupné proměnné

název

hodnota

pagePosition

Pozice na stránce (počítáno od 1)

page

Číslo stránky výpisu (počítáno od 1)

limit

Počet záznamů na stránku (maximum)

recordsOnPage

Počet záznamů na stránce (aktuální)

arguments

vstupní data definovaná na listing-container - pouze skalární (prošla skrz json_encode)

List Item

Definice položky výpisu - vždy v souboru _listing.tpl. Definuje makro, které se následně využívá pro výpis produktů v list-container.

Nelze přistupovat ke globálním proměnným a nelze zjistit pozici ve výpisu.

{# _listing.tpl #}
<i:list-item>
    <h3>{{product.nazev}}</h3>
</i:list-item>
<i:list-item tag="li" name="news">
    <h3>{{product.nazev}}</h3>
</i:list-item>
Atributy list-item

data-role

Default

Popis

type

typ položky (product, article, …)

tag

div

jakým tagem obalit výsledný box

name

default

název boxu pro provázání s list-container

class

třída