---
title: "Как происходит рендер пользовательских полей в Joomla? - WebTolk"
description: "Как происходит рендеринг пользовательских полей под капотом Joomla. Как создать    переопределения макетов для полей Joomla и внедрить свою HTML вёрстку. Как выбрать макеты в настройках поля в админке? Ответит эта статья."
url: "https://web-tolk.ru/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla"
date: "2022-10-17T04:10:19+00:00"
language: "ru-RU"
---

# Как происходит рендер пользовательских полей в Joomla?

 Автор: Сергей Толкачев Создано: 17 октября 2022 Обновлено: 01 сентября 2025 Просмотров: 3305

Эта небольшая статья рассказывает о том, как происходит рендеринг пользовательских полей "под капотом" Joomla. Информация будет Вам полезна для создания переопределений и вёрстки своего вывода полей в Ваших новых проектах. А также упростит поиск и поддержку сайтов на Joomla, пришедших от других разработчиков.

Перевод [статьи](https://simplifyyourweb.com/documentation/topics/1566-how-custom-fields-are-rendered-in-joomla)франкоязычного Joomla-разработчика Olivier Buisard.

Рендер пользовательских полей Joomla происходит в 3 этапа:

- **1-й этап:** создаётся layout, который собирает все поля вместе и создаёт общий для всех вывод.
- **2-й этап:** создаётся layout, в котором определяется как отображается каждое отдельное поле (отображать ли label поля и т.д.)
- **3-й этап:** создаётся layout, который определяет вывод значения конкретного поля.
 ![Этапы рендера пользовательских полей в Joomla](https://web-tolk.ru/blog/images/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla/etapy-rendera-polzovatelskix-poley-joomla.png)Этапы рендера пользовательских полей в Joomla

Каждый компонент может отображать поля по-своему. В ядре 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`

Можно скопировать, переименовать и переопределить файл `render.php` , чтобы появилась возможность вручную выбирать, какой файл рендеринга использовать, но это должно быть сделано с помощью кода в расширениях.

Следующий код

```
FieldsHelper::render('com_content.article', 'fields.render', ['item' => …, 'context' => 'com_content.article', 'fields' => …]);
```

отобразит все поля для материала с помощью файла `layouts/fields/render.php`. А этот код

```
FieldsHelper::render('com_content.article', 'fields.myoverride', ['item' => …, 'context' => 'com_content.article', 'fields' => …]);
```

отобразит все поля для материала с помощью `layouts/fields/myoverride.php.`

### Использование плагина контента "Контент - Поля"

Плагин для отображения настраиваемого поля в содержимом сайта, которое может быть вставлено в область редактора с помощью кнопки **Поле** или с использованием следующего синтаксиса:

- позволит отобразить все поля группы полей с ID 2.
- (вместо точного id - символ звёздочки) позволит отобразить все группы полей

## Порядок рендера конкретного пользовательского поля Joomla

Механизм поиска файлов макетов вывода каждого отдельного поля такой же, как и для групп полей.

- Есть ли файл `templates/[template name]/html/layouts/[component name]/field/render.php`, переопределяющий макет вывода полей для конкретного компонента? Да - используем его.
- Нет? Есть ли файл `components/[component name]/layouts/field/render.php` в папке компонента? Да - используем его.
- Нет? Есть ли файл переопределения для `com_fields` - `templates/[template name]/html/layouts/com_fields/field/render.php`? Да - используем его.
- Нет? Используем `components/com_fields/layouts/field/render.php`

Можно создать несколько переопределений файла `components/com_fields/layouts/field/render.php` и иметь возможность выбрать, какой из них использовать, в настройках поля панели администратора (вкладка опции).

 ![Выбор макета вывода для пользовательского поля Joomla](https://web-tolk.ru/blog/images/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla/vybor-maketa-vyvoda-dlya-polzovatelskogo-polya-joomla.png)Выбор макета вывода для пользовательского поля Joomla

Если Вы выбрали собственный макет, Joomla отобразит поле с Вашей вёрсткой.

"Use default (по умолчанию)" означает, что для рендера будет использован файл `render.php`.

Не создавайте переопределения, если вы можете получить тот же результат, просто используя CSS. Такое решение будет легче поддерживать в дальнейшем.

### Использование плагина контента "Контент - Поля"

Вы можете использовать шорт-код `{field [id]}` , где [id] - id поля. Макет вывода используется по умолчанию - `layouts/field/render.php`.

Шорт-код  позволит отобразить поле с ID 2, которое использует альтернативный макет **foo**.

## Отображение значения пользовательского поля Joomla

Каждое пользовательское поле реализовано с помощью плагина, находящегося в директории `plugins/fields`. Макеты вывода плагинов находятся в папке `tmpl`. Например, для плагина поля `text` макеты вывода находятся в `plugins/fields/text/tmpl`. Макет вывода по умолчанию имеет такое же имя файла, как и сам плагин. Для плагина поля `"text"` файл макета вывода будет называться `text.php`.

Этот файл тоже можно переопределить. Можно сделать или вручную или с помощью вкладки "Создание переопределений" в *настройках шаблона* (не стиля шаблона).

 ![Плагины полей в настройках шаблона](https://web-tolk.ru/blog/images/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla/plaginy-polei-v-nastroikah-shablona-joomla.png)Плагины полей в настройках шаблона

![skrinshot nastroek shablona joomla dlyz spzdaniya pereporpedelenii](https://web-tolk.ru/blog/images/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla/skrinshot-nastroek-shablona-joomla-dlyz-spzdaniya-pereporpedelenii.png)

В коде значения полей обычно получаются `FieldsHelper::getFields($context, $item, true);` , где

- *$context* - контекст компонента, в котором должно быть выбрано поле (например, *'com_content.article'*).
- *$item* - материал, категория и т.д., для которого должно быть получено значение поля.
- *true* указывает, что значение поля должно быть обработано плагином и вернуть значение вместе с HTML-вёрсткой из макета. Если указано false, то вернется "голое" значение поля, введённое в админке.

- [Olivier Buisard: How custom fields are rendered in Joomla](https://simplifyyourweb.com/documentation/topics/1566-how-custom-fields-are-rendered-in-joomla)
- [Мой перевод статьи на Хабре](https://habr.com/ru/post/678538/)

## Об авторе

![Толкачев Сергей Юрьевич](https://web-tolk.ru/images/uslugi/sergey-tolkachyov-apr-2023.webp)

### Толкачев Сергей Юрьевич

Joomla-разработчик. [Контрибьютер ядра Joomla](https://github.com/joomla/joomla-cms/pulls?q=is%3Apr+author%3Asergeytolkachyov+). Один из ведущих Telegram-канала русскоязычного Joomla-сообщества [JoomlaFeed](https://t.me/joomlafeed), один из модераторов [чата русскоязычного Joomla-сообщества](https://t.me/joomlaru). Мои расширения в официальном маркетплейсе расширений Joomla - [Joomla Extensions Directory](https://extensions.joomla.org/profile/profile/details/528051/). Имею публикации в [официальном журнале международного Joomla-сообщества - Joomla Community Magazine](https://magazine.joomla.org/authors/sergeytolkachyov) и на [официальном сайте русскоязычного Joomla-сообщества](https://joomlaportal.ru/users/sergey-tolkachyov).

Муж. Отец 3 детей.

Россия, Саратов.

## JSON-LD Schema

```json
{
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "@id": "https://web-tolk.ru/#/schema/BreadcrumbList/17",
    "itemListElement": [
        {
            "@type": "ListItem",
            "position": 1,
            "item": {
                "@id": "https://web-tolk.ru/",
                "name": "Главная"
            }
        },
        {
            "@type": "ListItem",
            "position": 2,
            "item": {
                "@id": "https://web-tolk.ru/blog",
                "name": "Блог"
            }
        },
        {
            "@type": "ListItem",
            "position": 3,
            "item": {
                "name": "Как происходит рендер пользовательских полей в Joomla?"
            }
        }
    ]
}
```

```json
{
    "@context": "https://schema.org",
    "@graph": [
        {
            "@type": "Organization",
            "@id": "https://web-tolk.ru/#/schema/Organization/base",
            "name": "WebTolk",
            "url": "https://web-tolk.ru/",
            "logo": {
                "@type": "ImageObject",
                "@id": "https://web-tolk.ru/#/schema/ImageObject/logo",
                "url": "images/webtolk-1080p.jpg",
                "contentUrl": "images/webtolk-1080p.jpg",
                "width": 1920,
                "height": 1080
            },
            "image": {
                "@id": "https://web-tolk.ru/#/schema/ImageObject/logo"
            },
            "sameAs": [
                "https://github.com/WebTolk",
                "https://github.com/sergeytolkachyov",
                "https://vk.com/web_tolk",
                "https://vk.com/webtolkru",
                "https://tenchat.ru/sergeytolkachyov",
                "https://t.me/sergeytolkachyov",
                "https://t.me/webtolkru"
            ]
        },
        {
            "@type": "WebSite",
            "@id": "https://web-tolk.ru/#/schema/WebSite/base",
            "url": "https://web-tolk.ru/",
            "name": "WebTolk",
            "publisher": {
                "@id": "https://web-tolk.ru/#/schema/Organization/base"
            }
        },
        {
            "@type": "WebPage",
            "@id": "https://web-tolk.ru/#/schema/WebPage/base",
            "url": "https://web-tolk.ru/blog/kak-proiskhodit-render-polzovatelskikh-polej-v-joomla",
            "name": "Как происходит рендер пользовательских полей в Joomla? - WebTolk",
            "description": "Как происходит рендеринг пользовательских полей под капотом Joomla. Как создать \r\n переопределения макетов для полей Joomla и внедрить свою HTML вёрстку. Как выбрать макеты в настройках поля в админке? Ответит эта статья.",
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebSite/base"
            },
            "about": {
                "@id": "https://web-tolk.ru/#/schema/Organization/base"
            },
            "inLanguage": "ru-RU",
            "breadcrumb": {
                "@id": "https://web-tolk.ru/#/schema/BreadcrumbList/17"
            }
        },
        {
            "@type": "Article",
            "@id": "https://web-tolk.ru/#/schema/com_content/article/56",
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebPage/base"
            }
        }
    ]
}
```
