2009-12-09 5 views
2

Je crée un site dans Drupal et je souhaite uniquement afficher les liens secondaires sur les pages qui utilisent les vues que j'ai créées. J'ai essayé d'utiliser la variable $ secondary_links dans views-view.tpl.php mais la variable est null. Comment puis-je atteindre cet objectif?Afficher les liens secondaires dans les vues uniquement

Répondre

0

Avez-vous activé les liens secondaires à partir des paramètres du thème? Ce serait:

http://example.com/admin/build/themes/settings/name_of_your_theme

Je crois une fois que vous avez activé l'option, la variable sera peuplée.

EDIT: En pensant une seconde de plus, je voudrais également commenter que je ne suis pas sûr si les liens primaires et secondaires sont passés aux modèles de vues. Je crois que ceux-ci sont passés au fichier page.tpl.php à la place. Si j'ai raison, et pour une raison quelconque, vous voulez ajouter cette variable à celles qui sont passées au modèle de vues, vous devrez utiliser une fonction de pré-traitement, comme expliqué here. En effet, si vous avez seulement besoin du menu secondaire utilisé dans un modèle de vues spécifique, une autre approche consisterait simplement à appeler menu_secondary_links() à partir du modèle. Ce n'est pas la solution la plus élégante de tous les temps, car elle met dans un élément thématique quelque chose qui devrait appartenir ailleurs, mais c'est à vous de décider si ce menu dans les vues est une fonctionnalité de base ou un élément de style.

HTH!

+0

Salut à tous. Oui, vous avez raison de dire que je ne peux utiliser la variable $ secondary_links que dans le fichier page.tpl.php lorsque je ne souhaite l'utiliser que dans mes vues. Je pensais que je devrais utiliser la fonction de pré-traitement, mais comme je suis nouveau à cela, je pensais que je ferais en sorte qu'il n'y a pas une option plus facile. – screenm0nkey

+0

J'ai mis à jour ma réponse en suggérant un moyen plus simple d'obtenir le menu dans le modèle. – mac

+0

Bonjour Mac, votre deuxième réponse a bien fonctionné. Au début, je ne savais pas comment faire imprimer le menu_secondary_links() et j'ai réalisé que je pouvais utiliser la fonction 'print theme()' pour le faire fonctionner. Et ça se voit très bien. Merci beaucoup. – screenm0nkey

1

Les liens secondaires sont comme mac correctement écrit uniquement disponible dans page.tpl.php, mais si je vous comprends bien, la meilleure solution n'est pas d'obtenir les liens secondaires dans votre vue.

Avec votre thème, les liens secondaires, seront probablement imprimés là où ils devraient, indépendamment de ce qui est affiché, que ce soit vos vues, noeuds, la première page, etc. Les vues sont affichées et tout le reste, est enveloppé dans le modèle de page, qui contrôle où les menus sont situés, les régions et autres choses amusantes. Maintenant, si vous ne voulez pas modifier cela, l'emplacement des menus, leur style et ce genre de choses, vous ne devriez pas imprimer le menu secondaire dans votre modèle de vues, vous ne devriez pas faire quoi que ce soit avec du tout.

La solution est simple
Il utilise quelque chose qui mac mentionné, mais d'une manière différente: la fonction pré-traitement. Ces fonctions sont utilisées dans votre fichier template.php pour ajouter de la logique à vos variables. Vous pouvez modifier les variables ou les supprimer complètement. Ce que je ferais, serait simplement de supprimer les liens primaires, en définissant la valeur de $primary_links à une chaîne de texte vide.
Cela supprimerait effectivement les liens primaires, de sorte que seuls les liens secondaires sont affichés. Vous pouvez également afficher les liens secondaires en tant que liens principaux, mais cela peut entraîner de la confusion chez vos utilisateurs. Vous avez juste besoin d'ajouter une logique pour contrôler quand cela devrait arriver et vous êtes prêt.

+0

Salut googletorp, je voulais afficher la navigation secondaire uniquement dans mes pages Vues, ​​mais la suggestion de Mac pour utiliser menu_secondary_links() dans le views.tpl.php a fonctionné parfaitement et pour le moment c'est plus facile que d'utiliser les fonctions de pré-traitement car je viens juste de commencer en utilisant Drupal. Merci beaucoup pour votre aide. – screenm0nkey

0

Vous pouvez utiliser le code suivant pour afficher le menu secondaire en tout état

function YourTheme_preprocess_views_view(&$vars) 
{ 
    $menu_sec = menu_navigation_links('menu-secondary'); 
    $vars['custom_menu'] = theme('links__menu-secondary', array('links' => $menu_sec)); 
} 

ou vous pouvez même utiliser d'autres fonctions de pré-traitement en fonction de vos besoins.

En outre, vous pouvez l'appeler .tpl.fichier php en utilisant:

<?php 
    $menu_sec = menu_navigation_links('menu-secondary'); 
    print theme('links__menu-secondary', 
     array(
      'links' => $menu_sec, 
      'attributes'=>array(
       'class' => array('nav', 'nav-pills', 'p-f-subfilter'), 
      ) 
     ) 
    ); 
?> 
Questions connexes