Drupal 6: Как я могу добавить ссылку на hook_menu ()? - PullRequest
2 голосов
/ 30 марта 2011

У меня есть свой собственный модуль, и я реализовал hook_menu, я хочу, чтобы один пункт меню перенаправлял (меню должно оставаться активным) на существующую страницу веб-формы, эта страница:? Q = узел / добавить / веб-форма .

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

3 голосов
/ 30 марта 2011

Используйте 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 крайне не рекомендуется в любом коде.

1 голос
/ 07 апреля 2011

Вот ответ:

$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 - псевдоним узла / add / webform.Спасибо

1 голос
/ 30 марта 2011

Если вы имеете в виду перенаправление HTTP под перенаправлением, вы можете просто использовать drupal_goto('path/to/webform'), но это не имеет смысла, поскольку вы можете использовать путь веб-формы напрямую. IMO, что вам нужно, это drupal_get_form() -подобный API для Webform, который является 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() заботится о размещении узла в форме. В качестве альтернативы вы можете просто изменить путь веб-формы, если это возможно в вашем случае.

0 голосов
/ 16 октября 2012

Вот что я сделал, чтобы сделать страницу добавления узла частью группы вкладок

$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,
);
0 голосов
/ 31 марта 2011

Читая комментарии, мне кажется, что вы хотите создать псевдоним пути к / node / add / webform.Вам не нужно реализовывать hook_menu.

Вы создаете псевдонимы в / admin / build / path / add (убедитесь, что у вас включен модуль path).

...