Меню

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

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 канал: Видео на Bst

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

Объединить отдельные поля ФИО в одно свойство при оформлении заказа.

Пользователь, при оформлении заказа, заполняет три отдельных поля с фамилией, именем и отчеством. Нам нужно сохранить эт...

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

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

Сниппеты типографики bootstrap, для Битрикс

Если вы подключили bootstrap к своему сайту, или сверстали весь шаблон, подключив bootstrap из ядра битрикс. Имеет смысл...

Получить все товары из всех заказов пользователя. История купленных товаров.

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

Если пользователь авторизован то... API Битрикс

Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, некую информацию, доступную только...

Звездочки в рейтинге Битрикс статей и товаров каталога

Задача: изменить вывод рейтинга элемента на звездочки, с помощью шаблона iblock.vote в товарах и новостях.

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...

Валидация пароля и подтверждения при регистрации в битрикс

Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистрации сайта под управлением Битрик...

CRM Битрикс-24 на веб-окружении под Ubuntu 24.04, c поддержкой PUSH и многосайтовости

Задача: Так как с 30 июня 2024 года операционная система CentOS-7 полностью снята с поддержки и не будет получать обновл...