Собственные макеты вывода для пользовательских полей Joomla
Мы привыкли использовать механизм переопределения макетов Joomla: скопируй нужный тебе файл макета в папку html шаблона и твори там что хочешь. Это в полной мере относится и к пользовательским полям Joomla.
Joomla ищет макеты рендера всех пользовательских полей в следующем порядке:
- Есть ли файл templates/[template name]/html/layouts/[component name]/fields/render.php, переопределяющий макет вывода полей для конкретного компонента? Да - используем его.
- Нет? Есть ли файл components/[component name]/layouts/fields/render.php в папке компонента? Да - используем его.
- Нет? Есть ли файл templates/[template name]/html/layouts/com_fields/fields/render.php, переопределяющий вывод полей для com_fields? Да - используем его.
- Нет? Используем файл components/com_fields/layouts/fields/render.php.
Это механизм поиска переопределений файлов макетов.
Вчера столкнулся с тем, что если поле вставлено в текст материала с помощью шорт-кода (кнопкой редактора) вида {field 25}, то переопределения не сработали. Поэтому стал вспоминать как сделать свой макет для поля Joomla.
Файл components/com_fields/layouts/field/render.php копируем в templates/YOUR_TEMPLATE/html/layouts/com_fields/field/etapy-raboty-nad-proektom.php. Обратите внимание, что мы файл переименовали, чтобы в настройках поля видеть его в выпадающем списке.
После этого всё заработало как надо. Благо, переводил уже раньше статью Как происходит рендер пользовательских полей в Joomla? . Потом, порывшись по своему же переводу увидел, что эта особенность работы Joomla в статье уже в ней описана 😂. А также напомнил себе о возможности указывать макет поля прямо в шорт-коде, через запятую: {field 25,etapy-raboty-nad-proektom}. Правда, если честно, никогда этой возможностью не пользовался.