Відокремлюємо логіку від шаблону в drupal
Персональна сторінка shra, блог фріленсерів, веб-розробника на PHP. Тут я ділюся своїм досвідом і думками, проводжу досліди над людьми, збираю нематеріальні свідоцтва власної дурості. Використовуючи приклади програмного коду з даного сайту, ви приймаєте всю відповідальність за можливі наслідки їх використання, включаючи ваше психічне здоров'я і інтереси третіх осіб.
Блог / drupal / Отделяем логіку від шаблону в Drupal
Напевно ви чули про підхід MVC (model-view-controller) в веб-програмуванні. В Drupal для реалізації даного підходу є всі необхідні інструменти. При цьому рівень контролера здебільшого вже реалізований, тому що движок пропонує вам реалізувати логіку програми у вигляді написання коду «зачіпок» (hooks). Вам залишається відокремити логіку (модель) від шаблону (подання).
Сформулюємо навчальне завдання.
На окремій сторінці сайту виведемо таблицю квадратів чисел з якогось діапазону всередині [0 ... 1000]. Оформимо це як модуль mymodule.
Створюємо розділ і пишемо логіку
По-перше, нам потрібно оголосити розділ, для чого ми використовуємо hook_menu.
У функції ми реалізували всю логіку: перевірили вхідні параметри, і передали їх в шаблон. Але де брати цей шаблон, які у нього параметри - Drupal не знає. Розповімо Drupal, де знаходяться шаблони. Ці відомості надаються через hook_theme.
Оголосимо шаблони в модулі, створимо файли шаблонів
Я хочу розмістити файли шаблонів в окремій папці активної теми оформлення. Шаблонів буде два. загальний шаблон HTML таблиці, який ми вже задіяли в _mymodule_page (), і шаблон рядків таблиці, який буде викликати з першого шаблону для кожного рядка даних при складанні таблиці.
У документації hook_theme має ряд параметрів, які ми не використовуємо. Тому я їх на став перераховувати.