Спойлер в списке новостей 1С-Битрикс

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

Иногда нужно сделать спойлеры в копонентах 1C-Битрикс, в основном конечно, имеет смысл при очень больших обьемах контента. Скорее всего в каталогах, но для простоты опишу как это делается в компоненте новостей.

Спойлер в списке новостей Битрикс

Итак, спойлер сделать достаточно просто. Для этого подключаем в шаблоне библиотеку jQuery, можно скачать и положить в шаблон с компонентом, а можно и подключить со стороны.

Далее добавляем следующий JavaScript код, отвечающий за плавное открытие и скрытие спойлеров. Можно добавить в файл script.js компонента:

$(document).ready(function () {
    $('.spoiler_links').click(function () {
        var spoilerContent = $(this).parent().children('div.spoiler_content');
        if (spoilerContent.css("display") == "none") {
            $('.act_faq').removeClass('act_faq'); // Убираем класс act_faq у других элементов
            spoilerContent.toggle('normal');
            $(this).addClass('act_faq'); // Добавляем класс act_faq только к текущему элементу
        } else {
            spoilerContent.hide('normal');
            $(this).removeClass('act_faq'); // Убираем класс act_faq, если спойлер закрывается
        }
        return false;
    });
});

Что бы спойлеры по умолчанию были закрыты добавляем в style.css:

.spoiler_content {display:none; cursor:pointer;} 

И добвляем в template.php вывод самого контента спойлеров

<? foreach ($arResult["ITEMS"] as $arItem): ?>
    <div class="faq_item">
        <div class="spoiler_links">
            <span>
                <? echo $arItem["NAME"] ?>
            </span>
            <i></i>
        </div>
        <div class="spoiler_content">
            <? echo $arItem["PREVIEW_TEXT"] ?>
       </div>
    </div>
<? endforeach; ?>

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

.spoiler_content {
  display: none;
  cursor: pointer;
}

.faq_item {
  border-bottom: 1px #ddd dashed;
}

.spoiler_links {
  font-size: 20px;
  font-weight: bold;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 0px;
}
.spoiler_links span {
  color: var(--c1);
  cursor: pointer;
  padding-bottom: 1px;
  border-bottom: 1px transparent dashed;
  transition: var(--animation1);
}
.spoiler_links span:hover {
  border-bottom: 1px var(--c2) dashed;
}
.spoiler_links i {
  width: 33px;
  height: 33px;
  position: relative;
}
.spoiler_links i:before {
  position: absolute;
  top: 16px;
  content: "";
  height: 1px;
  width: 33px;
  background: #444;
}
.spoiler_links i:after {
  position: absolute;
  top: 16px;
  content: "";
  height: 1px;
  width: 33px;
  background: #444;
  transform: rotate(90deg);
  transition: var(--animation1);
}
.spoiler_links.act_faq span {
  color: #333333;
}
.spoiler_links.act_faq i {
  width: 33px;
  height: 33px;
  position: relative;
}
.spoiler_links.act_faq i:before {
  position: absolute;
  top: 16px;
  content: "";
  height: 1px;
  width: 33px;
  background: #999;
}
.spoiler_links.act_faq i:after {
  position: absolute;
  top: 16px;
  content: "";
  height: 1px;
  width: 33px;
  background: #999;
  transform: rotate(0deg);
}

.spoiler_content {
  padding-bottom: 20px;
}

Ал 17.07.2024
    Всё отлично!

опечатка 1: "в копонентах"    
опечатка 2: "обьемах"    
   
Почему-то на странице списка нет этой статьи (https://bazarow.ru/blog-note/)    

Блог-note: заметки разработчика

Установка поиска Sphinx на Ubuntu 22.04 для 1С-Битрикс

Задача: установить и сконфигурировать поиск Sphinx под управлением Ubuntu 22.04 и панели управления HestiaCP для использ...

Модифицировать состав заказа #ORDER_LIST# в почтовом событии "Новый заказ"

Если вы хотите как-то по особенному сверстать состав заказа в почтовом уведомлении 1С-Битрикс "Новый заказ", у вас это н...

Получить и вывести пользовательские свойства склада в 1С-Битрикс

Задача: вывести пользовательские свойства в подробном описании склада. При этом, есть и множественные и одиночные поля.

Фиксированная корзина с обновлением, без перезагрузки страницы.

Иногда нужно сделать так, чтобы корзина в интернет магазине, созданном на Битрикс, была постоянно на виду, при этом обно...

Регистрация пользователя в определенную группу сайта на Битрикс

Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимости от того какую форму регистра...

Основные функции вывода в шаблонах Битрикс

Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну кучку. Ведь у каждого бывают мо...

Базовая защита "Битрикс виртуальная машина" от DDoS атак.

Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, когда ваш сервер на CentOS под...

Повторить заказ на API 1С-Битрикс наполнив корзину из заказа

Задача: заполнить корзину пользователя теми же товарами и количествами которые были в ранее созданном заказе. При этом н...

Старые шаблоны битрикс для простой верстки

Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии и выше), достаточно технологич...