0

我现在面临一个问题,我正在使用 Drupal 7,但我不知道如何在主菜单中添加/替换链接。如果用户已登录,我希望更改链接的标签。

有它,它显示我的菜单<ul><li>

$menu=menu_tree_output(menu_tree_all_data('main-menu'));
print drupal_render($main_menu);

因此,我尝试在该菜单中再添加一个链接。(它不起作用)

//test if logged in on not
global $user;
$path=($user->uid)?'user/'.$user->uid.'/edit':'user/login';
$title=($user->uid)?'My account':'Loggin';

//item to add to my main-menu
$item=array(
  'link'=>array(
     'menu_name'=>'main-menu',
     'link_path'=>''.$path.'',
     'link_title'=>''.$title.'',
     'hidden'=>0,
     'title'=>''.$title.''),
  'below'=>array()
);
$menu=menu_tree_all_data('main-menu');
$menu[]=$item;
$main_menu = menu_tree_output($menu);

我希望我的问题很清楚,并感谢您的帮助。

4

2 回答 2

2

无需通过代码执行此操作...只需使用 UI 将“登录”和“注销”链接添加到主菜单,并使用适当的路径(用户/登录,用户/注销),Drupal 的权限系统将采用照顾其余的。

由于经过身份验证的用户无权访问 /user/login,而匿名用户无权访问 /user/logout,因此您正在寻找的效果会自然而然地发生。

于 2012-12-11T12:04:46.883 回答
0

我做了同样的事情,但使用了 JQuery 和 css:检查正文是否有“登录”类,然后我使用了:

$('ul.dropmenu').append('<li class="loggedInOverride">' + '<a href="/logout">' + 'Log out' + '</a>' + '</li>');

至少对我来说容易多了。这里的主要原因是我有一个内部部分的自定义菜单,它不是“主要”链接导航。所以这个想法可能也适用于主要或次要链接。

于 2013-03-11T20:36:12.427 回答