2012-07-15 8 views
11

मैंने एक विशिष्ट सामग्री प्रकार 'एबीसी' में एक नया टैब जोड़ने की कोशिश की, यहां कोड है, लेकिन यह काम नहीं करता है, टैब सभी नोड्स पर दिखाता है। क्या कोई इसके साथ मदद कर सकता है? धन्यवाद!विशिष्ट सामग्री प्रकार के लिए ड्रूपल 7 hook_menu

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'; 
} 

उत्तर

12

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() में कोड बदल दिया।

+0

यह काम करता है! परीक्षण पृष्ठ ओवरले पर कैसे रह सकता है? – user1480765

+2

[hook_admin_paths()] पर एक नज़र डालें (http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_admin_paths/7) – Clive

+0

एक तरफ के रूप में, यह भी संभव है कॉलबैक में 'node_access ('view', $ node) 'का एक संस्करण का उपयोग करें जो वर्तमान में लॉग इन उपयोगकर्ता के लिए वर्तमान नोड तक पहुंच निर्धारित करता है। –

संबंधित मुद्दे