Виводимо блок програмно до Drupal, Сергій Бєляєв

Завдання – вивести будь-який блок у шаблоні page.tpl.php, не розміщуючи його в регіоні

У більшості випадків при створенні сайту на Drupal достатньо стандартного функціоналу, що дозволяє створити блок і призначити регіон у розділі admin/structure/block. Однак іноді виникає завдання вивести один і той же блок у різних областях макета сайту, наприклад, у шапці головної сторінки та у бічній колонці або підвалі внутрішніх сторінок. Звичайно, можна створити кілька однакових блоків і призначити їм різні регіони та налаштування відображення на тих чи інших сторінках. Але якщо контент у цих блоках передбачається змінювати, це тягне у себе необхідність редагування не одного, а двох і більше блоків.

Перший спосіб - виводимо блок разом з обгорткою та заголовком

Даний спосіб дозволяє отримати та вивести у шаблоні повний html-код блоку (відповідно до шаблону block.tpl.php). Там page.tpl.php, де необхідно вивести блок, поміщаємо код:

Замість MODULE_NAME підставляємо назву модуля, за допомогою якого створено блок – якщо ви додали блок у розділі «Структура – ​​Блоки», це block. Далі необхідно дізнатись параметр delta блоку. Якщо ви проінспектуєте код блоку, наприклад Firebug, то знайдете його id виду block-block-1. В даному випадку delta блоку дорівнює 1. Параметр delta далеко не завжди є числом, якщо модуль був створений, наприклад, за допомогою модуля views, його delta буде виду «news-block»). Отже, для блоку з id block-block-1 вказаний вище код набуде вигляду:

Другий спосіб – виводимо лише вміст блоку

Нам не завжди потрібно виводити обгортку та заголовок блоку. Наприклад, для форми пошуку ми можемо обійтися без них. У цьому випадку використовуємо функцію Drupal API module_invoke():

Обидва способи можна застосовувати, не поміщаючи код шаблон безпосередньо, а попередньо додавши змінну з html блоку в page.tpl.php за допомогою функції template_preprocess_page. Про те, як додати до цієї функції змінну, можна прочитати, наприклад, тут.