Drupal 6:如何添加指向 hook_menu() 的链接?

发布于 2024-10-27 17:25:35 字数 432 浏览 7 评论 0原文

我有自己的模块,并且实现了一个 hook_menu,我希望将一个菜单项重定向(菜单必须保持活动状态)到现有的 Web 表单页面,该页面是: ?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,
  );

I have my own module and I implemented a hook_menu, I want that one menu-item redirect (The menu has to stay active) to an existing webform page, this page is: ?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,
  );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

怎会甘心 2024-11-03 17:25:35

使用 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 中,在任何代码中都强烈建议不要这样做。

Use drupal_goto with the path to redirect to as parameter:

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

Also note that $items['adminQuestions'] is bad practice: URLS and paths should never be case-sensitive: in fact: in Drupal CamelCase is highly discouraged in any code.

一场信仰旅途 2024-11-03 17:25:35

如果您的意思是通过重定向进行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() 负责对要形成的节点进行主题化。或者,如果可能的话,您可以只更改网络表单路径。

If you mean HTTP redirect by redirect, you can simply use drupal_goto('path/to/webform') but it make no sense since you can use the webform path directly. IMO what you need is a drupal_get_form()-like API for Webform which is node_load(), so webform will be loaded in your menu path:

// 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 implementation of hook_theme() takes care of theming the node to form. Alternatively you can just change webform path, if possible in your case.

榆西 2024-11-03 17:25:35

答案如下:

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

Here is the answer:

$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;
}

where webform is an alias of node/add/webform.
Thanks

旧情勿念 2024-11-03 17:25:35

阅读评论,在我看来,您想创建 /node/add/webform 的路径别名。您不需要实现 hook_menu。

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

Reading the comments, it sounds to me like you want to create a path alias to /node/add/webform. You don't need to implement hook_menu.

You create aliases at /admin/build/path/add (make sure you have the path module enabled).

死开点丶别碍眼 2024-11-03 17:25:35

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

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

Here's what I did to make an 'add node page' part of a tab group

$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,
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文