Телеграм:@bazarow_ru mihail@bazarow.ru Проверяю почту и телеграм 2-3 раза в день.
С 1 по 10 января 2024 будет сделан редизайн сайта.
Пришла пора освежиться!

Часть 16: Вывод топов товаров на главную страницы, с фильтрацией по свойству

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

Выводим отфильтрованные товары на главную страницу сайта, через компонент "Топ элементов".

В продолжение к данной части: Запись прямой трансляции
Стрим: Верстка табов с каруселями внутри полосы с фоном

Для реализации понадобятся файлы

Дополнительные файлы

Все серии

Комментарии к видео

Евгений 29.05.2017
Михаил, спасибо за отличные уроки! Они реально на уровне. Просмотрев все Ваши видео не нашел как выводить отдельно товары с скидками.
Можете подсказать как реализовать раздел "Распродажа" где будут выводиться все товары у которых есть скидка.
Пробовал следующий вариант, но ничего не получилось. Выводит только весь товар, а фильтр не применяется.


Код
<div class="h2">Акции</div>    <?   $dbProductDiscounts = CCatalogDiscount::GetList(         array("SORT" => "ASC"),         array("ACTIVE" => "Y"),        false,        false,        array("ID", "PRODUCT_ID")    );       while ($arProductDiscounts = $dbProductDiscounts->Fetch()) {       $akcii_arr[] = $arProductDiscounts["PRODUCT_ID"];       }       foreach($akcii_arr as $ID) {        $akcii_arr_[] = $ID;   }       $GLOBALS['arrFilterAkcii'] = array("ID"=>$akcii_arr_);    ?>    <?$APPLICATION->IncludeComponent("bitrix:catalog.top", "hit_on_main",     Array(       "COMPONENT_TEMPLATE" => ".default",          "IBLOCK_TYPE" => "1c_catalog",   // Тип инфоблока          "IBLOCK_ID" => "12",   // Инфоблок          "ELEMENT_SORT_FIELD" => "sort",   // По какому полю сортируем элементы          "ELEMENT_SORT_ORDER" => "asc",   // Порядок сортировки элементов          "ELEMENT_SORT_FIELD2" => "id",   // Поле для второй сортировки элементов          "ELEMENT_SORT_ORDER2" => "desc",   // Порядок второй сортировки элементов          "FILTER_NAME" => "arrFilterAkcii",   // Имя массива со значениями фильтра для фильтрации элементов       "HIDE_NOT_AVAILABLE" => "Y",   // Товары, которых нет на складах       "ELEMENT_COUNT" => "10",   // Количество выводимых элементов       "LINE_ELEMENT_COUNT" => "1",   // Количество элементов выводимых в одной строке таблицы       "PROPERTY_CODE" => array(   // Свойства             0 => "",             1 => "",      ),       "OFFERS_FIELD_CODE" => array(   // Поля предложений             0 => "",             1 => "",      ),       "OFFERS_PROPERTY_CODE" => array(   // Свойства предложений             0 => "",          1 => "",      ),       "OFFERS_SORT_FIELD" => "sort",   // По какому полю сортируем предложения товара       "OFFERS_SORT_ORDER" => "asc",   // Порядок сортировки предложений товара       "OFFERS_SORT_FIELD2" => "id",   // Поле для второй сортировки предложений товара       "OFFERS_SORT_ORDER2" => "desc",   // Порядок второй сортировки предложений товара       "OFFERS_LIMIT" => "5",   // Максимальное количество предложений для показа (0 - все)       "VIEW_MODE" => "SECTION",   // Показ элементов       "TEMPLATE_THEME" => "blue",   // Цветовая тема       "PRODUCT_DISPLAY_MODE" => "N",   // Схема отображения       "ADD_PICT_PROP" => "-",   // Дополнительная картинка основного товара       "LABEL_PROP" => "-",   // Свойство меток товара       "SHOW_DISCOUNT_PERCENT" => "N",   // Показывать процент скидки       "SHOW_OLD_PRICE" => "N",   // Показывать старую цену       "SHOW_CLOSE_POPUP" => "N",   // Показывать кнопку продолжения покупок во всплывающих окнах       "MESS_BTN_BUY" => "Купить",   // Текст кнопки "Купить"       "MESS_BTN_ADD_TO_BASKET" => "В корзину",   // Текст кнопки "Добавить в корзину"       "MESS_BTN_COMPARE" => "Сравнить",   // Текст кнопки "Сравнить"       "MESS_BTN_DETAIL" => "Подробнее",   // Текст кнопки "Подробнее"       "MESS_NOT_AVAILABLE" => "Нет в наличии",   // Сообщение об отсутствии товара       "SECTION_URL" => "",   // URL, ведущий на страницу с содержимым раздела       "DETAIL_URL" => "",   // URL, ведущий на страницу с содержимым элемента раздела       "SECTION_ID_VARIABLE" => "SECTION_ID",   // Название переменной, в которой передается код группы       "PRODUCT_QUANTITY_VARIABLE" => "",   // Название переменной, в которой передается количество товара       "SEF_MODE" => "N",   // Включить поддержку ЧПУ       "SEF_RULE" => "",   // Правило для обработки       "CACHE_TYPE" => "N",   // Тип кеширования       "CACHE_TIME" => "36000000",   // Время кеширования (сек.)       "CACHE_GROUPS" => "Y",   // Учитывать права доступа       "CACHE_FILTER" => "N",   // Кешировать при установленном фильтре       "ACTION_VARIABLE" => "action",   // Название переменной, в которой передается действие       "PRODUCT_ID_VARIABLE" => "id",   // Название переменной, в которой передается код товара для покупки       "PRICE_CODE" => array(   // Тип цены          0 => "BASE",      ),       "USE_PRICE_COUNT" => "N",   // Использовать вывод цен с диапазонами       "SHOW_PRICE_COUNT" => "1",   // Выводить цены для количества       "PRICE_VAT_INCLUDE" => "Y",   // Включать НДС в цену       "CONVERT_CURRENCY" => "N",   // Показывать цены в одной валюте       "BASKET_URL" => "/personal/basket.php",   // URL, ведущий на страницу с корзиной покупателя       "USE_PRODUCT_QUANTITY" => "N",   // Разрешить указание количества товара       "ADD_PROPERTIES_TO_BASKET" => "Y",   // Добавлять в корзину свойства товаров и предложений       "PRODUCT_PROPS_VARIABLE" => "prop",   // Название переменной, в которой передаются характеристики товара       "PARTIAL_PRODUCT_PROPERTIES" => "N",   // Разрешить добавлять в корзину товары, у которых заполнены не все характеристики       "PRODUCT_PROPERTIES" => "",   // Характеристики товара       "OFFERS_CART_PROPERTIES" => "",   // Свойства предложений, добавляемые в корзину       "ADD_TO_BASKET_ACTION" => "ADD",   // Показывать кнопку добавления в корзину или покупки       "DISPLAY_COMPARE" => "N",   // Разрешить сравнение товаров       "ROTATE_TIMER" => "30"   ),    false);?> 
Может Вы как-то по другому реализуете данную задачу.  Подскажите плиз)
Михаил Базаров 30.05.2017
Цитата
Евгений написал:
Михаил, спасибо за отличные уроки! Они реально на уровне. Просмотрев все Ваши видео не нашел как выводить отдельно товары с скидками.
Можете подсказать как реализовать раздел "Распродажа" где будут выводиться все товары у которых есть скидка.
Пробовал следующий вариант, но ничего не получилось. Выводит только весь товар, а фильтр не применяется.
Код
 <div class="h2">Акции</div>     <?   $dbProductDiscounts = CCatalogDiscount::GetList(        ?>     <?$APPLICATION->IncludeComponent("bitrix:catalog.top", "hit_on_main",     Array(        "ROTATE_TIMER" => "30"   ),     false);?>  
Может Вы как-то по другому реализуете данную задачу.  Подскажите плиз)

Как правило, из 1С передается (очень давно не делал сайты без 1С) свойства "Скидка"
Это просто число, можно и строкой передавать, но число удобнее. Можно, например, использовать в умном фильтре с ползунками От-До
И навесить бирку с величиной скидки

В нужном месте сайта вызываю catalog.section и навешиваю фильтр, который просто проверяет свойство "Скидка" на пустоту (отфильтрует не пустые)
Пример тут http://copy.baby-shoes.su/sales/
Код
<? $GLOBALS['arrFilter'] = array('ACTIVE' => 'Y', '!PROPERTY_DISCOUNTS' => false); ?> <? $APPLICATION->IncludeComponent( ..... "FILTER_NAME" => "arrFilter", ..... ?> 
Евгений 30.05.2017
Михаил, спасибо за ответ.
Вячеслав Вавилин 14.09.2017
Михаил,добрый день. попробовал реализовать таб меню,вроде получилось, но при переключении табов предыдущие вкладки не пропадают( шаблон компонента не трогал )
вот код :            подскажите что я мог упустить? как прописать условие,чтобы при переключении не происходило выпадания предыдущей вкладки?
Скрытый текст
Михаил Базаров 14.09.2017
Тут, вам, скорее- нужно смотреть свою верстку и скрипты. Что-то с чем-то конфликтует
Артур 05.12.2017
Здравствуйте, подскажите возможно ли вывести "топ товаров" в детальной карте товара по аналогичному значению заполненного свойства???
к примеру зашли мы в карточку товара "Телевизор" у него есть свойство "Модель - ИЗОГНУТЫЙ"
и тут же вывести топ телевизоров со свойством "Модель - ИЗОГНУТЫЙ"
Михаил Базаров 05.12.2017
Цитата
Артур написал:
Здравствуйте, подскажите возможно ли вывести "топ товаров" в детальной карте товара по аналогичному значению заполненного свойства???
к примеру зашли мы в карточку товара "Телевизор" у него есть свойство "Модель - ИЗОГНУТЫЙ"
и тут же вывести топ телевизоров со свойством "Модель - ИЗОГНУТЫЙ"
Да, в настройках топа задайте правило сотритровки, с выбором "другое" property_ВАШЕ_СВОЙСТВО