web-dev-qa-db-fra.com

Comment afficher des sous-menus dans un menu Joomla personnalisé?

Je veux ajouter un schéma dans mon menu Joomla.

Mon code:

$menu = JFactory::getApplication()->getMenu();
// Get menu items - array with menu items
$items = $menu->getItems('menutype', 'mainmenu');
//print_r($items);
?>
<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <?php foreach($items as $i => $menu_item){ ?>
        <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/"><?php if($menu_item->level == '1') { echo $menu_item->title; } ?></a>
            <?php if($menu_item->level == '2') { ?>
            <ul>
                <li><?php echo $menu_item->title; ?></li>
            </ul>
            <?php } ?>
        </li>
    <?php } ?>
</ul>

Le problème est que le sous-menu n'est pas affiché.

Par exemple :

<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">Home</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">DIFC</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">ADGM</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">About</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">Publications</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">FinTech: Now Everybody Wants A Slice of the Pie</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">The Role of Financial Centres in Emerging Economies</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">Bitcoin versus Ethereum </a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">ADGM</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">DIFC</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">Finance</a></li>
    <li itemprop="name"><a itemprop="url" href="http://www.10leaves.ae/">Contact</a></li>
</ul>

Le menu Publications comporte des sous-menus FinTech et deux autres.

Je n'arrive pas à comprendre comment imprimer les sous-menus.

1
Ronald Joseph

En supposant que le menu parent précède les menus enfants, je pense qu'il est plus judicieux de mettre en lot les sous-menus, puis juste avant un nouveau level = 1 Lorsque l’article est activé, vous déchargez le lot de sous-menus dans la structure de votre choix.

Je dois déclarer que je suis nouveau sur Joomla et que je ne sais pas s'il existe une méthode Joomla native pour effectuer cette tâche. De plus, je n'aime pas personnellement rentrer et sortir de php parce que je pense que cela augmente les chances d'erreur de développeur, je vais donc écrire ceci sous la forme d'un bloc php continu.

Code: ( Demo )

echo '<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">';
    foreach ($items as $i => $menu_item) {
        if($menu_item->level == '1') {
            if ($i) {             // not the first iteration ($i is not 0)
                if ($sub_menu) {  // only display a batch of submenus if batch is not empty
                    echo '<ul><li>' , implode('</li><li>', $sub_menu) , '</li></ul>';
                }
                echo '</li>';
            }
            $sub_menu = array();  // start over with a new empty batch
            echo '<li itemprop="name">';
                echo '<a itemprop="url" href="http://www.10leaves.ae/">' , $menu_item->title , '</a>';
        } elseif ($menu_item->level == '2') {
            $sub_menu[] = $menu_item->title;  // add to the batch
        }
    }
    if ($items) {
        echo '</li>';             // close final listitem tag
    }
echo '</ul>';                     // close first unorderedlist tag

Sortie:

<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">Home</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">DIFC</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">ADGM</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">About</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">Publications</a>
        <ul>
            <li>FinTech: Now Everybody Wants A Slice of the Pie</li>
            <li>The Role of Financial Centres in Emerging Economies</li>
            <li>Bitcoin versus Ethereum </li>
        </ul>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">ADGM</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">DIFC</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">Finance</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="http://www.10leaves.ae/">Contact</a>
    </li>
</ul>
0
mickmackusa