0

現在問題が発生しています。Drupal7を使用していますが、メインメニューのリンクを追加/置換する方法がわかりません。ユーザーがログインしているかどうかに関係なく、リンクのラベルを変更したいのですが。

それがあります、それは私のメニューを表示し<ul>ます<li>

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

そのため、そのメニューにもう1つリンクを追加しようとしています。(そしてそれは機能しません)

//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 に答える