web-dev-qa-db-fra.com

Suivant / précédent pour les éléments de menu

J'ai créé un site Web basé sur Joomla. Mon menu Principal-Gauche contient de nombreux éléments, qui sont tous liés à la "présentation du blog de la catégorie", qui présente de nombreux articles dans toutes les catégories.

J'ai besoin de créer un Suivant/précédent pour chaque élément de menu, donc chaque fois que quelqu'un est dans l'élément de menu 3 et appuie sur Suivant entre dans l'élément 4 et ainsi de suite.

En bref, ce dont j'ai besoin, c’est de la pagination pour les éléments de mon menu et pas seulement pour les articles. J'espère que vous pouvez aider.

2
Peter

Téléchargez le module de code personnalisé Flexi à partir du JED et installez-le. Publiez le module à n’importe quelle position sur la page souhaitée. Masquer le titre du module. Désactivez clean css, clean, html et clean jscript. Laissez PHP activé

Entrez ce code dans la case du code personnalisé

<?php
$menu = JFactory::getApplication()->getMenu();
$JInput = JFactory::getApplication()->input;
$Itemid = $JInput->get('Itemid','','int');
$items = $menu->getMenu();

$pagination = array();
foreach($items as $item){
    if($item->link != '' && $item->type != 'separator' && $item->level == 1){
        if(strpos($item->link, 'index.php?option')!== false){
            $link = JRoute::_($item->link.'&Itemid='.$item->id);
        }else{
            $link = $item->link;
        }
        $pagination[] = array('Itemid'=>$item->id, 'link' => $link);
    }
}

foreach($pagination as $k => $menuItem){
    if($menuItem['Itemid'] == $Itemid){
        if($k == 0){
            $prev = $pagination[count($pagination) - 1]['link'];
            $next = $pagination[$k + 1]['link'];
        }elseif($k == count($pagination) - 1){
            $prev = $pagination[count($pagination) - 2]['link'];
            $next = $pagination[0]['link'];
        }else{
            $prev = $pagination[$k - 1]['link'];
            $next = $pagination[$k + 1]['link'];
        }
    }
}

echo $next.'<br />'.$prev;

echo '<pre>';
print_r($items);
echo '</pre>';
?>

Ce code suppose que tous vos éléments de menu sont des éléments de menu de niveau racine et qu'ils ne sont pas des séparateurs de texte. La pagination devrait automatiquement se mettre à jour en fonction de la page sur laquelle vous vous trouvez et si vous modifiez l'ordre de tri des éléments de menu dans le backend.

Je n'ai que brièvement testé cela sur mon site et cela fonctionne. Vous aurez peut-être besoin de le modifier un peu, mais cela devrait être un bon point de départ au moins.

2
Terry Carter