Drupal 6 - сделать модуль для каждого блока динамической информации? - PullRequest
1 голос
/ 15 марта 2011

У меня есть сайт Drupal 6 с примерно 20 страницами.Внутри каждой страницы мне нужно создать множество виджетов с информацией, хранящейся как в базе данных, так и из внешних веб-сервисов.В большинстве случаев «представления» (из модуля представления ) просто недостаточно для решения этого требования.

До сих пор, каждый раз, когда мне нужен такой виджет, я создаю новый модуль, который реализует hook_block.Затем я перетаскиваю этот новый модуль на нужную панель.Мне нужно будет создать около 20 модулей.Это работает довольно хорошо.Однако я не уверен, что это правильная стратегия drupal, и я хотел бы получить отзывы от опытных разработчиков Drupal.

Ответы [ 2 ]

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

Модуль может выставлять столько блоков, сколько вы хотите (теоретически, admin / build / blocks научит вас иначе;)).

Ознакомьтесь с документацией hook_block () , вам просто нужно расширить свою, чтобы получить информацию о нескольких блоках, а затем решить, какую из них показывать, основываясь на $ delta.

Таким образом, вам не нужно 20 отдельных модулей, может быть, 2-3, и как-то группировать блоки, потому что только один модуль может быть сложно поддерживать. Дело в том, что каждый отдельный модуль делает ваш сайт чуть медленнее (по крайней мере, еще один файл для загрузки, module_implements () должен перебирать каждый модуль для каждого хука и т. Д.).

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

2 голосов
/ 15 марта 2011

Хотя ответ Бердира довольно хороший, я впечатлен, что в нем нет ссылок на какую-либо документацию. hook_block предназначен для нескольких блоков, и они могут совместно использовать функции, которые создают их контент.Страница API хороша, пример, который она дает, определяет два блока одновременно.

Вы должны заметить, что у каждого определенного блока есть дельта (ключ в массиве $ blocks).Вы можете иметь динамические дельты и использовать значения для извлечения данных (например, передавая nid или uid и получая связанный контент).

...