web-dev-qa-db-ja.com

ユーザープロファイルにメニュータブを追加する方法

サイトのユーザープロファイルページに追加のタブ(ダッシュボード)を作成します。 Homebox モジュールがインストールされ、ユーザー用のダッシュボードが作成されました。ダッシュボードには、ユーザー/ダッシュボードからアクセスできます。これどうやってするの?以下のようにしてみました:

  1. Add_menu_tabという名前で作成された新しいモジュール
  2. 次のように書いたadd_menu_tab.moduleファイルで、サイトのユーザープロファイルページに追加のタブ(ダッシュボード)を作成します。 homeboxモジュールがインストールされ、ユーザー用のダッシュボードが作成されました。ダッシュボードには、ユーザー/ダッシュボードからアクセスできます。これどうやってするの?以下のようにしてみました:

  3. Add_menu_tabという名前で作成された新しいモジュール

  4. Add_menu_tab.moduleファイルに、次のように記述しました。

コード:

function add_menu_tab_menu() {
     $items['user/dashboard'] = array(
    'title' => 'Dashboard',
      'type' => MENU_LOCAL_TASK,
      'weight' => 7
    );
    return $items;
  }

メニューがまだユーザープロファイルに表示されません。どうすればよいですか?

2
Ebbin Jose

ダッシュボードはuser/dashboardで作成され、アクセスできると言ったように、カスタムモジュールでhook_menu_altermenu alter API )を使用してメニューを変更し、メニュータイプを変更するだけです。 MENU_LOCAL_TASkへ。

function yourmodule_menu_alter(&$items){
  $items['user/dashboard']['type'] = MENU_LOCAL_TASK;
}

後でキャッシュをクリアすることを忘れないでください;)

2
Shirin Abdolahi

Hook_menuの代わりに hook_menu_alter() を実装する必要があります。

function add_menu_tab_menu_alter(&$items) {
  $items['user/dashboard']['type'] = MENU_LOCAL_TASK;
}

次に、Mołotが提案したように、キャッシュ、少なくともメニューキャッシュをクリアする必要があります。

hook_menu_local_tasks_alter() を使用する別のアプローチもあります。ただし、最初のメソッドは、hook_menuの後で一度だけ呼び出されてデータベースに保存され、後者はローカルタスクがレンダリングされるたびに呼び出されるため、より優れています。

2
Елин Й.