I tried to add a new tab to a specific content type 'abc', here is the code, but it doesn't work, the tab shows on all the nodes. Can anybody help with it? Thank you!
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';
}
The access callback
is the right place to make the decision on whether to display the tab, but the code is just a one-liner:
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');
}
Remember to clear the caches once you've changed the code in hook_menu()
for the changes to take effect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With