написал: Битрикс не кеширует цены. Кешируются данные (в некоторых местах), кешируется вывод компонентов, но не цены
При стандартных настройках сайта, с включенным стандартным кешированием, обновлении цен по api CPrice::Update или \Bitrix\Catalog\Model\Price::update - на сайте будут отображаться старые цены так кеш не сбрасывается при данных методах api. После процедур обновлений цен - нужно написать api которое сделает сброс кеш товарного инфоблока.
Для компонентов Каталога я отменяю скидки через событие OnGetDiscountResult и это работает. Но оно не распространяется на компоненты корзины и оформления заказа.
Цитата
Евгений Жуков написал: А нет возможности внести в условия скидки изменения, чтобы не требовались все эти доработки?
Да, пробовал так: https://prnt.sc/10lkt7v - первое условие для компонентов каталога. Второе условия для случая когда товар уже в корзине. Но что примечательно - в корзине все будет в порядке. Но в каталоге скидка не будет выводится. Возможно это баг, поэтому правило не подходит У меня суть задачи в том - чтобы удалять скидки с некоторых товаров по местоположению пользователя.
Сергей Панчук написал: Но если после данного кода вызвать снова $discounts->getApplyResult(true)["DISCOUNT_LIST"]; - скидка которую мы отменили не ушла с этого списка.
Правильно. Она не ушла, но отменена.
Да, вы правы, я так и понял что это корректно. Сделал событие на заказе:
и в результате в админке все корректно: скидка не применяется но скидка есть в списке товаров и галочка по скидке на стоит. Но проблема у меня в том, что в публичке я не могу убрать скидку в компонентах корзины и оформлении заказа. Каким образом им передать измененный подсчет цен товаров?? Где нужно это выполнять? В шаблонах компонентов не вариант так как могут быть правила скидок по общей сумме. Т.е. тут явно где то наверное из какого-то события переопределить данные. Но с какого? Или это не возможно? Может после $basket->applyDiscount($result["BASKET_ITEMS"]); нужно еще то-то сделать чтобы записать в корзину изменения? Помогите, пожалуйста.
При некоторых обстоятельствах, нужно отменять некоторые скидки на товары в корзине и соответственно в форме оформления заказа (компоненты штатные). На статической странице пробую такой код:
Код
$basket = Bitrix\Sale\Basket::loadItemsForFUser(Bitrix\Sale\Fuser::getId(), SITE_ID);
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId(true)));
$discounts->calculate();
$currentDiscountApplied = $discounts->getApplyResult(true)["DISCOUNT_LIST"]; //получили список примененных скидок
$discounts->setApplyResult(array('DISCOUNT_LIST' => array('1399' => 'N'))); //отменяем нужную нам скидку
$discountsCalculateResult = $discounts->calculate();
if ($discountsCalculateResult->isSuccess()) {
$result = $discountsCalculateResult->getData();
?><pre><?var_dump($result);?></pre><? //тут выводятся корретные данные по ценам
$basket->applyDiscount($result);
}
Но если после данного кода вызвать снова $discounts->getApplyResult(true)["DISCOUNT_LIST"]; - скидка которую мы отменили не ушла с этого списка.
Или на какое событие вешать такую обработку? Как применить удаление скидки для корзины и оформления заказа?
Идентификатор элемента BODY области редактирования в визуальном редакторе
Цитата
Название CSS класса для элемента BODY области редактирования в визуальном редакторе
В данной настройке задаются id и имя класса для тега body в форме визуального редактора. Они используются для корректного подключения шаблона сайта в визуальном редакторе, чтобы стили шаблона применялись в редакторе и совпадали с отображение в публичной части сайта.
Дмитрий Примаков написал: Чтобы выводить товары в корзине и оформлении заказа со всех сайтов,нужно указать параметр "CUSTOM_SITE_ID" => array('s1','s2','s3'),в bitrix:sale.basket.basket и bitrix:sale.order.ajax во всех сайтах
Не корректно работают компоненты при скидках, не правильно показывают скидочные цены.
К сожалению, Битрикс сделал такие обновления. Они пробуют унифицировать интерфейс Битрикс24 с Битрикс Управление сайтом. Мне тоже не очень нравится, но уже привык.
Цитата
Теперь нельзя показывать в нём свойства элемента, нельзя массово редактировать элементы
Это все есть. Присмотритесь внимательно в интерфейс данного грида. Там есть шестеренка в которой можно выводить поля свойств.