Drupal 6:我如何添加一个hook_menu()的链接?

时间:2011-03-30 13:16:19

标签: redirect drupal drupal-6 drupal-webform hook-menu

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

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

5 个答案:

答案 0 :(得分: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']是不好的做法:URLS和路径永远不应区分大小写:实际上:在任何代码中都强烈建议不要使用Drupal CamelCase。

答案 1 :(得分:1)

如果您指的是通过重定向 HTTP重定向,则可以简单地使用drupal_goto('path/to/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,
);

hook_theme()的Webform实现负责对要形成的节点进行处理。或者,您可以根据需要更改网络表单路径。

答案 2 :(得分: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的别名。 感谢

答案 3 :(得分:0)

阅读评论,听起来像是要创建/ node / add / webform的路径别名。您不需要实现hook_menu。

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

答案 4 :(得分: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,
);