Jesteś tutaj: Strona główna / Wiedza / eZ Publish / Własne stronnicowanie wyników w szablonach eZ Publish

Własne stronnicowanie wyników w szablonach eZ Publish

Stworzenie fetch'a dla nadpisanego szablonu jest czynnością standardową - foreach "wyniki" as "wynik" itp.Co jednak jeśli naszego "wynik" jest w widoku zbyt wiele? Dopiszmy stronnicowanie i podzielmy wyniki na odpowiednie części.

Wykorzystamy standardową wstawkę do stronnicowania wyników wziętą z widoku "full" pliku folder.tpl:

{include name=navigator
  uri='design:navigator/google.tpl'
  page_uri=$node.url_alias
  item_count=$list_count
  view_parameters=$view_parameters
  item_limit=$page_limit}

potrzebujemy trzech zmiennych:

  1. $page_limit - definiującej ilość wyników na stronę,
  2. $arts - przykładowej zmiennej pod którą będą fetchowane wyniki które chcemy stronnicować,
  3. $list_count - ilość wszystkich elementów wewnątrz node'a 84 z którego pobieramy nasze elementy.

Zdefiniujmy te zmienne, np:

{def $page_limit = 10} 
{def $arts =   fetch( 'content', 'tree',
                hash( 'parent_node_id', 84,
                      'sort_by', array( 
                                  array( 'attribute', false(), 'article/sticky' ), 
                                  array( 'attribute', false(), 'article/data') 
                                 ),
                      'class_filter_type',  'include', 
                      'class_filter_array', array( 'article' ),
                      'limit', $page_limit,
                      'offset', $view_parameters.offset ) ) }
{def $list_count=fetch( 'content', 'tree_count',
                  hash( 'parent_node_id', 84,
                        'class_filter_type',  'include', 
                        'class_filter_array', array( 'article' ) ) ) } 

Dodajmy pętle która "przetworzy" nam $arts:

{foreach $arts as $i => $art}
  {node_view_gui content_node=$art view=line}
{/foreach}

Na koniec includujemy do szablonu wspomniane stronnicowanie:

{include name=navigator
  uri='design:navigator/google.tpl'
  page_uri=$node.url_alias
  item_count=$list_count
  view_parameters=$view_parameters
  item_limit=$page_limit}

Całość może wyglądać następująco:

{def $page_limit = 10}

{def $arts =   fetch( 'content', 'tree',
                hash( 'parent_node_id', 84,
                      'sort_by', array( 
                                  array( 'attribute', false(), 'article/sticky' ), 
                                  array( 'attribute', false(), 'article/data') 
                                 ),
                      'class_filter_type',  'include', 
                      'class_filter_array', array( 'article' ),
                      'limit', $page_limit,
                      'offset', $view_parameters.offset ) ) }
 
{def $list_count=fetch( 'content', 'tree_count',
                  hash( 'parent_node_id', 84,
                        'class_filter_type',  'include', 
                        'class_filter_array', array( 'article' ) ) ) }

{foreach $arts as $i => $art}
  {node_view_gui content_node=$art view=line}
{/foreach}

<div class="break"></div>

{include name=navigator
  uri='design:navigator/google.tpl'
  page_uri=$node.url_alias
  item_count=$list_count
  view_parameters=$view_parameters
  item_limit=$page_limit} 

Do góry

Twój komentarz: