Вывести все товары, с постраничной навигацией, из всех разделов инфоблока

RSS
Вывести все товары, с постраничной навигацией, из всех разделов инфоблока
 
Вывести все товары, с постраничной навигацией, из всех разделов инфоблока

По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е товаров вывести все товары всех разделов инфоблока, с постраничной навигацией. Да, и еще навесить умный фильтр над этим делом. Все очень просто- рассказываю
 
Здравствуйте, Михаил! Спасибо за статью. Как раз появилась задача вывести умный фильтр на странице производителя со списком товаров. Ранее выводился просто catalog.top.
Переделал на сatalog.section. Перед вызовом сatalog.section вставил bitrix:catalog.smart.filter, но умный фильтр не работает (выводятся только кнопки "Показать" и "Сбросить" ).
Не могли бы вы подсказать как заставить умный фильтр работать?

Код

Код
<?$APPLICATION->IncludeComponent(
            "bitrix:catalog.smart.filter",
            "",
            array(
                "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
                "IBLOCK_ID" => $arParams["IBLOCK_ID"],
                "SECTION_ID" => $arCurSection['ID'],
                "FILTER_NAME" => $arParams["FILTER_NAME"],
                "PRICE_CODE" => $arParams["PRICE_CODE"],
                "CACHE_TYPE" => $arParams["CACHE_TYPE"],
                "CACHE_TIME" => $arParams["CACHE_TIME"],
                "CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
                "DISPLAY_ELEMENT_COUNT" => "Y",
                "SAVE_IN_SESSION" => "N",
                "FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
                "XML_EXPORT" => "Y",
                "SECTION_TITLE" => "NAME",
                "SECTION_DESCRIPTION" => "DESCRIPTION",
                'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"],
                "TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
                'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
                'CURRENCY_ID' => $arParams['CURRENCY_ID'],
                "SEF_MODE" => $arParams["SEF_MODE"],
                "SEF_RULE" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["smart_filter"],
                "SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
                "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
            ),
            $component,
            array('HIDE_ICONS' => 'Y')
        );?>



Код
<? $GLOBALS["ArrFilterManuf"] = array('PROPERTY_10' => $ElementID); ?>
<?$APPLICATION->IncludeComponent(
   "bitrix:catalog.section", 
   ".default", 
   array(
      "TEMPLATE_THEME" => "blue",
      "PRODUCT_DISPLAY_MODE" => "N",
      "ADD_PICT_PROP" => "-",
      "LABEL_PROP" => "-",
      "OFFER_ADD_PICT_PROP" => "FILE",
      "OFFER_TREE_PROPS" => array(
         0 => "-",
      ),
      "PRODUCT_SUBSCRIPTION" => "N",
      "SHOW_DISCOUNT_PERCENT" => "N",
      "SHOW_OLD_PRICE" => "N",
      "SHOW_CLOSE_POPUP" => "Y",
      "MESS_BTN_BUY" => "Купить",
      "MESS_BTN_ADD_TO_BASKET" => "В корзину",
      "MESS_BTN_SUBSCRIBE" => "Подписаться",
      "MESS_BTN_DETAIL" => "Подробнее",
      "MESS_NOT_AVAILABLE" => "Нет в наличии",
      "AJAX_MODE" => "Y",
      "SEF_MODE" => "N",
      "IBLOCK_TYPE" => "catalog",
      "IBLOCK_ID" => "2",
      "SECTION_ID" => $_REQUEST["SECTION_ID"],
      "SECTION_CODE" => "",
      "SECTION_USER_FIELDS" => array(
         0 => "",
         1 => "",
      ),
      "ELEMENT_SORT_FIELD" => "sort",
      "ELEMENT_SORT_ORDER" => "asc",
      "ELEMENT_SORT_FIELD2" => "name",
      "ELEMENT_SORT_ORDER2" => "asc",
      "FILTER_NAME" => "ArrFilterManuf",
      "INCLUDE_SUBSECTIONS" => "Y",
      "SHOW_ALL_WO_SECTION" => "Y",
      "SECTION_URL" => "",
      "DETAIL_URL" => "",
      "BASKET_URL" => "/personal/basket.php",
      "ACTION_VARIABLE" => "action",
      "PRODUCT_ID_VARIABLE" => "id",
      "PRODUCT_QUANTITY_VARIABLE" => "quantity",
      "ADD_PROPERTIES_TO_BASKET" => "Y",
      "PRODUCT_PROPS_VARIABLE" => "prop",
      "PARTIAL_PRODUCT_PROPERTIES" => "N",
      "SECTION_ID_VARIABLE" => "SECTION_ID",
      "ADD_SECTIONS_CHAIN" => "N",
      "DISPLAY_COMPARE" => "N",
      "SET_TITLE" => "N",
      "SET_BROWSER_TITLE" => "N",
      "BROWSER_TITLE" => "-",
      "SET_META_KEYWORDS" => "N",
      "META_KEYWORDS" => "",
      "SET_META_DESCRIPTION" => "N",
      "META_DESCRIPTION" => "",
      "SET_LAST_MODIFIED" => "N",
      "USE_MAIN_ELEMENT_SECTION" => "N",
      "SET_STATUS_404" => "N",
      "PAGE_ELEMENT_COUNT" => "9",
      "LINE_ELEMENT_COUNT" => "3",
      "PROPERTY_CODE" => array(
         0 => "NEWPRODUCT",
         1 => "SPECIALOFFER",
         2 => "MANUFACTURER",
         3 => "APPLICATION_AREA",
         4 => "AGE",
         5 => "categoty",
         6 => "colour_khna",
         7 => "SKIN_TYPE",
         8 => "line",
         9 => "bronze",
         10 => "osobennosti",
         11 => "APPOINTMENT",
         12 => "TYPE_OF_PRODUCT",
         13 => "FOR_WHOM",
         14 => "APPOINTMENT_BODY",
         15 => "ARTNUMBER",
         16 => "HAIR_LENGTH",
         17 => "VOLUME",
         18 => "",
      ),
      "OFFERS_FIELD_CODE" => array(
         0 => "",
         1 => "",
      ),
      "OFFERS_PROPERTY_CODE" => array(
         0 => "",
         1 => "",
      ),
      "OFFERS_SORT_FIELD" => "sort",
      "OFFERS_SORT_ORDER" => "asc",
      "OFFERS_SORT_FIELD2" => "active_from",
      "OFFERS_SORT_ORDER2" => "desc",
      "OFFERS_LIMIT" => "5",
      "BACKGROUND_IMAGE" => "-",
      "PRICE_CODE" => array(
         0 => "BASE",
      ),
      "USE_PRICE_COUNT" => "Y",
      "SHOW_PRICE_COUNT" => "1",
      "PRICE_VAT_INCLUDE" => "Y",
      "PRODUCT_PROPERTIES" => array(
      ),
      "USE_PRODUCT_QUANTITY" => "Y",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "36000000",
      "CACHE_FILTER" => "N",
      "CACHE_GROUPS" => "Y",
      "DISPLAY_TOP_PAGER" => "N",
      "DISPLAY_BOTTOM_PAGER" => "Y",
      "PAGER_TITLE" => "Товары",
      "PAGER_SHOW_ALWAYS" => "N",
      "PAGER_TEMPLATE" => "",
      "PAGER_DESC_NUMBERING" => "Y",
      "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
      "PAGER_SHOW_ALL" => "Y",
      "HIDE_NOT_AVAILABLE" => "Y",
      "OFFERS_CART_PROPERTIES" => array(
      ),
      "AJAX_OPTION_JUMP" => "N",
      "AJAX_OPTION_STYLE" => "Y",
      "AJAX_OPTION_HISTORY" => "N",
      "CONVERT_CURRENCY" => "Y",
      "CURRENCY_ID" => "RUB",
      "ADD_TO_BASKET_ACTION" => "ADD",
      "PAGER_BASE_LINK_ENABLE" => "Y",
      "SHOW_404" => "N",
      "MESSAGE_404" => "",
      "PAGER_BASE_LINK" => "",
      "PAGER_PARAMS_NAME" => "arrPager",
      "COMPONENT_TEMPLATE" => ".default",
      "MESS_BTN_COMPARE" => "Сравнить",
      "AJAX_OPTION_ADDITIONAL" => "",
      "FILE_404" => "",
      "DISABLE_INIT_JS_IN_COMPONENT" => "N"
   ),
   false
);?>
 
Цитата
Владимир Мороз написал:
Здравствуйте, Михаил! Спасибо за статью. Как раз появилась задача вывести умный фильтр на странице производителя со списком товаров. Ранее выводился просто catalog.top.
Переделал на сatalog.section. Перед вызовом сatalog.section вставил bitrix:catalog.smart.filter, но умный фильтр не работает (выводятся только кнопки "Показать" и "Сбросить" ).
Не могли бы вы подсказать как заставить умный фильтр работать?

Код
Код
 <?$APPLICATION->IncludeComponent(
            "bitrix:catalog.smart.filter",
            "",
            array(
                
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
                "IBLOCK_ID" => $arParams["IBLOCK_ID"],
                "SECTION_ID" => $arCurSection['ID'],
                "FILTER_NAME" => $arParams["FILTER_NAME"],
                "PRICE_CODE" => $arParams["PRICE_CODE"],
                "CACHE_TYPE" => $arParams["CACHE_TYPE"],
                "CACHE_TIME" => $arParams["CACHE_TIME"],
                "CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
                "DISPLAY_ELEMENT_COUNT" => "Y",
                "SAVE_IN_SESSION" => "N",
                "FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
                "XML_EXPORT" => "Y",
                "SECTION_TITLE" => "NAME",
                "SECTION_DESCRIPTION" => "DESCRIPTION",
                'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"],
                "TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
                'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
                'CURRENCY_ID' => $arParams['CURRENCY_ID'],
                "SEF_MODE" => $arParams["SEF_MODE"],
                "SEF_RULE" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["smart_filter"],
                "SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
                "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
            ),
            $component,
            array('HIDE_ICONS' => 'Y')
        );?>



 
Думаю, ошибка у вас в настройках фильтра. Вы передаете не понятные ему параметры в
Код
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
                "SECTION_ID" => $arCurSection['ID'],
                "FILTER_NAME" => $arParams["FILTER_NAME"],
                "PRICE_CODE" => $arParams["PRICE_CODE"],
                "CACHE_TYPE" => $arParams["CACHE_TYPE"],
                "CACHE_TIME" => $arParams["CACHE_TIME"],

попробуйте просто вписать необходимые данные
 
Спасибо, буду разбираться с параметрами
 
Михаил, здравствуйте. Немного не понял
Цитата

Копируем catalog.section из section.php в sections.php, просто как есть.
У меня в файле section.php идет только проверка на то, как располагается фильтр - горизонтально или вертикально.
Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
use Bitrix\Main\Loader;
use Bitrix\Main\ModuleManager;

if ($isFilter)
{
...СОКРАЩЕНО МОДЕРАТОРОМ ТУТ ТИПОВОЙ ВЫЗОВ ИЗ ОДЕЖДА+...
</div>
Тк я хочу вывести фильтр горизонтально, иду в файл section_horizontal.php.
Код
 <? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
...СОКРАЩЕНО МОДЕРАТОРОМ ТУТ ТИПОВОЙ ВЫЗОВ ИЗ ОДЕЖДА+...
</div>
<? endif ?>
В  этом файле я вижу что сначала идет вызов умного фильтра bitrix:catalog.smart.filter, затем блок распродаж bitrix:sale.products.gift.section, затем идет список разделов bitrix:catalog.section.list, далее  вызов компонента сравниваемых товаров bitrix:catalog.compare.list и наконец вызов  компонента конкретного раздела bitrix:catalog.section и дальше еще 1 вызов при условии что установлен модуль магазина . Вот с этого момента я не понял что именно нужно сделать по вашему примеру, для вывода всех элементов в корне инфоблока. Не пойму что копировать + не вижу строчку
Цитата
"SHOW_ALL_WO_SECTION" => "N",
в коде вызова catalog.section ....... Подскажите что я упустил из внимания
PS. Использую редакцию Старт. Обновления все свежие
 
Цитата
Кирилл написал:
Михаил, здравствуйте. Немного не понял

Обрезано: вопрос в предыдущем посте

Я думаю, вот это вам прояснит ситуацию. Тут я вызываю умный фильтр, но перед этим делаю необходимые правки, как раз уместные для вашей ситуации

https://camouf.ru/blog-note/2502/
 
Цитата
Михаил Базаров пишет:
Я думаю, вот это вам прояснит ситуацию. Тут я вызываю умный фильтр, но перед этим делаю необходимые правки, как раз уместные для вашей ситуации

https://camouf.ru/blog-note/2502/
Спасибо, понятный урок на видео. Вывел все товары в корне каталога.  Сверху (в корне каталога)  навесил вывод фильтра с условием


Код
<?$show_root_filter = "/test2/";
if (strstr($APPLICATION->GetCurDir(), $show_root_filter)) {
... вызов компонента умного фильтра ...
 }
Однако при фильтрации данный фильтр показывает что выбрано 0 элементов, однако если нажать показать элементы подходящие по параметру, то показывает как и нужно. Это вообще правится или проще скрыть  показ количества элементов при выбранных параметрах фильтра?


PS. есть еще второй вопрос немного не по теме. (Вы слету определили шаблон который я пытаюсь кастомизировать, поэтому попробую его вам задать)
Пытаюсь кастомизировать компонент catalog для этого я хочу перенести  его в папку local для этого скопировал комплексный компонент catalog через режим правки, затем я скопировал через админку комплексный компонент catalog.section и добавил к дефолтному шаблону .default свой шаблон /local/templates/шаблон_сайта/components/bitrix/catalog.section/kirill-catalog-section/
После добавления шаблона под моим названием я вносил изменения в код вызова компонента (менял .default на свое название)
Однако в catalog.section после [COLOR=#00ff00]<!-- items-container -->[/COLOR] есть управляющая констукция switch() в которой в зависимости от условия case подключается  компонент  bitrix:catalog.item
Вот с ним у меня возникла проблема -  пытался также скопировать папку компонента в   /local/templates/шаблон_сайта/components/bitrix/catalog.item/templates/.default/card/


Однако этот шаблон не подтягивается - вместо него подтягивается шаблон из /bitrix/components/bitrix/catalog.item/templates/.default/card/

Также пытался создать свой шаблон /local/templates/шаблон_сайта/components/bitrix/catalog.item/templates/moi_shablon/card/ и прописать его вызов в catalog.section

Код
 case 2:
                  ?>
                  <div class="col-xs-12 product-item-small-card">
                     <div class="row">
                        <?
                        foreach ($rowItems as $item)
                        {
                           ?>
                           <div class="col-sm-4 product-item-big-card">
                              <div class="row">
                                 <div class="col-md-12">
                                    <?
                                    $APPLICATION->IncludeComponent(
                                       'bitrix:catalog.item',
                                       'moi_shablon',
                                       array(
                                          'RESULT' => array(
                                             'ITEM' => $item,
                                             'AREA_ID' => $areaIds[$item['ID']],
                                             'TYPE' => $rowData['TYPE'],
                                             'BIG_LABEL' => 'N',
                                             'BIG_DISCOUNT_PERCENT' => 'N',
                                             'BIG_BUTTONS' => 'Y',
                                             'SCALABLE' => 'N'
                                          ),
                                          'PARAMS' => $generalParams
                                             + array('SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']])
                                       ),
                                       $component,
                                       array('HIDE_ICONS' => 'Y')
                                    );
                                    ?>
                                 </div>
                              </div>
                           </div>
                           <?
                        }
                        ?>
                     </div>
                  </div>
                  <?
                  break;
