Телеграм:@camouf_ruПочта:mihail@bazarow.ru
ЛетоОсеньЗимаВесна

Серия 21: Умный фильтр и ответы на вопросы

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

Выводим и включаем умный фильтр в каталоге. И ответы на вопросы из комментариев из предыдущих серий.

Для вывода умного фильтра в боковой панели:
1) Добавляем включаемую область в боковую панель шаблона сайта.

2) В шаблоне умного фильтра, обворачиваем вывод form в такой код
<?$this->SetViewTarget("left_area");?>
<form name="<?echo $arResult["FILTER_NAME"]."_form"?>
.....
</form>
<?$this->EndViewTarget("left_area");?>

3) Во включаемую область вставляем код <?$APPLICATION->ShowViewContent("left_area")?>

Скачать дополнительные файлы, можно по ссылке ниже

Серия 21: Умный фильтр и ответы на вопросы

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


Все серии

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

Андрей Колчанов27.02.2018
Добрый день, Михаил!

Не знаю куда написать, решил написать сюда.

В карточке товара выводиться список Свойств:

Код
<? foreach ($arResult["DISPLAY_PROPERTIES"] as $pid => $arProperty): ?>     <li>         <strong><?= $arProperty["NAME"] ?>:</strong>         <span><? echo $arProperty["DISPLAY_VALUE"]; ?></span>         <div class="clb"></div>     </li> <? endforeach ?> 

Вопрос можно ли как-то одно из свойств отключить? Чтобы оно не отображалось в карточке товара, чтобы его вывести в другом месте карточки.

Например, есть свойство Артикул, и он уже выводится выше:

Код
<? if ($arResult["DISPLAY_PROPERTIES"]['ATT_BARCADE'])?> <?=$arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['NAME']?>: <?echo $arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['DISPLAY_VALUE'];?> 
Михаил Базаров27.02.2018
Цитата
Андрей Колчанов написал:
Добрый день, Михаил!

Не знаю куда написать, решил написать сюда.

В карточке товара выводиться список Свойств:
Код
 <? foreach ($arResult["DISPLAY_PROPERTIES"] as $pid => $arProperty): ?>     <li>         <strong><?= $arProperty["NAME"] ?>:</strong>         <span><? echo $arProperty["DISPLAY_VALUE"]; ?></span>         <div class="clb"></div>     </li> <? endforeach ?> 

Вопрос можно ли как-то одно из свойств отключить? Чтобы оно не отображалось в карточке товара, чтобы его вывести в другом месте карточки.

Например, есть свойство Артикул, и он уже выводится выше:
Код
 <? if ($arResult["DISPLAY_PROPERTIES"]['ATT_BARCADE'])?> <?=$arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['NAME']?>: <?echo $arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['DISPLAY_VALUE'];?> 
Попробуйте отключить его в выводе компонента (в его настройках), что бы совсем пропало из вывода
А верхний вывод, смените DISPLAY_PROPERTIES на просто PROPERTIES

DISPLAY_PROPERTIES - как раз и отвечает на условие, что-то вроде "Если свойство выбрано для вывода- то показывать"
Андрей Колчанов27.02.2018
Если просто заменяю DISPLAY_PROPERTIES на просто PROPERTIES

Код
<? if ($arResult["PROPERTIES"]['ATT_BARCADE'])?> <?=$arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['NAME']?>:     <?echo $arResult['DISPLAY_PROPERTIES']['ATT_BARCADE']['DISPLAY_VALUE'];?> 

и НЕ отключаю его в выводе компонента,
то сверху выводится только "Артикул:"
самого артикль нет.

Пришлось вывод сделать так:

Код
Артикул: <? echo $arResult["PROPERTIES"]["ATT_BARCADE"]["~VALUE"];?> 
и отключаю его в выводе компонента.
Так заработало!!! Спасибо!
Андрей Колчанов27.02.2018
Михаил, помогите пожалуйста:
Делаю вывод с условием:
Код
<? if ($arResult["PROPERTIES"]["ATT_NOTE"]) {?> <h3><?=$arResult["PROPERTIES"]["ATT_NOTE"]["NAME"]?>:</h3> <div class="note_text"> <?=htmlspecialcharsBack($arResult["PROPERTIES"]["ATT_NOTE"]["VALUE"]["TEXT"])?> </div> <?}?> 
А условие не работает, т.е. всегда выводиться даже когда значение свойство не указано.

