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

RSS
Серия 21: Умный фильтр и ответы на вопросы
 
Серия 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 всегда показываются полными и доступными для отображения?
 
Добрый день Михаил. У меня есть проблемы с Вашей заготовкой, может подскажите как их решить.

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

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

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

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