Данная заметка, является дополнением к написанной ранее.
Помечаем новинки лейблом в каталоге битрикс
Итак: мы хотим помечать новинки каталога, магазина на Битрикс, лейблом "Новинка". Так, что бы это происходило автоматически, а не отнимало время и ресурсы на ручную простановку/снятия лейбла.
Например: Что бы при выгрузке товаров из 1С, всем новым товарам навешивался лейбл и автоматически исчезал через месяц (время можно контролировать)
Для начала рисуем лейбл
Идем в шаблон вашего каталога, и осткрываем шаблон списка элементов раздела (catalog.section). Само собой, это можно проделать и с топом элементов и с детальной карточкой.
И в нужном месте, там где хотим вывести лейбл, вставляем вот такой код. По сути, делаем прямое сравнение двух дат на php - дабы получить разницу, между ними
<? $DateCreate = $arElement["DATE_CREATE"]; $CurDate = date("d.m.Y h:i:s"); $Difference = intval(abs( strtotime($CurDate) - strtotime($DateCreate) )); $DiffDates = $Difference / (3600 * 24); if ($DiffDates < 7){ echo '<div class="new_label"></div>'; } ?>
А в style.css, соответственно, стилевое оформление лейбла, с нашим фоновым рисунком
.new_label { position: relative; float: right; width: 42px; height: 27px; margin: 0px 0px -29px 0px; background: url('images/new.png') no-repeat; z-index: 100; }
Как понимаем, $DateCreate будет постоянно убегать в прошлое, и разрыв (разница CurDate и DateCreate) будет увеличиваться. Когда превысит 7- ярлык автоматом исчезнет. Количество дней можете контролировать самостоятельно, меняя его в условии
У товаров будет появляться наш лейбл
PS: Учтите систему кеширования и композитный сайт Битрикс. Лейбел может задерживаться со своим исчезновением. У меня задерживался и на целый день, на жестко закешированном сайте
![]()
Сергей Иванов
|
Добрый день, при условии if ($DiffDates < ... табличка не показывается какие бы я числа не вводил кроме более 20000, выводится только если > 1 и т.д., как думаете с чем может быть связано? Возможен такой вариант, что дата на сайте в другом формате, чем указано в скрипте?
Заранее огромное спасибо, отличная статья все легко и доходчиво ![]() |
![]()
Михаил Базаров
|
||
|
||
![]()
Сергей Иванов
|
||
|
||
![]()
Сергей Иванов
|
Михаил Базаров, Попробовал так: $CurDate = date("DD.MM.YYYY HH:MI:SS" ;) ;
Теперь показываются лейблы на всех товарах даже очень старых если я ставлю да <1. Видимо не тот формат для php функции =(( |
На нем, уже много видеоуроков по 1С-Битрикс. Как одиночные видео так и серии видеоуроков Перейти на канал
Совсем скоро выйдет видеокурс по разработке доски объявлений с мобильным приложением. Подписывайтесь и будьте в курсе: