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

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

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

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

Код
<? 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'];?> 
Цитата
Андрей Колчанов написал:
Добрый день, Михаил!

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

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

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

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

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

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

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

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

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

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

Эту переменную просто и вынесете вместо вывода картинки.
Остатки по складам я вывел так:
В файле \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;
 }
  }
}
 
Большое спасибо за уроки, Михаил! Очень информативно, полезно и интересно. С нетерпением жду продолжения, и надеюсь что энтузиазм не угаснет.
Как видно, на bxstore уже работает новый функционал (например, клик на сердечко для добавления в избранное) и изменился дизайн умного фильтра. Эти изменения будут выложены в доступ для ознакомления?
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
Цитата
menicheka@gmail.com написал:
Добрый день, Михаил. Можно ли вставить умный фильтр в корень каталога? Есть общий каталог, который отображает все товары, в нем необходимо вставить умный фильтр. Говорят, что нет такой возможности в битриксе. А Какие есть варианты реализации такой задачи?
А кто говорит, что нет такой возможности)?
Делается очень просто: скопируйте вызов умного фильтра из sections.php и в section.php, до вызова catalog.section
И все  ;)

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

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

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

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

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

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

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

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

Если начинаю фильтровать в разделах (т.е. я был в главном разделе недвижимость, там все работает корректно, спустился на раздел ниже и вот так фильтр себя начал вести)
подскажите куда смотреть что бы привязать ползунок к подвижному элементу?
Смотрел полный ролик на boosty но там не затронулся этот вопрос
Я еще студент, и в js вроде бы нашел кусок кода отвечающий за ползунки. Но не смог дать им ума... Помогите пожалуйста, 2й день не сплю камни летят в мою сторону))
Скрин фильтра, код полностью ваш максимум что менял так это css
Сейчас негде проверить, но установка этих ползунков прямо в template.php кусочек кода должен быть.
Может быть в моем фильтре что-то в нем сломано.

Сравните со штатным шаблоном (и есть ли эта проблема вообще в штатном шаблоне)
дерите из него этот кусочек кода
Спасибо, сейчас проверю :)  
Да к сожалению ползунки и в  штатном шаблонен работают так
Штатный имел ввиду не мой, а битриксовый шаблон фильтра по умолчанию.
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

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

Сортировать товары по названию, цене и свойствам в каталоге 1С-Битрикс

Задача: реализовать возможность сортировки товаров в разделах каталога. Сортировка должна работать с использованием AJAX...

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

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

Установка поиска Sphinx на Ubuntu 22.04 для 1С-Битрикс

Задача: установить и сконфигурировать поиск Sphinx под управлением Ubuntu 22.04 и панели управления HestiaCP для использ...

События вызываемые при сохранении заказа, в 1С-Битрикс

Иногда необходимо выполнить определенные действия с заказом при его изменении. Для этого можно использовать события OnS...

Почтовое событие на создание нового элемента инфоблока, через API

Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблока простыми пользователям.Будет...

Создать pdf файл из элемента инфоблока, дать скачать пользователю, поддерживать в актуальном состоянии или отправить на e-mail.

Задача: при каждом посещении статьи, на сайте, нужно создавать pdf файл с ее содержимым и записывать в свойство инфоблок...

Проверка на наличие элементов, текущего пользователя, в заданном инфоблоке.

Если стоит задача, определить наличие элементов созданных пользователем на сайте. Можно воспользоваться API: CUser и CIB...

Прямое открытие мессенджеров по ссылке из приложения Apache Cordova

Задача: При клике по ссылкам на Telegram и WhatsApp в мобильном приложении необходимо сразу открывать мессенджеры без пр...

Мобильные версии страниц и поисковые системы

Согласно требования поисковых систем: Яндекс и Google, в случае если у вашего сайта имеется мобильная версия, нужно увед...