---
title: "WT Layout select - плагин выбора файла макета для Joomla - WebTolk"
description: "Плагин пользовательского поля Joomla: выпадающий список PHP-лейаутов из указанных папок с учетом переопределений активного шаблона сайта.  Скачать плагин для Joomla бесплатно."
url: "https://web-tolk.ru/dev/joomla-plugins/wt-layout-select-joomla-custom-field-plugin"
date: "2026-06-06T12:24:05+00:00"
language: "ru-RU"
---

# WT Layout select - плагин выбора файла макета

- **Категория:** [Плагины Joomla](https://web-tolk.ru/dev/joomla-plugins)
- **Версия:** 1.0.1
- **Дата:** 26 февраля 2026

867 711 CTR 122% Plg Free

[Скачать](https://web-tolk.ru/get?element=wtlayoutselect)[Версии](https://web-tolk.ru/dev/joomla-plugins/wt-layout-select-joomla-custom-field-plugin/versions)

Плагин пользовательского поля Joomla: выпадающий список PHP-лейаутов из указанных папок с учетом переопределений активного шаблона сайта.

## Описание

Плагин добавляет тип пользовательского поля `wtlayoutselect`.

Поле Joomla:

- сканирует указанные папки с PHP-лейаутами;
- показывает в выпадающем списке варианты с учетом переопределений шаблона (`/templates/<template>/html/...`);
- сохраняет выбранное значение в `rawvalue` поля с `layout` и `basePath` (JSON);
- отдает вычисленное значение в `value` (`layout_id`), пригодное для Joomla `LayoutHelper::render()`.

## Зачем это нужно?

 Демо видео переключения макетов блоков в материалах Joomla из панели администратора

Поле удобно, когда нужно дать контент-менеджеру выбор варианта верстки без правки шаблона:

- материалы (`com_content`): секции статьи, карточки, блоки CTA;
- контакты (`com_contact`): разные шаблоны карточки контакта;
- категории и списки: разные макеты частей страницы под контекст;
- зоны вывода модулей: включение контента/модулей в нужном варианте макета.
- возможность создавать переиспользуемые блоки вёрстки для создания ледингов на Joomla

## 2 основных варианта использования поля

Вы используете это поле в своих переопределениях макета материалов, контактов Joomla или тех компонентов, которые их поддерживают. Для того, чтобы значение поля не отображалось автоматически - рекомендуется указать это прямо в настройках поля. Само поле играет роль логического переключателя макетов частей страницы и его вывод (`$field->value`) имеет ценность только для разработчика.

### Вариант 1: рендер по вычисленному `$field->value`

```
<?php
use Joomla\CMS\Layout\LayoutHelper;

$field = $this->item->jcfields[14] ?? null;

if ($field && !empty($field->value)) {
    echo LayoutHelper::render($field->value, ['item' => $this->item]);
}
```

Или вариант того же кода с доступом по имени (алиасу) поля:

```
<?php
defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Layout\LayoutHelper;

// Rebuild custom fields by field alias
$customFields = [];
foreach ($this->item->jcfields as $f) {
    $customFields[$f->name] = $f;
}

echo LayoutHelper::render(layoutFile: $customFields['layout-select']->value, displayData: ['item' => $this->item, 'jcfields' => $customFields]);
```

### Вариант 2: рендер из `rawvalue` с `basePath`

```
<?php
use Joomla\CMS\Layout\LayoutHelper;

$field = $this->item->jcfields[14] ?? null;

if ($field && !empty($field->rawvalue)) {
    $raw = json_decode($field->rawvalue);

    if (!empty($raw->layout) && !empty($raw->basePath)) {
        echo LayoutHelper::render($raw->layout, ['item' => $this->item], $raw->basePath);
    }
}
```

## Как указывать папки в параметрах поля и какой будет вычисленный `layout_id`

Ниже примеры для поля `wtlayoutselect`, если выбран файл `pricelist.php`.

| Папка в параметрах поля | Где реально лежит файл | `rawvalue` (ключевая часть) | Вычисленный `layout_id` в `$field->value` |
| --- | --- | --- | --- |
| `layouts/com_content/article/sections` | `JPATH_ROOT/layouts/com_content/article/sections/pricelist.php` | `basePath=layouts/com_content/article/sections`, `layout=pricelist` | `com_content.article.sections.pricelist` |
| `layouts/com_content/article/sections` | `templates/<template>/html/com_content/article/sections/pricelist.php` (override) | `basePath=layouts/com_content/article/sections`, `layout=pricelist` | `com_content.article.sections.pricelist` |
| `templates/webtolk/html/com_content/article/sections` | `JPATH_ROOT/templates/webtolk/html/com_content/article/sections/pricelist.php` | `basePath=templates/webtolk/html/com_content/article/sections`, `layout=pricelist` | `templates.webtolk.html.com_content.article.sections.pricelist` |
| `components/com_contact/layouts/contact/parts` | `JPATH_ROOT/components/com_contact/layouts/contact/parts/pricelist.php` | `basePath=components/com_contact/layouts/contact/parts`, `layout=pricelist` | `components.com_contact.layouts.contact.parts.pricelist` |

Важно:

- Для путей, начинающихся с `layouts/...`, плагин убирает префикс `layouts.` в `$field->value`. для того, чтобы `layout_id` можно было сразу передавать в `LayoutHelper`.
- Для путей вне `JPATH_ROOT/layouts` (например, `templates/...`, `components/...`) `layout_id` включает весь путь в dot-формате.
- В таких случаях обычно надежнее рендерить через `rawvalue` с явным `basePath` (вариант 2 выше).

Пример вызова в переопределении материала (`/templates/<template>/html/com_content/article/default.php`):

```
<?php
use Joomla\CMS\Layout\LayoutHelper;

$field = null;

foreach (($this->item->jcfields ?? []) as $f) {
    if (($f->name ?? '') === 'article_layout_variant') {
        $field = $f;
        break;
    }
}

if ($field && !empty($field->value)) {
    echo LayoutHelper::render($field->value, ['item' => $this->item]);
}
```

## Примеры лейаутов: когда передается `item` материала

Ниже примеры самих layout-файлов (например, в `layouts/com_content/article/sections/...`), когда вы передали `['item' => $this->item]`.

### Пример 1: базовый layout секции статьи

Файл: `layouts/com_content/article/sections/lead.php`

```
<?php
/** @var array $displayData */

defined('_JEXEC') or die;

extract($displayData);

if (empty($item)) {
    return;
}
?>
<section class="article-lead">
    <h2><?php echo htmlspecialchars($item->title ?? '', ENT_QUOTES, 'UTF-8'); ?></h2>

    <?php if (!empty($item->images)) :
        $images = json_decode($item->images);
        $intro  = $images->image_intro ?? '';
    ?>
        <?php if (!empty($intro)) : ?>
            <img src="/<?php echo htmlspecialchars($intro, ENT_QUOTES, 'UTF-8'); ?>" alt="">
        <?php endif; ?>
    <?php endif; ?>

    <div>
        <?php echo $item->introtext ?? ''; ?>
    </div>
</section>
```

### Пример 2: как получить поля статьи внутри layout

Файл: `layouts/com_content/article/sections/specs.php`

```
<?php
/** @var array $displayData */

defined('_JEXEC') or die;

extract($displayData);

if (empty($item)) {
    return;
}

$fields = $item->jcfields ?? [];
$sku    = null;
$price  = null;

foreach ($fields as $f) {
    if (($f->name ?? '') === 'sku') {
        $sku = $f->rawvalue;
    }

    if (($f->name ?? '') === 'price') {
        $price = $f->rawvalue;
    }
}
?>
<div class="product-specs">
    <?php if (!empty($sku)) : ?><p>SKU: <?php echo htmlspecialchars($sku, ENT_QUOTES, 'UTF-8'); ?></p><?php endif; ?>
    <?php if (!empty($price)) : ?><p>Price: <?php echo htmlspecialchars($price, ENT_QUOTES, 'UTF-8'); ?></p><?php endif; ?>
</div>
```

## Рендер модульной позиции через ModuleHelper в переопределениях Joomla

Файл: `layouts/com_content/article/sections/sidebar-modules.php`

```
<?php
/** @var array $displayData */

defined('_JEXEC') or die;

use Joomla\CMS\Helper\ModuleHelper;

extract($displayData);

// При желании можно выбирать позицию по материалу/категории
$position = 'article-sidebar';

$modules = ModuleHelper::getModules($position);

if (empty($modules)) {
    return;
}
?>
<aside class="article-sidebar-modules">
    <?php
        // Выводим всем модули из этой позиции
        foreach ($modules as $module) : ?>
        <div class="article-sidebar-module">
            <?php echo ModuleHelper::renderModule($module, ['style' => 'none']); ?>
        </div>
    <?php endforeach; ?>
</aside>
```

## Joomla

 **Тип расширения:** Плагин **Каталог:** Fields **Версия Joomla:** 6.0.3

## Галерея

![...](https://web-tolk.ru/dev/joomla-plugins/images/swjprojects/projects/111/ru-RU/gallery/YSnr9vSVPZV.webp)

![...](https://web-tolk.ru/dev/joomla-plugins/images/swjprojects/projects/111/ru-RU/gallery/JVnXHUvZNFv.webp)

![...](https://web-tolk.ru/dev/joomla-plugins/images/swjprojects/projects/111/ru-RU/gallery/1He9yPJiLuh.webp)

## Что нового

 26.02.2026, 12:43:31

Добавлено

### Опция По умолчанию для выпадающего списка

Добавлена подключаемая опция по умолчанию для выпадающего списка.

## 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/dev",
                "name": "Расширения Joomla"
            }
        },
        {
            "@type": "ListItem",
            "position": 3,
            "item": {
                "@id": "/dev/joomla-plugins",
                "name": "Плагины Joomla"
            }
        },
        {
            "@type": "ListItem",
            "position": 4,
            "item": {
                "name": "WT Layout select - плагин выбора файла макета"
            }
        }
    ]
}
```

```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/dev/joomla-plugins/wt-layout-select-joomla-custom-field-plugin",
            "name": "WT Layout select - плагин выбора файла макета для Joomla - WebTolk",
            "description": "Плагин пользовательского поля Joomla: выпадающий список PHP-лейаутов из указанных папок с учетом переопределений активного шаблона сайта.  Скачать плагин для Joomla бесплатно.",
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebSite/base"
            },
            "about": {
                "@id": "https://web-tolk.ru/#/schema/SoftwareApplication/base"
            },
            "inLanguage": "ru-RU",
            "breadcrumb": {
                "@id": "https://web-tolk.ru/#/schema/BreadcrumbList/17"
            }
        },
        {
            "@type": "SoftwareApplication",
            "name": "WT Layout select - плагин выбора файла макета",
            "url": "https://web-tolk.ru/dev/joomla-plugins/wt-layout-select-joomla-custom-field-plugin",
            "description": "Плагин пользовательского поля Joomla: выпадающий список PHP-лейаутов из указанных папок с учетом переопределений активного шаблона сайта. ",
            "applicationCategory": "Плагины Joomla",
            "softwareVersion": "1.0.1",
            "downloadUrl": "https://web-tolk.ru/get?element=wtlayoutselect",
            "operatingSystem": "ANY",
            "interactionStatistic": [
                {
                    "@type": "InteractionCounter",
                    "interactionType": "https://schema.org/DownloadAction",
                    "userInteractionCount": 867
                },
                {
                    "@type": "InteractionCounter",
                    "interactionType": "https://schema.org/ViewAction",
                    "userInteractionCount": 712
                }
            ],
            "mainEntityOfPage": {
                "@type": "WebPage",
                "url": "https://web-tolk.ru/dev/joomla-plugins/wt-layout-select-joomla-custom-field-plugin"
            },
            "softwareRequirements": "Joomla",
            "applicationSubCategory": "1.0.1",
            "isAccessibleForFree": true,
            "keywords": [
                "joomla",
                " plugin",
                " download",
                " free"
            ]
        }
    ]
}
```
