Припустимо, ви хочете створювати матеріали, в яких назва має складатися з двох полів. Працювати з тегами title можна за допомогою модуля Page Title, в якому можна задавати шаблони з токенами для тега title різних типів сторінок, але він не працює з тегами h1. Для роботи з обома тегами title і h1 існують Title field UI, Title Override, але якщо вдумливо прочитати сторінки цих модулів або спробувати, то годі й знайти рішення цієї конкретної проблеми.
Зокрема Page Title не вміє використовувати умовні токени (якщо не встановлений спеціальний модуль), тому шаблон виду:
[Node: field_cities] - [node: title] | [Site: name]
може створювати заголовки типу: [node: field_cities] - Відпочинок в Туреччині | Бонвояж. Тобто, якщо не заповнений жоден термін в поле Міста, то заголовок сторінки перетворюється в зовсім неправильний.
Завдання. на сторінці матеріалу певного типу відображати заголовок в тегах title і h1 з поля Title (назва) матеріалу і з іншого поля типу термін таксономії.
Складовою заголовок матеріалу з двох полів в Drupal можна зробити за допомогою наступного хука: MYTHEME_preprocess_page ($ vars) в файлі template.php теми, який і буде використаний в нашому прикладі. А також можна і в інших хуках, наприклад _node_view_alter, _preprocess_html.
Коли стане в нагоді цей скрипт
Наприклад, ви створюєте товар з назвою: The Best (Russian Edition) - і вибираєте серед термінів таксономії: Сергій Лазарєв. Тоді при відображенні товару буде наступне назва: Сергій Лазарєв - The Best (Russian Edition).
Таким чином, ці скрипти формують назву в тегах titile і h1 з різних полів матеріалу на сторінках матеріалів. а також на станицях уявлень (Views).
Хукі 1, 2 і 3
Увага: в першому і другому прикладах використовуються елементи масиву $ vars, що додаються модулем Page Title, тому для використання 1го та 2го коду включите Page Title. Або ви можете виправити інструкції присвоєння змінних на інструкцію виклику функції drupal_set_title ($ string) як це зроблено в третьому хук.
Третій код не вимагає PageTitle, тому він швидше і оптимальніше. У третьому хук використовується команда drupal_set_title () для установки заголовка.
Як користуватися кодами
У кодах використовується поле cities. яке вам потрібно замінити на машинне ім'я вашого поля типу термін таксономії. Якщо потрібно подивитися всі поля, включите модуль Devel і введіть на початку коду:
Також відбувається перевірка типу матеріалу: tour. Його теж ви можете замінити на свої типи, в яких є потрібні вам поля.
Перший хук потрібно розмістити у файлі template.php вашої теми в функції з заголовком
якщо є така функція, вставте цей код в кінець, якщо немає такої функції, то додайте її.
Другий хук views_pre_render ($ view) - для редагування заголовків матеріалів в уявленнях (Views). Якщо функція з таким заголовком є у вашій темі, допишіть в кінець, якщо немає - вставте код і правильно назвіть.
Третій хук теж потрібно або додати в потрібну функцію, або скопіювати повністю, створивши цю функцію.
Двох однакових функцій в файлі template.php бути не повинно.
додати в заголовок матеріалу імена термінів таксономії на сторінці матеріалу, вимагає Page Title
додати в заголовок матеріалу імена термінів таксономії при відображенні у Views, вимагає Page Title
додати в заголовок матеріалу імена термінів таксономії на сторінці матеріалу
Замініть змінну cities, назва поля field_cities, а також ім'я матеріалу tour - на необхідні вам.
У хук views_pre_render використовуються поля, які вам потрібно обов'язково додати, щоб код був робочим і правильно редагувати імена полів.