---
title: "Совет по Joomla: группированные списки select с помощью HTMLHelper select.groupedlist - WebTolk"
description: "Порой в выпадающих списках нужно группировать большое количество значений для удобного восприятия. В HTML это реализуется с помощью select optgroup. В Joomla API есть метод HTMLHelper    select.groupedlist. Как его использовать - расскажет эта статья."
url: "https://web-tolk.ru/blog/sovet-po-joomla-gruppirovannye-spiski-select-s-pomoshchyu-htmlhelper-select-groupedlist"
date: "2024-11-26T05:59:28+00:00"
language: "ru-RU"
---

# Совет по Joomla: группированные списки select с помощью HTMLHelper select.groupedlist

 Автор: Сергей Толкачев Создано: 26 ноября 2024 Обновлено: 26 ноября 2024 Просмотров: 1001    ![HTMLHelper select.groupedlist](https://web-tolk.ru/blog/images/blog/sovet-po-joomla-gruppirovannye-spiski-select-s-pomoshchyu-htmlhelper/header.webp)

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

В HTML это выглядит как:

```
<select>
   <optgroup label="Группа 1">
    <option value="1">Значение 1</option>
    <option value="2">Значение 2</option>
    <option value="3">Значение 3</option>
   </optgroup>
   <optgroup label="Группа 2">
    <option value="4">Значение 4</option>
    <option value="5">Значение 5</option>
    <option value="6">Значение 6</option>
   </optgroup>
   </select>
```

Как вывести такой список `select` с помощью Joomla программным методом? Для этого существует метод `groupedlist()` класса `Select` `HTMLHelper`. В коде он вызывается с помощью `HTMLHelper::_('select.groupedlist')`. Нужно подготовить массивы данных определенной структуры. Это массив с группами опций для `select`.

```
<?php
$groups = [
            'shop' => [
                'id' => 'shop',
                'text' => 'Интернет-магазин',
                'items' => $tariff_shop_options
            ],
            'dostavka' => [
                'id' => 'dostavka',
                'text' => 'Доставка',
                'items' => $tariff_dostavka_options
            ]
        ];
```

**Почитать:** [Как добавить свой повторяемый элемент интерфейса в класс HTMLHelper Joomla 4+](https://web-tolk.ru/blog/index.php?option=com_content&view=article&id=114:kak-dobavit-svoj-povtoryaemyj-element-interfejsa-v-klass-htmlhelper-joomla-4&catid=10:blog&lang=ru-RU&Itemid=114).

`shop` и `dostavka` - это ключи, необходимые при построении `otpgroup`. Вложенные массивы - это данные для группы, где:

- `id` - это атрибут `id` `<optgroup>`. Можно не указывать.
- `text` - это заголовок `<optgroup>`
- `items` - это уже готовые`<option value="">`.

Готовим предварительно массивы с `options`:

```
<?php
$tariff_shop_options = [];
$tariff_dostavka_options = [];
foreach ($tariff_shop as $tariff)
{
    $tariff_shop_options[] = HTMLHelper::_('select.option', $tariff['code'], $tariff['name'] . ' (code: ' . $tariff['code'] . ')');
}
foreach ($tariff_dostavka as $tariff)
{
    $tariff_dostavka_options[] = HTMLHelper::_('select.option', $tariff['code'],     $tariff['name'] . ' (code: ' . $tariff['code'] . ')');
}
```

И потом рендерим группированный список с помощью `select.groupedlist`:

```
<?php
echo HTMLHelper::_('select.groupedlist', $groups, 'field_name', ['id' => 'field_id_attr', 'group.id' => 'id']);
```

`group.id` - это ключ, по которому в массивах групп будет назначен атрибут `id` для `<optgroup>`.

Подробнее можно посмотреть в файле **libraries/src/HTML/Helpers/Select.php**.

- [Пост в Telegram канале @WebTolkRu](https://t.me/webtolkru/377)

## Об авторе

![Толкачев Сергей Юрьевич](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: группированные списки select с помощью HTMLHelper select.groupedlist"
            }
        }
    ]
}
```

```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/sovet-po-joomla-gruppirovannye-spiski-select-s-pomoshchyu-htmlhelper-select-groupedlist",
            "name": "Совет по Joomla: группированные списки select с помощью HTMLHelper select.groupedlist - WebTolk",
            "description": "Порой в выпадающих списках нужно группировать большое количество значений для удобного восприятия. В HTML это реализуется с помощью select optgroup. В Joomla API есть метод HTMLHelper \r\n select.groupedlist. Как его использовать - расскажет эта статья.",
            "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/115",
            "name": "Совет по Joomla: группированные списки select с помощью HTMLHelper select.groupedlist",
            "headline": "Совет по Joomla: группированные списки select с помощью HTMLHelper select.groupedlist",
            "inLanguage": "ru-RU",
            "author": {
                "@type": "Person",
                "name": "Сергей Толкачев"
            },
            "thumbnailUrl": "images/blog/sovet-po-joomla-gruppirovannye-spiski-select-s-pomoshchyu-htmlhelper/header.webp",
            "image": "images/blog/sovet-po-joomla-gruppirovannye-spiski-select-s-pomoshchyu-htmlhelper/header.webp",
            "dateModified": "2024-11-26T00:00:00+00:00",
            "interactionStatistic": {
                "@type": "InteractionCounter",
                "userInteractionCount": 1001
            },
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebPage/base"
            }
        }
    ]
}
```
