12

特定のコンテンツタイプ「abc」に新しいタブを追加しようとしました。これがコードですが、機能しません。タブはすべてのノードに表示されます。誰かがそれを手伝うことができますか?ありがとうございました!

function addtabexample_menu() {
  $items=array();

  $items['node/%node/test'] = array(
  'title' => 'Test',
  'page callback' => 'handle_test',
  'page arguments' => array('node', 1),
  'access arguments' => array('access content'), 
  'type' => MENU_LOCAL_TASK,
  'weight' => 100,
  );
return $items;
}

function handle_test($node){

  $result='hi';
  if ($node->type == 'abc') {
    $result='I am working';
}
4

1 に答える 1

13

access callbackタブを表示するかどうかを決定するのに適切な場所ですが、コードはワンライナーです。

function addtabexample_menu() {
  $items = array();

  $items['node/%node/test'] = array(
    'title' => 'Test',
    'page callback' => 'handle_test',
    'page arguments' => array('node', 1),
    'access callback' => 'addtabexample_access_callback',
    'access arguments' => array(1), 
    'type' => MENU_LOCAL_TASK,
    'weight' => 100,
  );

  return $items;
}

function addtabexample_access_callback($node) {
  return $node->type == 'abc' && user_access('access content');
}

コードを変更したらhook_menu()、変更を有効にするためにキャッシュをクリアすることを忘れないでください。

于 2012-07-15T15:21:28.537 に答える