web-dev-qa-db-fra.com

Comment puis-je contrôler l'affichage du module sur les pages sans élément de menu?

J'ai attribué un module à des pages en fonction de leurs éléments de menu dans les paramètres de module, mais j'aimerais le masquer/l'afficher sur des pages spécifiques ne comportant pas d'élément de menu les reliant.

Comment contrôler l'affichage du module sur ces pages?

7
web-tiki

Solution 1: menu caché

Si vos pages ont également besoin d'URL assez jolies, vous pouvez créer un menu caché et lier ces articles dans le menu caché. Un menu caché signifie que vous ne créez pas de module pour celui-ci, vous le créez simplement dans le gestionnaire de menus, de sorte qu'il ne soit jamais visible comme un vrai menu pour l'utilisateur final.

Puisque Joomla voit cela comme un vrai menu (même s'il n'est pas visible), vous pourrez assigner des modules à chacun d'entre eux en sélectionnant les éléments de menu cachés dans les paramètres du module.

MISE À JOUR: Depuis Joomla 3.5, vous pouvez désormais choisir de masquer les éléments de menu dans un menu publié en accédant à l'onglet Type de lien dans l'élément de menu et en remplaçant "Afficher dans le menu" par "Non".

Solution 2: gestionnaire de module avancé

En dehors de cela, Regular Labs (précédemment appelé NoNumber), Advanced Module Manager, est absolument la solution. Le gestionnaire de modules avancé vous permet d'affecter des modules en fonction d'un grand nombre de critères tels que la catégorie, le composant, l'URL, l'élément de menu, la langue. Vous pouvez même l'utiliser pour publier des éléments sur des utilisateurs ou des groupes d'utilisateurs spécifiques.

20
Brian Peat

Vous ne pouvez pas le faire avec Joomla par défaut. Seulement par élément de menu. Jetez un coup d'œil au gestionnaire de modules avancé de RegularLabs qui vous donne plus d'options d'affectation.

7
Robert Went

Pour contourner des problèmes comme celui-ci, je crée normalement un menu "masqué" qui n'est placé nulle part sur le site. Ce faisant, je peux spécifier l'URL de pages spécifiques et leur appliquer des modules (comme vous essayez de le faire) ainsi que des modèles.

4
Zachary Draper

Essayez d'utiliser des extensions sans numéro.

http://www.nonumber.nl/extensions/advancedmodulemanager

Le gestionnaire de modules avancé vous permet de réaliser de nombreuses tâches spécifiques. Vous pouvez donc le configurer pour correspondre à un élément de menu uniquement si "abc" se trouve dans le chemin de l'URL, ou par article ou composant spécifique, même le jour de la semaine. . Vous pouvez même écrire des fonctions php personnalisées pour créer vos propres sélecteurs. Vous pouvez utiliser "tout" ou "tous", c'est génial. Toutes ses autres extensions sont très bien aussi, il vaut vraiment la peine d’acheter Pro, mais même le contenu gratuit de base est excellent.

Désolé - j'ai commencé à écrire cela il y a 20 minutes et je me suis fait interrompre puis posté sans savoir que tout le monde l'avait déjà suggéré !! Mais je m'en vais parce que ça me donne l'impression de faire partie d'une équipe de personnes qui connaissent des choses.

3
Faye

Joomla lui-même ne peut utiliser les menus que pour contrôler la visibilité des modules.

Une chose que vous pouvez faire est de masquer la position du module dans le modèle, par exemple:

/templates//index.php

<?php if (JFactory::getApplication()->input->get('id') == 4711) : ?>
  <jdoc:include type="modules" name="submenu" /> 
<?php endif; ?>

Ce code affichera les modules dans la position "sous-menu" si le paramètre id est "4711".

Vous voyez que cette méthode nécessite des connaissances en php et peut ne pas correspondre à vos besoins.

2
Harald Leithner

Un moyen simple et puissant est, comme suggéré, d’utiliser l’extension du gestionnaire de module avancé nonumber.nl.

Cela prend beaucoup de temps et est également facile de créer des éléments de menu cachés pour ces pages, mais attention, cela changera leur SEF

J'utilise également cette option pour créer des URL SEF de premier niveau pour les éléments d'un sous-menu (par alias de menu).

2
Johnnydement