Submitted by serrano on
Bonjour, j'ai beau chercher sur les forums, je ne trouve pas comment masquer une vue si elle est vide. En fait je veux plus précisément que l'entrée dans le menu soit masquer si elle renvoie un résultat nul ou vide?
Je pensais pouvoir le faire avec les arguments mais, pfff? je comprends pas bien comment ça marche....
Le site concerné en cours de développement est http://cleraffaires83.com/
le but est que si aucun partenaire n'est créer dans la catégorie ALCOOL par exemple, je veux que ALCOOL disparaisse dans le menu "PARTENAIRES"
Merci d'avance pour votre aide....
Salut, C’est une question
Permalien Soumis par drupalfrance le 15 Novembre, 2010 - 14:59
Salut,
C'est une question intéressante. Une p'tite recherche sur le net a donné une solution que je reproduis ci-dessous.
Note que cette solution ne fonctionnera que pour modifier le menu "Liens primaires", mais tu devrais pouvoir adapter le principe pour un autre menu.
Il faut implémenter la fonction
preprocess_page()
soit dans ton thème (en créant une fonctionTHEMENAME_preprocess_page(&$vars)
), soit dans un module maison (en créant une fonctionMODULENAME_preprocess_page(&$vars)
).La fonction
preprocess_page()
te permet d'intercepter et de modifier toutes les variables passées au templatepage.tpl.php
. En l'occurrence, tu veux modifier la variable$primary_links
car c'est elle qui contient les liens primaires.Le code à mettre dans ta fonction
preprocess_page()
ressemblera à :Super, merci pour le bout de
Permalien Soumis par serrano le 15 Novembre, 2010 - 15:55
Super, merci pour le bout de code.
La seule chose, c'est que j'ai beaucoup de catégorie... Soit il faut que je trouve une requête qui permet de faire ça en automatique sans que j'ai à modifier le php à chaque fois que je rajoute une catégorie, soit je forme mes clients à apprendre à activer ou désactiver les entrées des menus...
Et comment fais-tu pour
Permalien Soumis par drupalfrance le 15 Novembre, 2010 - 16:42
Et comment fais-tu pour générer ce menu à la base (sans parler de faire disparaître certains liens du menu) ?
Par les views…. Je crée un
Permalien Soumis par serrano le 17 Novembre, 2010 - 11:01
Par les views.... Je crée un champs CCK type field_text en liste ordonnée, je crée ensuite toute un ensemble de valeurs autorisées (alccol, auto, ...).
Ensuite, dans views, je crée une page avec en "TRI", catégorie:type ALCOOL par exemple puis je crée une entrée dans le menu avec la view....
OK, autrement dit, tu fais
Permalien Soumis par drupalfrance le 17 Novembre, 2010 - 12:31
OK, autrement dit, tu fais une vue qui pointe vers d'autres vues. Et tu veux faire disparaître les liens qui pointent vers des vues vides.
Pour ce besoin, ça aurait ptêtre été plus simple de faire un bout de code toi-même, avec tes propres requêtes SQL.
Certes, mais je suis
Permalien Soumis par serrano le 18 Novembre, 2010 - 09:25
Certes, mais je suis autodidacte... et je ne maitrise vraiment pas bien le PHP. Je ne saurais même pas comment m'y prendre...
En attendant, la cliente désactivera les entrées de Menu par l'administration de DRUPAL. Malgré tout, je pensais qu'on pouvais configurer les views pour faire ça mais apparemment, non....
Il faudrait en faite rajouter dans le module views une case à cocher dans la fenêtre de création d'entrée de Menu permettant d'indiquer de désactiver l'entrée de menu si vide...
On a dans DRUPAL la fonction d'activation ou non dans "Menu" et on sait faire une requête de test (si vue= aucun résultat. Je pense que c'est de ce côté qu'il faut chercher, mais mes connaissances en PHP sont trop limité pour me lancer dans l'aventure..
Mais je suis sûr que ça pourrais être utile pour la communauté...
En tout cas, merci encore de vous intéresser à mon soucis.
OK, je comprends. C’est vrai
Permalien Soumis par drupalfrance le 18 Novembre, 2010 - 15:05
OK, je comprends.
C'est vrai qu'il y a un besoin, quand j'avais cherché sur le net pour te répondre, j'étais tombé sur plusieurs billets en anglais qui abordaient le sujet.
De mon côté, j’ai utilisé une
Permalien Soumis par AlexisR le 26 Mai, 2011 - 15:14
De mon côté, j'ai utilisé une partie de ce code pour masquer une vue. Nickel. Merci.
Alexis R.