Redirect Drupal 6:如何添加到hook_menu()的链接?

Redirect Drupal 6:如何添加到hook_menu()的链接?,redirect,drupal,drupal-6,drupal-webform,hook-menu,Redirect,Drupal,Drupal 6,Drupal Webform,Hook Menu,我有自己的模块,我实现了一个hook_菜单,我希望一个菜单项重定向(菜单必须保持活动)到现有的webform页面,该页面是:?q=node/add/webform $items['adminQuestion/create'] = array( 'title' => t('Crear Cuestionarios'), 'page callback' => "What i put here?", 'page arguments' => array

我有自己的模块,我实现了一个
hook_菜单
,我希望一个菜单项重定向(菜单必须保持活动)到现有的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,
  );
与要重定向到的路径一起使用作为参数:

$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。

如果您指的是HTTP重定向,您可以简单地使用
Drupal_goto('path/to/webform')
但这毫无意义,因为您可以直接使用webform路径。在我看来,您需要的是一个类似Web窗体的API,它是节点加载(),因此Web窗体将加载到您的菜单路径中:

// 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,
);

hook\u theme()
的Webform实现负责将节点主题化为表单。或者,如果可能的话,您也可以更改webform路径。

阅读这些注释,我觉得您好像想创建/node/add/webform的路径别名。您不需要实现hook_菜单

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

以下是答案:

$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的别名。
谢谢

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

$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,
);

有没有办法使菜单在我点击该链接时不会折叠?为什么当你点击它时菜单会折叠?你的意思可能是,菜单应该在重定向到的页面上保持“活动”状态?如果是这样:重定向不是你首先想要的。那么请更新你的问题。相反,您需要一个别名/重复菜单项:一个与另一个菜单项类似的菜单项;这与重定向完全不同。是的,当我在另一个页面时,我希望菜单保持活动状态,就像节点加载功能一样。我不使用node_load,因为我不知道nid。实际上,根据drupal编码标准,你应该在特定情况下使用驼峰大小写,比如类名。你的答案是我在drupal 7上唯一适用的答案。多谢各位!如何找到Web表单创建页面的nid?AFAIK Web表单有自己的节点类型,只需转到
admin/content/node
,找到您的Web表单节点并检查其nid。(例如,检查编辑url)不是webform,而是webform管理页面(node/add/webform)。因此,只需启用路径模块并转到
admin/build/path
,然后为
node/add/webform
创建一个
adminQuestion/create
别名。感谢所有评论,我制作了别名,但我不知道如何从hok_菜单调用别名…我需要hook_菜单,因为它是更大模块的一部分。我不知道如何加载没有nid的页面,因为这是一个webform管理页面。