Телеграм: @bazarow_ru Почта: mihail@bazarow.ru

Вывести дату окончания скидки в карточке товара

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

Если нужно вывести информацию о скидке в карточке товара, можно воспользоваться методом CCatalogDiscount::GetList. Данный метод позволяет получить любую информацию о скидке: купон, название, типа скидки и.т.д. Но, я думаю, наиболее актуально вывести дату окончания скидки или количество дней до окончания.

Получаем информацию о скидке

Для начала, создаем скидку с интевалом в модуле маркетинга и выводим всю информацию о ней, в карточке товара:

$PRODUCT_ID = $arResult['ID'];
$dbProductDiscounts = CCatalogDiscount::GetList(
    array("SORT" => "ASC"),
    array(
            "+PRODUCT_ID" => $PRODUCT_ID,
            "ACTIVE" => "Y",
        ),
    false,
    false,
    array(
            "ID", 
            "SITE_ID", 
            "ACTIVE", 
            "ACTIVE_FROM", 
            "ACTIVE_TO", 
            "RENEWAL", 
            "NAME", 
            "SORT", 
            "MAX_DISCOUNT", 
            "VALUE_TYPE", 
    		"VALUE", 
    		"CURRENCY"
        )
    );
while ($arProductDiscounts = $dbProductDiscounts->Fetch())
{
   print_r($arProductDiscounts)
}

В массиве arProductDiscounts - распечатается вся доступная информация о скидке. Но нам нужна только дата завершения- ACTIVE_TO. Эту дату сразу загоняем в переменную $saleDateTo. Обратите внимание, что если скидка уже осталась в прошлом- дата выведется в любом случае. Что бы этого не происходило, в фильтре оставляем отбор по активности "ACTIVE" => "Y" (флаг активности у прошедших скидок,снимается автоматически).


$dbProductDiscounts = CCatalogDiscount::GetList(
    array("SORT" => "ASC"),
    array(
        "+PRODUCT_ID" => $arResult['ID'],
        "ACTIVE" => "Y"
    ),
    false,
    false,
    array(
        "ACTIVE_TO"
    )
);
while ($arProductDiscounts = $dbProductDiscounts->Fetch()) {
        $saleDateTo = $arProductDiscounts['ACTIVE_TO'];
}

Собственно, если нужно просто вывести дату. Выводим переменную $saleDateTo в нужном месте шаблона.

Выводим количество дней до конца скидки

Более актуально, вывести количество дней до конца скидки. При этом, если осталось меньше одного дня, выводит "закончится сегодня".

Просто высчитываем разницу между текущей датой и датой завершения активности скидки. Подсказки в комментариях:


$diffSaleToDate = strtotime($saleDateTo) - strtotime(date("d.m.Y h:m:s"));
$saleEndDiff = floor($diffSaleToDate / 86000);
if ($saleEndDiff > 1) {
    $daysToEndSale = 'Закончится через ' . $saleEndDiff . ' дн.';
} elseif ($saleEndDiff = 1) {
    $daysToEndSale = 'Закончится сегодня';
} else {
    unset($saleEndDiff);
}

Здесь. С помощью strtotime перевели обе даты (сегодняшний день и дату завершения скидки) в секунды, вычли из большей меньшую и разделили на 86000 (количество секунд в сутках) с округлением до целого числа.

Таким образом, в переменной saleEndDiff получили количество дней до конца скидки. И простым if-ом, создали переменную daysToEndSale c нужным текстом.

Собственно и все. Выводим и красиво оформляем, в нужном месте, переменную $daysToEndSale - c количеством дней до конца скидки.

При желании, можно все оставить в секундах и сделать красивый виджет, обратного отсчета на jquery- тут уже, дело дизайна и техники.

Написать первый комментарий:

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

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Автоматическая загрузка каталогов из csv файлов в Битрикс Просмотров: 11797 Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков. В... Снять ограничение на количество символов в комментарии к заказу магаз... Просмотров: 12606 Как многим известно, в интернет-магазине на Битрикс имеется ограничение на количество симв... Удалить товары из корзины, если есть определенные товары. Просмотров: 1915 Задача: если в корзину добавлены товары с определенным свойством, нужно удалить из корзины... Подключение мобильной версии шаблона Битрикс сайта, с автопереключени... Просмотров: 43365 Предпочитаю, что бы сайт не грузил кучу скриптов и стилей. При загрузке адаптивного шаблон... Фиксированная корзина с обновлением, без перезагрузки страницы. Просмотров: 18455 Иногда нужно сделать так, чтобы корзина в интернет магазине, созданном на Битрикс, была по... Вывести все товары, с постраничной навигацией, из всех разделов инфоб... Просмотров: 29885 По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е... INPUT type="file" Предпросмотр превью картинки до загрузки Просмотров: 12922 Рассмотрим на примере компонента "Форма добавления-редактирования элементов инфоблока", ка... Фотогалерея на базе компонента новостей, с fancybox. Просмотров: 2906 Это заметка обновление к очень старой, уже имеющейся на сайте. Сделаем что-то типа фотогал... Индивидуальные цены в 1С-Битрикс: в каталоге и при оформлении заказа Просмотров: 6057 В этой заметке постараюсь описать процесс реализации индивидуальных цен, для пользователей... Вывести разделы инфоблока по первым буквам не меняя структуру каталог... Просмотров: 2503 Например: у нас есть инфоблок с большим количеством разделов. И мы хотим, на сайте разбить... Дать пользователю возможность быстро отредактировать материал Просмотров: 4945 На одном из разрабатываемых сайтов, пользователи формирую его контент. После регистрации, ... Получение местоположений через API Битрикс c поиском по select. Просмотров: 23194 Если нужно получить список городов из модуля "Местоположения" можно воспользоваться API Би... Заполнить свойство инфоблока ценой из торгового каталога Просмотров: 5090 Если вам по какой-то причине нужно скопировать цену товара в свойство этого же инфоблока. ... Автоматически отгрузить заказ и сменить статус отгрузки, при выполнен... Просмотров: 951 Проблема: Заказы, на сайте, обрабатываются только в 1С. При этом 1С не работает с отгрузка... Рассылка новинок каталога в автоматическом режиме Просмотров: 1868 Что бы реализовать рассылку новинок каталога на email-ы пользователей, можно воспользовать... Fancybox в стандартном шаблоне детальной карточки товара, вместо вспл... Просмотров: 105 Задача: заменить работу с изображениями в стандартном или кастомном шаблоне детальной карт... Отфильтровать новости в Битрикс за заданный период Просмотров: 16692 Иногда, нужно отфильтровать элементы (новости например) по дате в Битрикс, с помощью компо... Вывести разделы инфоблока в которых находится элемент Битрикс Просмотров: 17017 Если нужно в карточке товара или новости, вывести структуру разделов в котором находится э... Прятать или показывать описание раздела каталога Просмотров: 1046 В новых компонентах и шаблонах catalog.section есть не документированный и не выводимый па... Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт Просмотров: 18107 При разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретит...