2012-07-15 20 views
11

Belirli bir içerik türüne 'abc' yeni bir sekme eklemeyi denedim, kod burada, ancak çalışmıyor, sekme tüm düğümlerde gösteriliyor. Herkes yardım edebilir mi? Teşekkür ederim!Belirli bir içerik türü için Drupal 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'; 
} 

cevap

12

access callback sekmeyi görüntülemek için olmadığına karar vermek için doğru yerdir, ancak kod sadece tek satırlık geçerli:

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

Eğer ettik kez önbelleklerini temizlemek için hatırla Değişikliklerin etkili olması için kodu hook_menu()'da değiştirdi.

+0

Çalışıyor! Test sayfası yer paylaşımında nasıl kalabilir? – user1480765

+2

[hook_admin_paths()] 'a bir göz atın (http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_admin_paths/7) – Clive

+0

Bir kenara göre, aynı zamanda Şu anda oturum açmış olan kullanıcının geçerli düğümüne erişimi belirleyen geri aramada bir node_access ('view', $ node) 'çeşidi kullanın. –