我尝试将新选项卡添加到特定的内容类型“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';
}
最佳答案
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()
中的代码,便要清除缓存,以使更改生效。关于Drupal 7 hook_menu用于特定内容类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11492216/