Мы привыкли использовать механизм переопределения макетов 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}
. Правда, если честно, никогда этой возможностью не пользовался.