Skip to content
Extraits de code Groupes Projets
Valider e18fd60d rédigé par JamesRezo's avatar JamesRezo :tada:
Parcourir les fichiers

Introduction d'un systeme de pagination.

Exemple d'ecriture:

<BOUCLE_pagine(ARTICLES){branche?}{par date}{inverse}></BOUCLE_pagine>[
<p>(#PAGINATION{_liste})</p>
]<//B_pagine>

<BOUCLE_liste(ARTICLES){branche?}{par date}{inverse}{pagination}>[
<p><a href="(#URL_ARTICLE)">#TITRE</a></p>
]</BOUCLE_liste>

ca demande encore a etre ameliore
parent 1f30d857
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -2648,6 +2648,51 @@ function form_hidden($action) { ...@@ -2648,6 +2648,51 @@ function form_hidden($action) {
return $hidden; return $hidden;
} }
function pagination($total, $debut, $pas) {
global $pagination_item_avant, $pagination_item_apres, $pagination_separateur;
global $pagination_max, $pagination_max_texte;
tester_variable('pagination_separateur', '&nbsp;| ');
tester_variable('pagination_max_texte', '...');
$pagination = array(
'lien_base' => self(),
'total' => $total,
'position' => intval(_request($debut)),
'pas' => $pas,
'nombre_pages' => floor(($total-1)/$pas)+1,
'page_courante' => floor(intval(_request($debut))/$pas)+1,
'lien_pagination' => '<a href="@url@">@item@</a>'
);
if($pagination_max == 0 OR $pagination_max>=$pagination['nombre_pages']) {
$premiere = 1;
$derniere = $pagination['nombre_pages'];
$texte_avant = '';
$texte_apres = '';
}
else {
$premiere = max(1, $pagination['page_courante']-floor($pagination_max/2));
$derniere = min($pagination['nombre_pages'], $premiere+$pagination_max-1);
$premiere = $derniere == $pagination['nombre_pages'] ? $derniere-$pagination_max+1 : $premiere;
$texte_avant = $premiere>1 ? $pagination_max_texte.' ' : '';
$texte_apres = $derniere<$pagination['nombre_pages'] ? ' '.$pagination_max_texte : '';
}
$texte = '';
if($pagination['nombre_pages']>1) {
for($i = $premiere;$i<=$derniere;$i++) {
$url = parametre_url($pagination['lien_base'], $debut, strval(($i-1)*$pas));
$_item = strval($i);
$item = ($i != $pagination['page_courante']) ?
preg_replace(array(',@url@,', ',@item@,'), array($url, $_item), $pagination['lien_pagination']) :
$_item;
$texte .= $pagination_item_avant.$item.$pagination_item_apres;
if($i<$pagination['nombre_pages']) $texte .= $pagination_separateur;
}
return $texte_avant.$texte.$texte_apres;
}
return '';
}
### fonction depreciee, laissee ici pour compat ascendante 1.9 ### fonction depreciee, laissee ici pour compat ascendante 1.9
function entites_unicode($texte) { return charset2unicode($texte); } function entites_unicode($texte) { return charset2unicode($texte); }
......
...@@ -556,6 +556,40 @@ function balise_POPULARITE_dist ($p) { ...@@ -556,6 +556,40 @@ function balise_POPULARITE_dist ($p) {
return $p; return $p;
} }
// #PAGINATION
// http://www.spip.net/fr_articleXXXX.html
function balise_PAGINATION_dist($p) {
$b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere'];
if ($b === '') {
erreur_squelette(
_T('zbug_champ_hors_boucle',
array('champ' => "#$b" . 'PAGINATION')
), $p->id_boucle);
$p->code = "''";
}
elseif (!$p->param || $p->param[0][0]) {
erreur_squelette(
/*_T('zbug_champ_manquant',
array('champ' => '#PAGINATION')*/
_L('param&eacute;tre manquant pour #PAGINATION')
, $p->id_boucle);
$p->code = "''";
}
else {
$nom_boucle = calculer_liste($p->param[0][1],
$p->descr,
$p->boucles,
$p->id_boucle);
$nom_boucle = str_replace("'", '', $nom_boucle);
$pas = _PAS>0 ? _PAS : 10;
$p->boucles[$b]->numrows = true;
$p->code = "pagination(\$Numrows['$b']['total'],'debut".$nom_boucle."',".$pas.")";
}
$p->interdire_scripts = true;
return $p;
}
// //
// Fonction commune aux balises #LOGO_XXXX // Fonction commune aux balises #LOGO_XXXX
...@@ -1011,4 +1045,4 @@ function balise_CACHE_dist($p) { ...@@ -1011,4 +1045,4 @@ function balise_CACHE_dist($p) {
return $p; return $p;
} }
?> ?>
\ No newline at end of file
...@@ -90,6 +90,15 @@ function critere_debut_dist($idb, &$boucles, $crit) { ...@@ -90,6 +90,15 @@ function critere_debut_dist($idb, &$boucles, $crit) {
$crit->param[1][0]->texte . $crit->param[1][0]->texte .
'"' ; '"' ;
} }
// {pagination}
// http://www.spip.net/@pagination
function critere_pagination_dist($idb, &$boucles, $crit) {
$pas = _PAS>0 ? _PAS : 10;
$boucle = &$boucles[$idb];
$boucle->limit = 'intval($GLOBALS["debut'.$idb.'"]) . ",'.$pas.'"';
}
// {recherche} // {recherche}
// http://www.spip.net/@recherche // http://www.spip.net/@recherche
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter