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

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

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

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

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

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

Все серии

Евгений 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_ВАШЕ_СВОЙСТВО