web-dev-qa-db-fra.com

Boucle de pagination Joomla sans début ni fin

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.

3
be well

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:

  1. Modifiez le fichier d'origine, comme ci-dessus. Cela s'appelle un piratage de base et n'est pas recommandé, car vos modifications pourraient être écrasées lorsque vous mettrez à jour Joomla.
  2. Créez un nouveau plugin basé sur le plg_pagenavigation Existant et appliquez les modifications. Puis publiez votre nouveau plugin et annulez la publication pagenavigation.
  3. 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.

2
johanpw