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

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Вывести все товары, с постраничной навигацией, из всех разделов инфоблока
 
Вывести все товары, с постраничной навигацией, из всех разделов инфоблока

По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е товаров вывести все товары всех разделов инфоблока, с постраничной навигацией. Да, и еще навесить умный фильтр над этим делом. Все очень просто- рассказываю
 
Здравствуйте, Михаил! Спасибо за статью. Как раз появилась задача вывести умный фильтр на странице производителя со списком товаров. Ранее выводился просто 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 после <!-- items-container --> есть  управляющая констукция 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.

Если не сложно и есть время подскажите в чем моя ошибка.
 
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки  /local/templates/шаблон_сайта/components/bitrix/catalog.item/ а нужно было /local/components/мое_пространство_имён/catalog.item/ Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
 
Цитата
Кирилл написал:
Сам решил вопрос. Я олень. выше я писал что подтягивал компоненты из папки    /local/templates/шаблон_сайта/components/bitrix/catalog.item/   а нужно было    /local/components/мое_пространство_имён/catalog.item/   Вот такой вот я олень - не внимательно разобрался с пространствами имен, но теперь все пучком.
А зачем вы скопировали компонент? Или кастомизировали его логику? Если просто шаблон дорабатывали- лучше всетаки, скопировать именно шаблон компонента в шаблон своего сайта
Читают тему (гостей: 1)

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.
Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой. Политика конфеденциальности
x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения:


Нажимая на кнопку "Отправить", Вы соглашаетесь на обработку Ваших персональных данных согласно политике конфеденциальности. Ознакомиться с которой, можно в нижнем правом углу сайта