Способи темізаціі сторінок в drupal

Для темізаціі Drupal можна використовувати як модулі, так і вручну створювати файли шаблонів, які будуть застосовуватися в тому чи іншому випадку. Наприклад можна створити шаблон для Ноди певного типу. Припустимо що є нода, яка містить додаткові поля. Наше завдання впорядкувати їх. Давайте створимо новий тип Ноди, назвемо його «Анкета». Додамо до неї наше поле «Пол», поле «Ім'я» і прикріпимо 3 зображення.

Способи темізаціі сторінок в drupal

Я створив всі необхідні нам поля. Тепер створимо ноду цього типу.

Після створення Ноди вона виглядає приблизно так.

Способи темізаціі сторінок в drupal

Давайте змінимо порядок виведення полів, вибудуємо фото в ряд і взагалі більш барвисто оформимо цю сторінку.

Для створення шаблону Ноди слід створити файл з ім'ям node--<имя типа ноды>.tpl.php і помістити його в папку поточної теми. В папці теми також може бути папка templates - можна помістити в неї. У нашому прикладі будемо її і використовувати.

Створимо файл node - anketa.tpl.php .Содержімое файлу візьмемо з файлу node.tpl.php. розташованому в папці modules / node або в папці templates поточної теми.

Способи темізаціі сторінок в drupal

Додамо в цей файл довільний html код, щоб упевнитися, що ми все робимо правильно.

Способи темізаціі сторінок в drupal

Очистимо кеш Друпал і оновимо ноду в браузері.

Способи темізаціі сторінок в drupal

Як бачите - все успішно вивелося. Йдемо далі.

Функція render перетворює цей масив в кінцевий html код. Але ніщо не заважає нам вивести всю інформацію про масив $ content. Виведемо її функцією debug.

Перед початком роботи визначимося який вид нам потрібен. Давайте візьмемо за макет таке розташування інформації на сторінці.

Способи темізаціі сторінок в drupal

Створимо каркас - розташуємо діви і задамо їм стилі.

Наші стилі писатимемо в новому файлі. Створимо його в папці теми в папці css.

Підключити його можна двома способами:

  1. Підключимо функцією drupal_add_css. Викличемо цю функцію в файлі template.php. передавши їй як аргумент шлях до файлу стилів.
  2. Додати рядок в info файлі теми.

Використовуємо другий спосіб.

Способи темізаціі сторінок в drupal

Чистимо кеш і перевіряємо вихідний код сторінки.

Помилок допущено не було і файл успішно підтягнувся.

Основний контент у нас не гумовий.

Дамо під кожне фото 33% ширини основного блоку контенту.

66% під вміст Ноди і по 33% для імені та статі.

У tpl файлі шаблону будемо працювати в діві з класом content.

Способи темізаціі сторінок в drupal

Створимо такою верстку.

Я створив мінімальну кількість блоків і стилів. Даний етап повністю на вашу фантазію та вміння.

І написав такі стилі.

Для відображення картинок використовуємо стиль відображення medium. він вже є в системі. Застосовуємо його в налаштуваннях відображення поля.

Способи темізаціі сторінок в drupal

Зображення успішно вивелися.

Аналогічно функцією render виводимо інший контент.

Все б нічого, але превью Ноди буде непоказним. Через те, що ширина блоку з класом user-data має ширину 66%.

Способи темізаціі сторінок в drupal

Для визначення того, що ми бачимо в браузері - тизер або повністю ноду в файлі шаблону Ноди є змінна $ teaser. Якщо вона дорівнює 1 - значить перед нами тизер Ноди. Напишемо в шаблоні просте умова.

Способи темізаціі сторінок в drupal

Інші елементи сайту темізіруются подібним чином. Вони мають шаблони з інтуїтивно зрозумілим ім'ям, що закінчується на .tpl.php

У цих шаблонах зазвичай задокументовані всі доступні в них змінні. Тепер ви розумієте за яким принципом можна темізіровать шаблон.

Добрий вечір. А, можна питання не зовсім в тему, скажіть, а як можна створити випадають меню не використовую модулів, а повністю самому, програмно?

Можна взяти будь-який скрипт меню, що випадає і помістити його в шаблон і виводити там де потрібно.

Дякую за публікацію. Чи є подібний матеріал як вивести програмно вміст масиву $ content файлу page.tpl.php але для drupal 6?

А де саме хочете виводити?
Можете спробувати так:

Я вже вирішив своє питання. Там проблема була в тому що треба було не Page.tpl.php темізіровать а node.tpl.php.

Зробив все по інструкції! Вийшло! потім згадав що не додав ще кілька полів. Додав висновок в тпл і стилі в КСС але знову-додані поля не відображаються. Кеш зрозуміло чистив. В чому може бути проблема?

А ці поля в матеріалі заповнені?
Поставте модуль devel і напишіть в шаблоні dpm ($ content); - і відразу буде ясно яке дані є на сторінці і як з висмикувати.

Застосування шаблонів ніколи не залежала від користувача. Я на 90% впевнений що справа в кеші. Спробуйте відключити кеш, очистити його і подивитися - чи буде все коректно працювати під анонімом.
Потім включити назад.

ага, дякую, з кешем вже погралася якраз.
Переконалася, що темплейт Ноди підчіплює (принтів і Дивов понаставляли), а проблема в тому, що змінна $ node, хоч я знаю, що не розпізнається під анонімом.
Ніякі функції імятеми_препроцесс_нода () нікуди не вписується. Може в цьому проблема?

Схожі статті