Телеграм: @bazarow_ru Почта: mihail@bazarow.ru

Вывести разделы инфоблока по первым буквам не меняя структуру каталога. Алфавитный указатель

Просмотров: 2501

Например: у нас есть инфоблок с большим количеством разделов. И мы хотим, на сайте разбить разделы по буквам. Самый простой способ, это конечно же добавить буквы в разделы каталога, и перераспределить сами разделы по своим буквам.
Но... а если и разделов более 2000-яч и вообще не вариант, так менять структуру инфоблока.

Получаем первые буквы названий разделов, без дубликатов

В шаблоне компонента catalog.section.list (Разделы инфоблока) удаляем все и меняем на такой код:

foreach ($arResult["SECTIONS"] as $arSectionArray) {
      $sectFName = $arSectionArray['NAME'];
      $sectFLetter = mb_substr($sectFName, 0, 1, 'UTF-8');
      $arrayFirsletter[] =  $sectFLetter;
}
$uniuqLetter = array_unique($FirstLetter);
  • Прошлись циклом foreach по всем разделам инфоблока и получили первые буквы каждого названия раздела, загнали в переменную $sectFLetter
  • Наполнили массив $arrayFirsletter этими, первыми буквами названий разделов.
  • Так как названия разделов могут быть c одинаковой первой буквой, прогнали массив через array_unique - позволяет получить уникальные элементы массива, то есть без повторов

Таким образом, в массиве $uniuqLetter имеем только уникальные, первые буквы, всех разделов.

Алфавитный указатель по разделам Битрикс. Разделы по первой букве названия

Алфавитный указатель

Осталось только вывести разделы с сортировкой по первой букве названия. Что бы получилось, что-то такое- алфавитный указатель в меню:

foreach ($uniuLetter as $onlyOnceLetter) {
       echo  $onlyOnceLetter;
      foreach ($arResult["SECTIONS"] as $arSection) {
         if (mb_substr($arSection['NAME'], 0, 1) == $onlyOnceLetter) { ?>
              <a href="<?= $arSection["SECTION_PAGE_URL"] ?>">
             <?echo $arSection['NAME']; ?>
             </a>
        <?}
     }
}
  • Прошлись циклом foreach по нашему массиву, с уникальными буквами и вывели их пользователю $onlyOnceLetter
  • Внутри, еще одним foreach-ем вывели разделы и отфильтровали их по совпадению первой буквы названия и нашей переменной $onlyOnceLetter

На этом все, вопросы можно задавать в комментариях.

Написать первый комментарий:

Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Нажимая кнопку "Отправить" вы соглашаетесь
с политикой конфиденциальности и обработки персональных данных.

Записная книжка разработчика

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

Автоматическая загрузка каталогов из csv файлов в Битрикс Просмотров: 11797 Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В... Спойлер в списке новостей Битрикс Просмотров: 12178 Иногда нужно сделать спойлеры в копонентах Битрикс, в основном конечно, имеет смысл при оч... Следующая/предыдущая новость/статья при просмотре подробной в Битрикс Просмотров: 18287 Дизайн создается только для наглядного и удобного предоставления содержимого сайта, пользо... Очистить брошенные корзины с помощью API 1С-Битрикс Просмотров: 1121 Задача: в интернет-магазине накапливается большое количество брошенных корзин, нужно их оч... Простые калькуляторы в карточке товара каталога на Битрикс Просмотров: 16174 На одном из создаваемых сайтов было необходимо сделать небольшой калькулятор и предварител... Если предложение SKU в корзине, поменять кнопку добавления на "В корз... Просмотров: 3881 Данная заметка является дополнением к ранее опубликованной: Есл... Минимальная сумма заказа в корзине и оформлении заказа в 1С-Битрикс Просмотров: 9779 В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне кор... Базовая защита "Битрикс виртуальная машина" от DDoS атак. Просмотров: 5856 Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, ... Если товар в корзине, поменять значение input на "В корзине" Просмотров: 11092 Если Вам нужно поменять текст на кнопке, добавляющей товар в корзину, достаточно воспользо... Сортировка элементов по индексу сортировки значений типа список Просмотров: 11592 Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт... Очистка корзины в 1С-Битрикс одним нажатием Просмотров: 29583 В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием... Малая корзина Битрикс, упрощенный шаблон Просмотров: 13606 Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке ... Установка вебсервера на Apple M1 (нативный ARM стек), оптимизированны... Просмотров: 7405 Появилась задачка, установить стек MAMP (macOS, Apache, MYSQL, PHP) на рабочий ноутбук с п... Если пользователь авторизован то... API Битрикс Просмотров: 23716 Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, неку... Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне ... Просмотров: 1769 Ранее я уже делал заметку на эту тему. Тогда, мы меняли значение input-а при добавлении то... Подключение jquery из ядра битрикс и объединение своих скриптов в оди... Просмотров: 20892 Если используете большое количество js скриптов на сайте. Например: фансибокс, всяческие г... Вывести множественное свойство типа файл с названием и весом файла в ... Просмотров: 21888 В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1... Создание PWA для сайта на 1С-Битрикс Просмотров: 3266 Технология PWA позволяет создать приложение для любого сайта. Не обязательно работающего ... Основные функции вывода в шаблонах Битрикс Просмотров: 158282 Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну к... Настройка прав доступа в 1С-Битрикс Просмотров: 8265 Часто, в интернет-магазине под управлением 1С Битрикс, нужно создать группу пользователей ...