2010-08-03 8 views
0

Quelqu'un pourrait-il me dire comment créer un lien dynamique dans Drupal? Je souhaite créer un lien vers une liste d'appartenance à un groupe. J'ai créé la vue avec l'argument. Comment créer le lien de l'élément de menu vers la vue? Ce sera différent selon le groupe.Créer un lien dynamique dans drupal

Merci

Répondre

0

En résumé, vous ne pouvez pas. Le système de menu de Drupal met en cache le menu entier: les éléments de menu ne peuvent pas apparaître différemment pour différents utilisateurs (bien que vous puissiez définir des permissions d'accès pour eux). Si vous voulez que les éléments de menu apparaissent, vous devez soit les enregistrer dans hook_menu() (qui n'est appelée que lorsque le menu est reconstruit), ou vous devez les ajouter manuellement dans l'administration du menu.

La page du manuel sur le Menu system fournit plus d'informations à ce sujet. Toutefois, vous pouvez créer un faux menu en utilisant un affichage de bloc dans votre vue et le style de ligne de la liste HTML. Ceci est utile si vous souhaitez avoir un bloc de liste de catégories, en dehors de la structure du menu principal.

+0

Merci Mark pour votre réponse. J'aime ton idée sur le faux menu et je m'y pencherai. Je n'ai pas tellement d'expérience avec la programmation drupal mais je peux aussi essayer d'utiliser hook_menu - je vais devoir apprendre à un moment donné! – Ben

0

Il semble que vous ayez besoin d'utiliser des arguments de vue pour filtrer vos résultats si vous extrayez différents «groupes» en fonction d'une seule vue. Je voudrais commencer ici pour en savoir plus sur les arguments de vues: http://drupal.org/node/54455, si c'est en effet ce que vous essayez d'accomplir.

EDIT:

Je suppose que cela aiderait si je lis bien la question. Il semble que vous utilisiez déjà des arguments pour votre opinion. Dans ce cas, vous avez déjà créé des liens dynamiques vers votre page. Essayez de mettre les arguments pour chaque "groupe" à la fin de l'URL. Par exemple, si vous avez créé un affichage de page avec un chemin d'actualités, vous pouvez passer l'argument en l'ajoutant à la fin de l'URL. Donc, si vous avez créé un argument en utilisant "Node: Année créée", vous pouvez filtrer ce contenu en mettant quelque chose comme example.com/news/2009 pour accéder uniquement aux nœuds qui ont été créés en 2009. Ce que vous passez dépend du type d'argument que vous avez créé.

+0

Merci pour votre réponse, j'ai réalisé plus tard je pourrais mettre l'argument à la fin, mais je voulais regarder en utilisant le même menu pour tous les groupes, de sorte que le chemin du menu devrait changer automatiquement en fonction du groupe consulté. Cela permettrait aux administrateurs de créer l'élément de menu à chaque fois. – Ben

1

Je crée un lien de redirection pour de telles situations. Par exemple, si je veux un lien de menu pour diriger l'utilisateur vers leur page d'édition de l'utilisateur, je hook_menu mettre en œuvre() comme suit:

function my_module_menu() 
{ 
    $menu['user/cp'] = array 
    (
    'title' => 'User Control Panel', 
    'page callback' => 'user_cp_redirect_page', 
    'access callback' => 'user_is_logged_in', 
    'type' => MENU_CALLBACK, 
); 

    return $menu; 
} 

Ensuite, je mets le rappel de page pour ressembler à ceci:

function user_cp_redirect_page() 
{ 
    global $user; 

    drupal_goto('user/' . $user->uid . '/edit'); 
}