2

我有自己的模块,并且我实现了一个hook_menu,我希望将一个菜单项重定向(菜单必须保持活动状态)到现有的 webform 页面,这个页面是:?q=node/add/webform。

$items['adminQuestion/create'] = array(
      'title' => t('Crear Cuestionarios'),
      'page callback' => "What i put here?",
      'page arguments' => array('form_questionnaires'),
      'access arguments' => array('access questionnaires'),
      'type' => MENU_NORMAL_ITEM,
  );
4

5 回答 5

3

drupal_goto与重定向到的路径一起用作参数:

$items['adminQuestion/create'] = array(
  'title' => t('Crear Cuestionarios'),
  'page callback' => 'drupal_goto',
  'page arguments' => array('node/add/webform'),
  'access arguments' => array('access questionnaires'),
  'type' => MENU_NORMAL_ITEM,
);

另请注意,$items['adminQuestions'] 是不好的做法:URL 和路径永远不应该区分大小写:事实上:在 Drupal 中,CamelCase 在任何代码中都是非常不鼓励的。

于 2011-03-30T13:34:40.157 回答
1

如果您的意思是通过重定向进行HTTP 重定向,您可以简单地使用drupal_goto('path/to/webform'),但这没有任何意义,因为您可以直接使用 webform 路径。IMO 你需要的是一个类似drupal_get_form()Webform 的 API node_load(),所以 webform 将被加载到你的菜单路径中:

// Assuming webform node with nid: 237
$items['adminQuestion/create'] = array(
  'title' => t('Create Cuestionarios'),
  'page callback' => 'node_load'
  'page arguments' => array(237),
  'access arguments' => array('access questionnaires'),
  'type' => MENU_NORMAL_ITEM,
);

Webform 实现负责hook_theme()将节点主题化为表单。或者,如果可能的话,您可以更改网络表单路径。

于 2011-03-30T13:48:33.737 回答
1

这是答案:

$items['adminquestion/create'] = array(
  'title' => 'Crear Cuestionarios',
  'page callback' => 'questionnaires_page',
  'access callback' => TRUE,
  'type' => MENU_NORMAL_ITEM,
);


function questionnaires_page() {
    module_load_include('inc', 'node', 'node.pages');
    $output = node_add('webform');
    return $output;
}

其中 webform 是 node/add/webform 的别名。谢谢

于 2011-04-07T13:42:01.320 回答
0

阅读评论,我觉得您想为 /node/add/webform 创建一个路径别名。你不需要实现 hook_menu。

您在 /admin/build/path/add 处创建别名(确保启用了路径模块)。

于 2011-03-31T03:36:41.170 回答
0

这是我为使“添加节点页面”成为选项卡组的一部分所做的工作

$items['mynode/new'] = array(
    'title' => 'New Node',
    'page callback' => 'node_add',
    'page arguments' => array('my_node_type'),
    'access arguments' => array('create my_node_type content'),
    'file' => 'node.pages.inc',
    'file path' => drupal_get_path('module', 'node'),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0,
);
于 2012-10-16T17:41:44.137 回答