Програмно змінити назву матеріалу в тегах title і h1, tlito

Припустимо, ви хочете створювати матеріали, в яких назва має складатися з двох полів. Працювати з тегами 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 використовуються поля, які вам потрібно обов'язково додати, щоб код був робочим і правильно редагувати імена полів.