Как добавить форму в качестве элемента меню в Drupal 7?

Я работаю с OpenID Connect модуль для подключения сайта Drupal 7 с поставщиком OpenID в качестве клиента. До сих пор мне удалось запустить и запустить модуль, регистрируя и регистрируя пользователей у моего провайдера, просто используя готовые функциональные возможности и предоставленный блок входа в систему.

То, чего я сейчас пытаюсь достичь, это разместить форму, которую блок, предоставленный модулем, отображает в виде ссылки в моем главном меню.

Я смог добавить ссылку в моем меню, изменив модуль hook_menu вот так:

$items[''] = array(
'title' => 'OpenID Connect',
'page callback' => 'drupal_get_form',
'page arguments' => array('openid_connect_login_form'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
);

Но это не работает, как задумано.

Я хотел бы либо вставить форму, которую модуль отображает в блоке, в пункт меню, либо создать ссылку, которая работает так же, как форма, созданная в блоке.

Кроме того, я мог бы визуализировать блок со скрытой формой и создать ссылку меню, которая не перенаправляет на страницу, а просто находит и отправляет форму через JS, но я также не знаю, как это сделать.

Я относительно новичок в Drupal и у меня кружится голова от всего чтения, поэтому я прихожу к вам, друзья по интернету, за помощью; Любой совет и направление приветствуются.

Заранее спасибо.

0

Решение

hook_menu позволяет определять пункты меню и обратные вызовы страниц.
Вы должны добавить путь к странице внутри ваших $ items следующим образом: $ items [‘path’].
Затем очистите кеш, чтобы изменения вступили в силу, и получите доступ к этому пути.

0

Другие решения

Вам нужно реализовать hook_menu в вашем модуле. Пример:

<?php
function mymodule_menu() {

$items['mymodule/links'] = array(
'title' => 'OpenID Connect',
'page callback' => 'drupal_get_form',
'access arguments' => array('openid_connect_login_form'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
?>

Пожалуйста, очищайте кеш после любых изменений в коде или настройке друпала.

0

По вопросам рекламы [email protected]