Персональна сторінка shra, блог фріленсерів, веб-розробника на PHP. Тут я ділюся своїм досвідом і думками, проводжу досліди над людьми, збираю нематеріальні свідоцтва власної дурості. Використовуючи приклади програмного коду з даного сайту, ви приймаєте всю відповідальність за можливі наслідки їх використання, включаючи ваше психічне здоров'я і інтереси третіх осіб.
Блог / drupal / Темізація існуючої форми в Drupal
Form API в Drupal дозволяє дуже гнучко працювати з формами. Не важливо де і в якому модулі була створена форма, ви завжди можете підключити власний файл-шаблон або функцію темізаціі для модифікації виводу цієї форми.
Щоб нам підключити власне оформлення вже існуючої форми, потрібно виконати наступні дії:
- Оголосити шаблон в hook_theme.
- Зачепитися за потрібну форму за допомогою hook_form_alter або hook_form_FORM_ID_alter. Встановити для форми або її елемента ім'я оголошеного в п1. шаблону.
- Реалізувати функцію темізаціі або файл-шаблон.
Ці етапи актуальні для Drupal будь-якої версії (hook_form_FORM_ID_alter з'являється починаючи з 6й версії, тоді як hook_form_alter є і в більш ранніх).
Розберемо кожен з етапів. Наш модуль буде називатися - mymodule.
Темізація в функції.
Шаблон отримає локальну змінну - form. оголошену в hook_theme (). На що варто звернути увагу при роботі з шаблонами?
Акуратно вибирайте імена файлів і імена ключів для масиву в hook_theme. Файли можуть перекрити відомі схеми «suggestions» drupal і ваш шаблон буде використаний не за призначенням :). Так шаблон form.tpl.php буде використовуватися всіма формами проекту.
Тут ми розглянули відразу перший і третій пункти. Залишилося лише сказати пару слів про зачіплюванні до форми.
Підключення шаблону до обраної формі.
Якщо ви вирішили реалізувати зачіпку hook_form_alter (). то вам буде необхідно відфільтрувати потрібну вам форму по її ID: