【问题标题】:Drupal 7 hook_menu for specific content type特定内容类型的 Drupal 7 hook_menu
【发布时间】:2012-07-14 14:05:09
【问题描述】:

我尝试向特定内容类型“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';
}

【问题讨论】:

    标签: drupal drupal-7 drupal-routes


    【解决方案1】:

    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() 中的代码后清除缓存以使更改生效。

    【讨论】:

    • 顺便说一句,还可以在回调中使用node_access('view', $node) 的变体来确定当前登录用户对当前节点的访问权限。
    • 这正是我需要让一个页面只能从两个特定产品页面访问,谢谢!
    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多