Як зробити динамічно змінні вставки в meta поля

Актуально для версії 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):

Те у вихідному коді сторінки отримаємо: