EZ Publish possède un pager prêt à l'emploi (ou presque) :
extension/ezwebin/design/ezwebin/templates/content/search.tpl.
Pour l'utiliser, appelez-le dans votre template affichant une liste d'éléments :
{* Nombre maximum d'éléments par page *}
{def $page_limit = 10}
{* Nombre total d'éléments *}
{def $nb_total_articles = fetch(
'content', 'list_count',
hash(
'parent_node_id', $node.node_id,
'class_filter_type', 'include',
'class_filter_array', array( 'article' )
)
)}
{* Liste des éléments depuis $view_parameters.offset jusqu'à $page_limit *}
{def $articles = fetch(
'content', 'list',
hash(
'parent_node_id', $node.node_id,
'offset', $view_parameters.offset,
'limit', $page_limit,
'class_filter_type', 'include',
'class_filter_array', array( 'article' )
)
)}
{* Affichage des noms des éléments *}
{foreach $articles as $article }
{$article.name|wash()}
{/foreach}
{* Affichage du pager *}
{include name=navigator
uri='design:navigator/google.tpl'
page_uri=$node.url_alias
item_count=$nb_total_articles
view_parameters=$view_parameters
item_limit=$page_limit}
Remarques :
page_uricontient l'url de la page dans laquelle vous afficher le pager. Si vous êtes dans la vue d'un de vos modules,page_uriressemblera plutôt àmon_module/ma_vue.item_limitdéfinit le nombre maximum d'éléments à afficher. Ce paramètre doit être passé en paramètre pour le fetch qui récupère la liste des éléments. On peut rendre ce nombre paramétrable via un fichier .ini (ex:mon_extension.ini).- Le template du pager peut être surchargé comme n'importe quel autre template.
Le template du pager a besoin des paramètres de la vue ($view_parameters).
Si vous êtes dans la vue d'un de vos modules, vous devez gérer ce paramètre vous même et
le transmettre à votre template.
Pour cela, ajoutez un paramètre non ordonné à votre vue, dans le fichier module.php :
$ViewList['ma_vue'] = array(
'functions' => array( 'ma_vue' ),
'script' => 'maVue.php',
'unordered_params' => array( 'offset' => 'Offset' )
);
Dans votre vue récupérez l'offset et passez-le à votre template :
$viewParameters = array( 'offset' => 0 );
if ( isset( $Params['Offset'] ) ) {
$viewParameters['offset'] = $Params['Offset'];
}
$tpl->setVariable( 'view_parameters', $viewParameters );