А если включаю его в выводе компонента и меняю DISPLAY_PROPERTIES , то работает.
но а мне надо чтобы работало с PROPERTIES  :)
Михаил Базаров27.02.2018
Цитата
Андрей Колчанов написал:
Михаил, помогите пожалуйста:
Делаю вывод с условием:
Код
 <? if ($arResult["PROPERTIES"]["ATT_NOTE"]) {?> <h3><?=$arResult["PROPERTIES"]["ATT_NOTE"]["NAME"]?>:</h3> <div class="note_text"> <?=htmlspecialcharsBack($arResult["PROPERTIES"]["ATT_NOTE"]["VALUE"]["TEXT"])?> </div> <?}?> 
А условие не работает, т.е. всегда выводиться даже когда значение свойство не указано.

А если включаю его в выводе компонента и меняю DISPLAY_PROPERTIES , то работает.
но а мне надо чтобы работало с PROPERTIES  
Код
<?if (strlen($arResult['PROPERTIES']['ATT_NOTE']['~VALUE']) !== 0 {?> КОД ИЛИ ЧТО УГОДНО <?}?>
Андрей Колчанов27.02.2018
Цитата
Михаил Базаров пишет:
Код
 <?if (strlen($arResult['PROPERTIES']['ATT_NOTE']['~VALUE']) !== 0 {?> КОД ИЛИ ЧТО УГОДНО <?}?> 
ООО, отлично спасибо, теперь заработало!
Алексей03.03.2018
Здравствуйте, Михаил.

Извиняюсь, что беспокою по пустякам..

У  меня  возникла  проблема  ,  описанная вами в Видео № 15 - создание
торговых  предложений...
 Там  ,  при создании HIGHLOAD инфоблока типа
"Справочник",  если  значение не картинка , а некий текст или цифровое
значение  (у вас в видео значение памяти 32 Гб и 128Гб) то на карточке
товара  (да  и в разделе)  не выводится значение, а просто окошко "нет
фото" (скриншот прилагаю) .  Вы  обещали  рассказаать как решить эту проблему позже... но
судя по тому , что видео уже закончилось продолжения мы не узнаем...(

У  меня  огромная  просьба: не могли бы вы рассказать как , все таки ,
вывести значение , а не фото .

Зараннее благодарен, Спасибо за ваши видео/ Очень нужен ваш ответ.
Михаил Базаров04.03.2018
Цитата
Алексей написал:
Здравствуйте, Михаил.

Извиняюсь, что беспокою по пустякам..

У  меня  возникла  проблема  ,  описанная вами в Видео № 15 - создание
торговых  предложений...
 Там  ,  при создании HIGHLOAD инфоблока типа
"Справочник",  если  значение не картинка , а некий текст или цифровое
значение  (у вас в видео значение памяти 32 Гб и 128Гб) то на карточке
товара  (да  и в разделе)  не выводится значение, а просто окошко "нет
фото" (скриншот прилагаю) .  Вы  обещали  рассказаать как решить эту проблему позже... но
судя по тому , что видео уже закончилось продолжения мы не узнаем...(

У  меня  огромная  просьба: не могли бы вы рассказать как , все таки ,
вывести значение , а не фото .

Зараннее благодарен, Спасибо за ваши видео/ Очень нужен ваш ответ.
Да, видимо забыл про это. Расскажу в продолжениях.
Там все просто, на самом деле. Найдите участок в шаблоне, который выводит эту информацию. Там текстовое значение содержится в теге  <i> В его titile
Что-то вроде (переменную пишу по памяти)
<i title="<?=$PropTitle?>">

Эту переменную просто и вынесете вместо вывода картинки.
Роман Сергеевич05.03.2018
Остатки по складам я вывел так:
В файле \local\templates\bxstore\components\bitrix\catalog\simple\bi­trix\catalog.element\.default\template.php вставил код, сразу после "В наличии"
Код
<?$APPLICATION->IncludeComponent( "bitrix:catalog.store.amount", "", Array( "STORES" => array("10", "12"), "ELEMENT_ID" => $arResult['ID'], "ELEMENT_CODE" => "", "OFFER_ID" => "", "STORE_PATH" => "/store/#store_id#", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000", "USER_FIELDS" => array("",""), "FIELDS" => array("TITLE","ADDRESS","PHONE","SCHEDULE",""), "SHOW_EMPTY_STORE" => "Y", "USE_MIN_AMOUNT" => "N", "SHOW_GENERAL_STORE_INFORMATION" => "N", "MIN_AMOUNT" => "0" ) );?> 
Ну и далее стилизовал вот таким способом, в файле style.scss в этой же папке

Код
.bx_storege {   hr {     margin: 0 20px 0 0; }   #c_store_amount {     padding-left: 20px; border-bottom: 1px solid $gray2; margin-right: 30px; li {       padding-bottom: 5px; }   } } 
Роман Сергеевич05.03.2018
Большое спасибо за уроки, Михаил! Очень информативно, полезно и интересно. С нетерпением жду продолжения, и надеюсь что энтузиазм не угаснет.
Как видно, на bxstore уже работает новый функционал (например, клик на сердечко для добавления в избранное) и изменился дизайн умного фильтра. Эти изменения будут выложены в доступ для ознакомления?
menicheka@gmail.com31.08.2018
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
Михаил Базаров31.08.2018
Цитата
menicheka@gmail.com написал:
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
А кто говорит, что нет такой возможности)?
Делается очень просто: скопируйте вызов умного фильтра из sections.php и в section.php, до вызова catalog.section
И все  ;)

Для полного понимания, это вам поможет (не совсем, ответ на тему, но суть та же) https://camouf.ru/blog-note/2502/
menicheka@gmail.com05.09.2018
Цитата
Михаил Базаров написал:
Цитата
   menicheka@gmail.com написал:
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
А кто говорит, что нет такой возможности)?
Делается очень просто: скопируйте вызов умного фильтра из sections.php и в section.php, до вызова catalog.section
И все  

Для полного понимания, это вам поможет (не совсем, ответ на тему, но суть та же)  https://camouf.ru/blog-note/2502/
Отлично!
Тогда у меня следующий вопрос, а можно сделать разные фильтры? т.е. на полный каталог один фильтр, а на группы товаров другой?
Михаил Базаров06.09.2018
Цитата
menicheka@gmail.com написал:
Цитата
Михаил Базаров написал:
 
Цитата
    menicheka@gmail.com  написал:
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
 А кто говорит, что нет такой возможности)?
Делается очень просто: скопируйте вызов умного фильтра из sections.php и в section.php, до вызова catalog.section
И все  

Для полного понимания, это вам поможет (не совсем, ответ на тему, но суть та же)   https://camouf.ru/blog-note/2502/  
Отлично!
Тогда у меня следующий вопрос, а можно сделать разные фильтры? т.е. на полный каталог один фильтр, а на группы товаров другой?
В плане дизайна разные? Да, просто создайте два шаблона и вставте настройках вызова фильтра, в
section.php и sections.php
menicheka@gmail.com06.09.2018
Цитата
Михаил Базаров написал:
Цитата
   menicheka@gmail.com написал:
 
Цитата
Михаил Базаров  написал:
 
Цитата
     menicheka@gmail.com   написал:
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
  А кто говорит, что нет такой возможности)?
Делается очень просто: скопируйте вызов умного фильтра из sections.php и в section.php, до вызова catalog.section
И все  

Для полного понимания, это вам поможет (не совсем, ответ на тему, но суть та же)    https://camouf.ru/blog-note/2502/  
 Отлично!
Тогда у меня следующий вопрос, а можно сделать разные фильтры? т.е. на полный каталог один фильтр, а на группы товаров другой?
В плане дизайна разные? Да, просто создайте два шаблона и вставте настройках вызова фильтра, в
section.php и sections.php
Благодарю, буду пробовать :)
menicheka@gmail.com18.09.2018
Михаил, добрый день.
В Умном фильтре алгоритм фильтрации производится след. образом: есть у нас СВ1, СВ2, СВ3 - при выборе СВ1 - происходит фильтрация значений СВ2 и СВ3, если же мы выбираем значение из СВ2 - то фильтр накладывается на СВ1 и СВ3, выбор значения СВ3 - влияет на СВ1 и СВ2. Есть ли возможность управлять данным алгоритмом? если например, нужно убрать влияние на первое свойство? Выбираю я СВ3 - меняются только СВ2, а СВ1 всегда показываются полными и доступными для отображения?
Сергей Харчевников09.10.2018
Добрый день Михаил. У меня есть проблемы с Вашей заготовкой, может подскажите как их решить.

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

Во вторых пагинация не выводится.

И в третих список сравнения не работает.
Ysmayyl27.01.2022
Здравствуйте Михаил!
Как сделать многоязычность на сайте?

Зараннее благодарен. Спасибо за ваши видеоуроки. Очень нужен ваш ответ.
Михаил Базаров29.01.2022
Можно запустить второй (третий- сколько нужно языковых версий) сайт, через многосайтовость
Подробнее тут https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=103&LESSON_ID=287
Гость04.04.2022
Добрый день Михаил! Можно ли как то создать условие "если фильтр задан" в catalog.section? Если пользователь не выбрал ни одно значение в фильтре, то не выводить товары, если выбрал, то выводить с учетом диапазона этого свойства или свойств. Например, если пользователь выбрал ширину 500, то выводить товары с шириной от 450 до 550. Только один инпут использовать, не диапазон "от - до". Что-то на подобие мастера подбора похожих товаров. Спасибо:)