Актуально для версії 2.9.5
Необхідно зробити, щоб в title, description і keywords присутні деякий слово, яке можна відразу скрізь поміняти. Наприклад, у Вас мультісайтового і кожен сайт створений для окремого міста, і Ви хочете, щоб в цих поля були присутні його назву.
В першу чергу, Вам потрібно буде створити кастом, який буде повертати значення полів, і створити системну сторінку з потрібними полями, де буде зберігається ця інформація. Створений макрос можна буде вставити прямо в поле title і він відпрацює нормально, але для полів description і keywords таке рішення не підійде. Потрібно буде написати кастомниє макроси, які знаходити будь-яку мітку в цьому полі, замінювати її на вміст поля системної сторінки, а потім вже виводити.
Для застосування прикладів скопіюйте код в файл /classes/modules/custom.php.
Спочатку створимо тип даних, дочірній "сторінки контенту" і додамо в нього нову групу полів і поля (всі ідентифікатори необхідно ввести на як на скріншоті):
А тепер скопіюємо наступний код в файл /classes/modules/custom.php:
Макрос викликається як% custom getMeta ()%, в ньому 1 параметр, який приймає назву мета тега, вставку для якого необхідно вивести.
Для title його можна застосувати прямо ось так:
А в вихідному коді сторінки з'явиться:
А для description і keywords доведеться написати два кастомних макросу:
Обидва макросу працюють дуже просто - шукають в надійшла рядку марку і змінюють її на результат створеного макросу% custom getMeta ()%.
Викликаються вони як,% custom getDescr ()% і% custom getKeyw ()%. Приймають вони в себе значення полів description і keywords, відповідно. Отримати їх в tpl можна за допомогою системних макросів% keywords% і .escription%, а в xslt їх можна взяти з резалт.
Приклад заповнення полів:
І, як нескладно здогадатися, якщо зробимо наступні виклики в шаблоні (tpl):
Те у вихідному коді сторінки отримаємо: