Здравствуйте.
Стандартно, в созданном меню при выборе пункта открывается страница содержимого /node/number. Страница содержит статический контент. А нужно при выборе пункта меню сформировать содержание по запросу к бд. Причём, не простой select, а select, возвращённый процедурой бд. Т. е. выполнить php-code при выборе пункта меню.
Посоветуйте, кто знает, модуль drupal. Не нашел ничего подходящего на https://www.drupal.org/project/project_module
Комментарии
Модуль views легко сформирует нужный запрос в бд, с учётом данных из url.
О процедурах. Хотя в друпале вся бизнес-логика хранится не с базе.
Хотите использовать узкоспециализированное решение? Писать свою модуль для этого.
спасибо, VVS, ссылочка хорошая.
да, view хорош, но нужна хранимая процедура.
А нужен ли Вам Друпал? Может ну его? Он Вам только мешает, кмк.
marassa, примерно так. Но хочу добить проблему: можно ли в drupal реализовать то, что мне нужно ?
Да наверняка можно, понять бы ещё в деталях что именно нужно Чтобы при выборе пункта меню вызывался произвольный php-код, нужно написать собственный контроллер для нужного роута. Естественно, никакого специального "модуля" для этого нет - нужно программировать.
"собственный контроллер для нужного роута". контроллер - это обработчик события, напр., клика на пункт меню ?
т.е. мне нужно искать модуль что-то вроде drupal api ?
ну, а в деталях - всё просто: визуализировать select процедуры бд. это может быть и набор строк и xml и html.
у нас принято указывать версию друпал
Контроллер - это класс, отвечающий за обработку заданного пути (адреса). Пункт меню - это всего лишь один (из многих) способ загрузить страницу с заданным адресом. Если я правильно понимаю задачу, меню тут вообще ни при чем, Вам нужно сделать так, чтобы при выдаче HTTP-запроса на определенный путь выполнялся некий кастомный PHP-код, который сделает какие-то кастомные запросы к БД и сформирует какой-то кастомный ответ. Для этого Вам нужно придумать этот кастомный адрес, по которому будет все это делаться, и написать контроллер для этого адреса. А уж запихнуть этот адрес в меню - дело совсем нехитрое. Никакой модуль Вам для этого не нужен (да его и нет и не может быть), нужно учиться программировать контроллеры для Друпал 8/9.
marassa, всё понятно.
спасибо, а то я начал, по малодушию, сомневаться в drupal.
да пребудет с Вами сила.
прошу простить, drupal-9.0.6
https://niklan.net/blog/66
Вот тут смотрите, как создать свой модуль и контроллер. Ничего сложного. Просто в методе, отдающем контент, вызовите все паши процедуры.