динамическое формирование контента

Главные вкладки

Аватар пользователя cornet cornet 4 октября 2020 в 12:09

Здравствуйте.
Стандартно, в созданном меню при выборе пункта открывается страница содержимого /node/number. Страница содержит статический контент. А нужно при выборе пункта меню сформировать содержание по запросу к бд. Причём, не простой select, а select, возвращённый процедурой бд. Т. е. выполнить php-code при выборе пункта меню.

Посоветуйте, кто знает, модуль drupal. Не нашел ничего подходящего на https://www.drupal.org/project/project_module

Комментарии

Аватар пользователя VVS VVS 4 октября 2020 в 12:34

Модуль views легко сформирует нужный запрос в бд, с учётом данных из url.

О процедурах. Хотя в друпале вся бизнес-логика хранится не с базе.

Хотите использовать узкоспециализированное решение? Писать свою модуль для этого.

Аватар пользователя marassa marassa 4 октября 2020 в 15:08

cornet wrote: нужно при выборе пункта меню сформировать содержание по запросу к бд. Причём, не простой select, а select, возвращённый процедурой бд. Т. е. выполнить php-code при выборе пункта меню.

cornet wrote: нужна хранимая процедура.

А нужен ли Вам Друпал? Может ну его? Он Вам только мешает, кмк.

Аватар пользователя marassa marassa 4 октября 2020 в 17:06

cornet wrote: можно ли в drupal реализовать то, что мне нужно ?

Да наверняка можно, понять бы ещё в деталях что именно нужно Wink Чтобы при выборе пункта меню вызывался произвольный php-код, нужно написать собственный контроллер для нужного роута. Естественно, никакого специального "модуля" для этого нет - нужно программировать.

Аватар пользователя cornet cornet 4 октября 2020 в 19:01

"собственный контроллер для нужного роута". контроллер - это обработчик события, напр., клика на пункт меню ?
т.е. мне нужно искать модуль что-то вроде drupal api ?
ну, а в деталях - всё просто: визуализировать select процедуры бд. это может быть и набор строк и xml и html.

Аватар пользователя marassa marassa 4 октября 2020 в 21:12

Контроллер - это класс, отвечающий за обработку заданного пути (адреса). Пункт меню - это всего лишь один (из многих) способ загрузить страницу с заданным адресом. Если я правильно понимаю задачу, меню тут вообще ни при чем, Вам нужно сделать так, чтобы при выдаче HTTP-запроса на определенный путь выполнялся некий кастомный PHP-код, который сделает какие-то кастомные запросы к БД и сформирует какой-то кастомный ответ. Для этого Вам нужно придумать этот кастомный адрес, по которому будет все это делаться, и написать контроллер для этого адреса. А уж запихнуть этот адрес в меню - дело совсем нехитрое. Никакой модуль Вам для этого не нужен (да его и нет и не может быть), нужно учиться программировать контроллеры для Друпал 8/9.