ノードビューにローカルタスクタブを追加する方法 [閉まっている]


8

ノードの「表示」タブと「編集」タブに追加のタブを追加しようとしています。

モジュールが有効になり、キャッシュをクリアしましたが、新しいタブが表示されません。何が欠けていますか?

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();

  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'page callback' => 'add_performance_action',
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

/**
* Page callback.
*/
function add_performance_action() {
  return t('Hello');
}

ルートは機能しますか?「/ node / 1 / performance」に移動すると、「Hello」が返されますか?
Les Lim

いい視点ね。いいえ、通常どおりノードを表示するだけです。
pushka 2013年

4
投稿したコードには何も問題はないので、通常のチェックを実行します。タイプミスがないかモジュールファイルのファイル名を調べ、実際にキャッシュテーブルを調べて、それらがクリアされていることを確認します。など
Les Lim

1
こんにちは-コードではないことを知って安心します。最後に、モジュールを無効にしてから再度有効にすることで機能させました。ルーターテーブルが有効になると更新されるためでしょうか?とにかく...それは今動作します。
pushka 2013

回答:



0

コードは良さそうですが、上のhook_menuを変更するたびに、admin / config / development / performanceでDrupalキャッシュをクリアすることを忘れないでください。

頭に浮かぶ代替案は、使用するメニュー項目がすでに存在している可能性があるため、hook_menu_local_tasks_alterを使用することです。

これを試すこともできます:

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();
  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'access callback' => 'your_module_access_check',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function your_module_access_check($node) {
  if ($node->type == 'page') {
    return TRUE;
  }
  return FALSE;
}

ありがとう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.