когда нечего делать, а творческая душа требует реализации и хочется что-то сделать или написать, то я пишу сюда или делаю что-то на этом сайте. Кому интересна web-разработка, wordpress и то что рядом с этим, то заходите на мой сайт и читайте всякое...
Старая цена из свойства в ASPRO Next. Красиво и надёжно
Йо-йо! Недавно мне от клиента поступила задача — «нужно, чтобы из 1С выгружалось свойство. В свойстве будет содержаться старая цена. В карточке товара должна отображаться разница. На товары у которых будет установлена старая цена не будут распространяться никакие скидки.»
В шаблоне Aspro Next уже был встроен механизм отображения старой цены и суммы скидки. И выглядело это так:
Отображение скидки в ASPRO Next в списке товаровОтображение скидки в ASPRO Next в детальной карточке товара
Поэтому вмешиваться в шаблон не было ни какого смысла и нужно было удачно подменить данные. Сразу оговорюсь, что мой способ может не подойти для тех кто использует SKU. В моём случае заказчик ни когда не будет их использовать поэтому я выбрал это решение.
Определение источника данных
С Битриксом я работаю около 2-х лет (около 6 месяцев с бэкендом 08.07.2019), и за это время я усвоил, что лучше всего распечатать данные из массива, чтобы найти то, что тебе нужно. Я так и поступил. В итоге я узнал, что данные в детальной карточке товара, которые использует шаблон находятся в элементе массива —
$arNewItemsList = array();
foreach ($arResult['ITEMS'] as $key => $arItem)
{
Нужно написать следующие
/*
* Custom code
*/
//
// Change the print of the old price depending on the property CUSTOM_OLD_PRICE
if($arItem['PROPERTIES']['CUSTOM_OLD_PRICE'] && !empty($arItem['PROPERTIES']['CUSTOM_OLD_PRICE']['VALUE']) && $arItem['PROPERTIES']['CUSTOM_OLD_PRICE']['VALUE'] != 0){
$arItem['PRICE_MATRIX']['MATRIX'][1]['ZERO-INF']['PRICE'] = $arItem['PROPERTIES']['CUSTOM_OLD_PRICE']['VALUE'];
}
/*
* !Custom code
*/
Вот и всё, скидывайте кэш и проверяёте. Не забудьте поменять result_modifier.php у всех шаблонов. Возможно вы поменяете режим отображения и у вас не будет видно ваших скидок или, например в режиме быстрого просмотра будут некорректные данные.
Как можно улучшить?
Вы можете написать свои проверки «старой цены». Вы можете нечаянно ввести значение ниже чем действующая цена. Тогда возникнут ошибки. У меня этим занимается 1С.
Ещё одна возможная проблема — будут действовать настройки работы с корзиной. Вы могли дать на этот товар скидку. Добавьте проверку того, давалась ли скидка к этому товару или нет по необходимости. В моём случае товары определённой группы не получаю ни каких скидок и на них не действуют ни какие дополнительные скидки. Цену уже уменьшили в 1С.
P.S.
Делитесь своими наработками в комментариях, а также вы можете написать мне лично, чтобы я разместил ваш код на сайте. Битрикс — ужасная платформа для программистов, нет ни какого стандарта, который бы сказал как правильно сделать. И если вы читаете эту статью вы уже сами столкнулись с этим. Помогите другим программистам, поделитесь своими наработкам по Битриксу.
Поддержи Xakplant
Я давно хочу развить видеоверсию, но пока этого не получается из-за нехватки ресурсов. Сейчас я собираю деньги на новый компьютер и микрофон. Поддержи xaklant и ты увидишь полезные видео быстрее.