Однако подтягивается все равно не из папки local.

Если не сложно и есть время подскажите в чем моя ошибка.
 
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки  [COLOR=#ff0000]/local/templates/шаблон_сайта/components/bitrix/catalog.item/[/COLOR] а нужно было [COLOR=#00a650] /local/components/мое_пространство_имён/catalog.item/[/COLOR] Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
 
Цитата
Кирилл написал:
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки    /local/templates/шаблон_сайта/components/bitrix/catalog.item/   а нужно было    /local/components/мое_пространство_имён/catalog.item/   Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
А зачем вы скопировали компонент? Или кастомизировали его логику? Если просто шаблон дорабатывали- лучше всетаки, скопировать именно шаблон компонента в шаблон своего сайта
 
Добрый день.

Вывел все товары на отдельной странице с помощью catalog.section ,
навесил фильтр чтоб показывались только товары со свойством - "спецпредложение".
Никак не получается вывести цену. В template.php цена выводится в этой строчке:

<span class="price" id="product-price-<?=$arItem["ID"]?>"><?=$arItem["MIN_PRICE"]["PRINT_VALUE"]?>

В битриксе только пытаюсь разобраться, куда смотреть?
 
Цитата
Михаил Базаров пишет:
Цитата
Кирилл написал:
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки /local/templates/шаблон_сайта/components/bitrix/catalog.item/ а нужно было /local/components/мое_пространство_имён/catalog.item/ Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
А зачем вы скопировали компонент? Или кастомизировали его логику? Если просто шаблон дорабатывали- лучше всетаки, скопировать именно шаблон компонента в шаблон своего сайта
Михаил, добрый вечер!
Аналогичная проблема.. Просто копирование шаблона компонента catalog.item в папку шаблона в local результата не приносит. В Ваших уроках используется старый шаблон каталога. Там проблем с редактированием карточки товара в списке проблем нет. А вот с новым каталогам - проблемка.. Тянет почему-то упорно шаблон из папки битрикс.. Может сталкивались с таким недугом?
 
Цитата
Алексей Коновалов пишет:
Цитата
Михаил Базаров пишет:
Цитата
Кирилл написал:
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки /local/templates/шаблон_сайта/components/bitrix/catalog.item/ а нужно было /local/components/мое_пространство_имён/catalog.item/ Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
А зачем вы скопировали компонент? Или кастомизировали его логику? Если просто шаблон дорабатывали- лучше всетаки, скопировать именно шаблон компонента в шаблон своего сайта
Михаил, добрый вечер!
Аналогичная проблема.. Просто копирование шаблона компонента catalog.item в папку шаблона в local результата не приносит. В Ваших уроках используется старый шаблон каталога. Там проблем с редактированием карточки товара в списке проблем нет. А вот с новым каталогам - проблемка.. Тянет почему-то упорно шаблон из папки битрикс.. Может сталкивались с таким недугом?
Если скопировали компонент в лоб с папкой 'templates', работать не будет. Исключите эту промежуточную папку в компоненте item и все будет.
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе