Помечаем новинки лейблом в каталоге битрикс

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

Достаточно часто, при разработке каталога товаров или интернет магазина на системе управления Битрикс, встает задача как-то пометить новинки или спецпредложения. Как правило, это делается с помощью небольших лейблов которые вешаются на конкретный товар в списке всех товаров. Сделать это достаточно просто, и, возможно, не расскажу ничего нового. Однако, быть может, кому-то сгодится.

Для данной заметки есть дополнение Автоматически помечаем новинки лейблом в каталоге битрикс

Для начала идем в настройки инфоблока нашего торгового каталога и создаем новое свойство "Новинка" с типом список и атрибутом NEWPRODUCT

Лейбл новинка на товаре битрикс

Затем переходим в настройки этого свойства и задаем ему вид "Флажки" с одним значением Y-Да

Лейбл новинка на товаре битрикс

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

Лейбл новинка на товаре битрикс

Рисуем лейбл, здесь уже как душе угодно

Лейбл новинка на товаре битрикс

Идем по пути /bitrix/templates/ШАБЛОН_ВАШЕГО_САЙТА/compnents/bitrix/catalog/ШАБЛОН_ВАШЕГО_КАТАЛОГА/bitrix/catalog.section/.default/ создаем здесь папку images и кидаем в него картинку лейбла. По этому же пути открываем файлы template.php и style.css

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

 
<?if ($arElement["DISPLAY_PROPERTIES"]['NEWPRODUCT']){?> 
    <div class="novinko"></div> 
<?}?>

А в style.css, соответственно, стилевое оформление лейбла, с нашим фоновым рисунком

 
.novinko { 
   position: relative;
   float: right; 
   width: 42px; 
   height: 27px; 
   margin: 0px 0px -29px 0px; 
   background: url('images/new.png') no-repeat; 
   z-index: 100; 
}

Вот и все: после того как у нужных товаров будет поставлен чекбокс напротив свойства новинка.

Лейбл новинка на товаре битрикс

У товаров будет появляться наш лейбл

Лейбл новинка на товаре битрикс

Все ровно тоже самое можно проделывать с любыми "пометками" на товарах или новостях.

Михаил Базаров 19.08.2015
Цитата
Анатолий пишет:
Здравствуйте! Не могу понять как сделать лейб. Путь отличается от вашего

/bitrix/templates/mm/components/bitrix/catalog.section/catalog/template

Нужно по этому же пути создать папку images и кидать в него картинку лейбла? И по этому же пути открывать файлы template.php и style.css и прописывать коды?
Да. Вообще картинки можете сложить куда угодно, главное из файла стилей правильно путь до них впишите
Анатолий 20.08.2015
Цитата
Михаил Базаров пишет:
Да. Вообще картинки можете сложить куда угодно, главное из файла стилей правильно путь до них впишите
Ясно. Спасибо попробую
Сергей 09.09.2015
Здравствуйте.
Спасибо, отличный урок, все описано доходчиво.
Как можно реализовать вывод иконки, если свойство имеет несколько параметров - А, В, С. Свойство выгружается из 1с. Т.е используется не флаг а с выпадающего список.  Значения в 1с проставляются, и если значение = А то поставить флаг.
Спасибо.
Ivan 09.10.2015
Цитата
Михаил Базаров пишет:
Цитата
adelopod пишет:
<? if ($arItem[" а не <?if ($arElement чтобы выводилась картинка в разделах
Смотря где. В компоненте каталога arElement
Я выводил в разделе каталога, в анонсе, помог именно $arItem
Станислав 18.10.2015
Как аналогичное провернуть в карточке товара?
Михаил Базаров 29.01.2016
Цитата
Станислав пишет:
Как аналогичное провернуть в карточке товара?
Поменять $arElement на $arResult
Vaqif 03.04.2016
Здравствуйте михаил. Сделал все как показано. Лейбл не выводится. если поставить <div class="novinko"></div> вручную выводится.
Скажите пожалуйста есть ли альтернатива $arElement["DISPLAY_PROPERTIES"]['NEWPRODUCT']?
Думаю может у меня свойство гдето в другом месте хранится. или если есть функция вывода всех переменных чтобы я оттуда поискал то что мне надо. Дело в том что если я просто делаю echo $arElement["DISPLAY_PROPERTIES"] тоже ничего не выводит.
Спасибо
Михаил Базаров 03.04.2016
Цитата
Vaqif написал:
Здравствуйте михаил. Сделал все как показано. Лейбл не выводится. если поставить <div class="novinko"></div> вручную выводится.
Скажите пожалуйста есть ли альтернатива $arElement["DISPLAY_PROPERTIES"]['NEWPRODUCT']?
Думаю может у меня свойство гдето в другом месте хранится. или если есть функция вывода всех переменных чтобы я оттуда поискал то что мне надо. Дело в том что если я просто делаю echo $arElement["DISPLAY_PROPERTIES"] тоже ничего не выводит.
Спасибо
Код
<?
echo "<pre>";
print_r($arElement);
echo "</pre>";
?>
Vlad Vladij 17.10.2017
Спасибо за подсказку, реально помогло и работает, скажу всем остальным, у меня 16 версия битрикса и сработало только arItem, если у кого-то и после этого не отображается, то ищите глюк в стилях, возможно надо поменять позиционирование на absolute, у меня сработало :) А Михаилу спасибо!
Guest 25.04.2022
Добрый день, подскажите, пожалуйста, почему код мог сработать в карточке элемента, а в разделе нет? Какого кода может не хватать? Компонент полностью переделан, пытаюсь сравнить с исходником, уже идеи закончились что еще можно попробовать. $arElement/Item/Result в разделах не работают. В catalog.section стоит объявление  <? foreach ($arResult['ITEMS'] as $item): ?>. Если $arElement заменить на $item, лейбл выводится вообще у всех товаров. Помогите, пожалуйста.