Supposons que vous ayez les pages suivantes dans une arborescence de menus:
- Projets
- Project One
- Projet deux
- Projet trois
Je cherche un moyen de créer une vue qui sera intégrée dans la page Projet (parent) qui montrera une image, un titre et un texte (résumé) à partir des pages enfants.
La relation entre le parent et les enfants est définie dans l'arborescence des menus.
Je sais que je peux utiliser la référence de nœud, mais cela signifierait que chaque fois que quelqu'un crée une page, il devrait définir la relation de menu, puis la relation de référence de nœud.
Je sais également que je pourrais créer un autre type de contenu, mais je pense que c'est exagéré car toutes les pages de contenu se ressemblent.
Réponses:
Une solution consiste à utiliser des termes de taxonomie pour définir les relations, puis à utiliser le module Menu de taxonomie pour traduire ces relations de termes en éléments de menu. Vous pouvez ensuite utiliser le module Page personnalisée et les modules Contexte pour contrôler les informations et les régions sur toutes les pages si vous ne souhaitez pas utiliser de panneaux.
la source
Vous pouvez faire exactement cela en utilisant l' API Menu Node et les modules Vues de nœud de menu .
Créez une vue avec votre type de contenu requis et choisissez un filtre contextuel de "Menu: ID de lien de menu" (ceci n'est disponible qu'avec les modules ci-dessus installés).
Sous "Lorsque la valeur du filtre n'est pas disponible", sélectionnez "Fournir la valeur par défaut" et choisissez "Code PHP".
L'extrait suivant le fera, alors vous exposez simplement un bloc de la vue et vous y êtes:
la source
menu_load_object(arg(1))
au lieu denode_load()
pour économiser certaines dépenses. 2) Vous devez vérifier que l'élément de menu provient du menu qui vous intéresse. En ce moment, vous retournez juste le premier$mlid
. À l'intérieur de la foreach, vous devez ajouter une conditionif ($data->menu_name == 'my-menu')
pour résoudre ce problème. et 3) Vous souhaiterez peut-être ajouter un deuxième filtre pourmenu: hidden
ne renvoyer que les éléments qui ne sont pas masqués. Utilisez le même extrait de code, mais renvoyez le$data->hidden;
au lieu du$mlid
.Le module Node Hierarchy permet ce type de relation, ainsi qu'une intégration des vues.
la source
Peut-être que cela a changé pour D7 / Views 3, mais vous n'avez pas besoin de PHP pour accomplir le comportement souhaité:
le tour est joué. Ça ne devrait pas marcher , mais ça marche .
Cela fonctionne bien avec seulement les nœuds, mais l'avantage d'utiliser des liens de menu sur la hiérarchie des nœuds est que vous n'êtes pas limité à la construction d'une navigation autour des nœuds. Vous pouvez même inclure des liens externes dans votre vue.
la source
Il existe un module relativement récent, le filtre des enfants du nœud du menu Vues, qui semble faire exactement ce que vous voulez:
la source
Avez-vous envisagé d'utiliser la référence de nœud à cette fin?
Ainsi, vous pouvez obtenir un résultat similaire à celui que vous recherchez probablement.
la source
La réponse d' Emile est juste, mais j'ai dû coller le code PHP mentionné dans un filtre contextuel du type " Menu: Identifiant du lien du menu parent ".
la source
Si vous utilisez la traduction d'entité et que le nœud est attaché à différents menus, voici une adaptation du code qui filtre sur la langue courante. Vous devez le copier en tant que code PHP pour le filtre contextuel (identifiant du lien du menu parent) dans votre vue, comme expliqué dans les autres réponses
la source
À partir de la file d' attente des problèmes de vue des nœuds de menu, nous avons cette belle solution:
entrez le code suivant
la source