如何将本地任务选项卡添加到节点视图?[关闭]


8

我正在尝试向节点“视图”和“编辑”选项卡添加一个额外的选项卡。

我的模块已启用,并且我已经清除了缓存,但是我的新标签页没有出现。我想念什么?

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();

  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'page callback' => 'add_performance_action',
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

/**
* Page callback.
*/
function add_performance_action() {
  return t('Hello');
}

路线有效吗?如果转到“ / node / 1 / performance”,您是否会收到“ Hello”?
Les Lim

好点子。不,它只是像往常一样显示节点。
pushka 2013年

4
这没有什么错与您发布的代码,所以要通过正常的检查:看是否有误,您的模块文件的文件名,其实看看你的缓存表,以确保他们在清算等
莱斯林

1
嘿,谢谢-确信这不是代码。最后,我通过禁用和重新启用该模块来使其工作。也许是因为路由器表在启用时已更新?无论如何...现在可以使用。
pushka

Answers:



0

您的代码看起来不错,但请记住,在对以上hook_menu进行每次更改后,请在admin / config / development / performance处清除Drupal缓存。

我想到的替代方法是使用hook_menu_local_tasks_alter,因为我们要使用的菜单项可能已经存在。

您也可以尝试一下,希望对您有所帮助:

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();
  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'access callback' => 'your_module_access_check',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function your_module_access_check($node) {
  if ($node->type == 'page') {
    return TRUE;
  }
  return FALSE;
}

谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.