Hook_menu选择性菜单选项卡显示

时间:2012-11-19 11:57:54

标签: filter drupal-7 hook-menu

我使用以下代码为我的节点类型包含自定义选项卡:

function mymodule_menu(){
    $items['node/%node/register']   =   array(
        'page arguments' => array(1),
        'access arguments'  =>  array('access content'),
        'type'  =>  MENU_LOCAL_TASK,
        'title' =>  'Register',
    );
    return $items;
}

这样可以为每个节点类型添加寄存器选项卡。 但是,我需要仅为页面类型包含该选项卡,并将其排除在所有其他类型(如文章类型等)上。

有人可以提供一些方向吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是提供自己的访问回调来检查节点类型,例如

function mymodule_menu(){
  $items['node/%node/register'] = array(
    'page arguments' => array(1),
    'access callback' => 'mymodule_node_register_tab_access',
    'access arguments' => array(1),
    'type'  =>  MENU_LOCAL_TASK,
    'title' =>  'Register',
  );
  return $items;
}

function mymodule_node_register_tab_access($node) {
  $valid_types = array('page');
  return in_array($node->type, $valid_types);
}