Comment puis-je réaliser une pagination en boucle? Disons que j’ai 5 articles, j’ajoute une pagination et que sur la première page, j’ai le bouton "Suivant", aux pages 2 à 4, j’ai les boutons "suivant" et "prev", sur la dernière page, je vais ont seulement "prev" bouton. Comment puis-je avoir les boutons "next" et "prev" sur chaque page? Donc, après avoir atteint la 5ème page et appuyé sur "suivant", je passe à la 1ère page, comme une boucle ou un cercle.
La pagination des articles est gérée par un plugin de contenu appelé pagenavigation
, situé dans ROOT/plugins/content/pagenavigation
. Le problème est que même si Joomla autorise les remplacements de plugins , la plupart des plugins ne les prennent pas en charge, y compris ce plugin particulier. Quoi qu'il en soit, le code que vous devez modifier se trouve dans pagenavigation.php
Dans le dossier susmentionné (à peu près à la ligne 174):
Changer le code existant:
if ($location - 1 >= 0)
{
// The previous content item cannot be in the array position -1.
$row->prev = $rows[$location - 1];
}
if (($location + 1) < count($rows))
{
// The next content item cannot be in an array position greater than the number of array postions.
$row->next = $rows[$location + 1];
}
Avec ceci:
if ($location - 1 >= 0)
{
// The previous content item cannot be in the array position -1.
$row->prev = $rows[$location - 1];
} else {
// Add button to return to last element
$row->prev = $rows[count($rows)-1];
}
if (($location + 1) < count($rows))
{
// The next content item cannot be in an array position greater than the number of array postions.
$row->next = $rows[$location + 1];
} else {
// Add button to return to start
$row->next = $rows[0];
}
Autant que je sache, vous avez trois façons de résoudre ce problème:
plg_pagenavigation
Existant et appliquez les modifications. Puis publiez votre nouveau plugin et annulez la publication pagenavigation
.Rendez le plugin compatible avec les remplacements de plugin en ajoutant ce code à ROOT/plugins/content/pagenavigation/pagenavigation.php
, Juste après defined('_JEXEC') or die;
:
$chromePath = JPATH_THEMES . '/' . JFactory::getApplication()->getTemplate() . '/html/pagenavigation.php';
if (file_exists($chromePath))
require_once ($chromePath);
if (!function_exists('plgContentNavigation')) {
function plgContentNavigation( &$row, &$params, $page=0 )
{
Puis ceci à la fin du fichier:
}
}
Joomla recherchera le fichier ROOT/templates/YOURTEMPLATE/html/pagenavigation.php
Et l’utilisera comme substitut, s’il existe. C'est toujours un hack fondamental, mais il pourrait être plus facile à maintenir.