Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Add2basket

00 голосов
6
Проблема заключается в том, что в интернет магазине при добавлении в корзину считает по самой низкой цены из доступных. У меня есть одна группа в каталоге, в которой будет доступна только базовая цена. Отображения только базовой цены я добился в шаблоне модуля элементов раздела. При  определенной ид группы товаров из массива $arResult удалил все другие типы цен кроме базовой. Однако считает все равно по цене, которая актуальна для группы пользователя (т.е. меньшей) Значит получается не в этом компоненте формируется заказ . хотя там встречаешь строки <input type="s ubmit" name="<?echo $arParams["ACTION_VARIABLE"]."ADD2BASKET"?>" value="<?echo GetMessage("CATALOG_ADD"smile;)?>" а все равно . Я как понимаю массив $arResult самый главный . Так где же все таки надо писать условие для группы товаров, чтобы выбирала из доступных тип цен не самую меньшую, а большую или вообще удалить этот тип цен.
спросил 26 Окт, 13 от ZZZZZZZZ1 (120 баллов)

6 Ответы

00 голосов
Добрый день!
В продукте выбирается минимальная цена из доступных для покупателя. Для реализации иной логики Вы можете создать обработчик события OnGetOptimalPrice модуля Торговый каталог.
ответил 23 Ноя, 13 от Pomnep (13,960 баллов)
00 голосов
Евгений Жуков,  День добрый . Я нашел на других форумах про то как вызывать обработчик события :
 AddEventHandler("catalog", "OnGetOptimalPrice", 'OnGetOptimalPriceHandler');

function OnGetOptimalPriceHandler($arFields)
{
// что то там
}
  ?>
 И по той ссылке что Вы мне дали я так понял мне надо работать с

function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(),  
   $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false)
Мне не нужно писать готового алгоритма. Напишите, пожалуйста, как мне написать функцию и самое главное посмотреть ее результат ?
ответил 04 Март, 14 от ZZZZZZZZ1 (120 баллов)
00 голосов
Название функции может быть произвольным - на Ваше усмотрение. Как подключить обработчик - документация. Перечень входных параметров соответствует параметрам метода CCatalogProduct::GetOptimalPrice()
Формат результирующего массива приведен по ссылке выше.
ответил 24 Июнь, 14 от Pomnep (13,960 баллов)
00 голосов
Немного начал разбираться. написал

Код
$productID=75621;
$test=CCatalogProduct::GetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(),  
$renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false) ;
echo'test:<pre>';print_r($test);echo'</pre>'?>

 Ответом был массив :

Код
Array
(
    [PRICE] => Array
        (
            [ID] => 554703
            [CATALOG_GROUP_ID] => 107
            [PRICE] => 58.29
            [CURRENCY] => RUB
            [ELEMENT_IBLOCK_ID] => 28
            [VAT_RATE] => 0
            [VAT_INCLUDED] => Y
        )

    [DISCOUNT_PRICE] => 58.29
    [DISCOUNT] => Array
        (
        )


Я так понял в новой функции мне нужно именно поменять [PRiCE][PRICE]   и [DISCIOUNT_PRICE] верно ?
ответил 24 Окт, 14 от ZZZZZZZZ1 (120 баллов)
00 голосов
В массиве PRICE необходимо сменить все данные, кроме ELEMENT_IBLOCK_ID, на то ценовое предложение, которое Вам необходимо. Ну и DISCOUNT_PRICE конечно.
ответил 22 Фев, 15 от Pomnep (13,960 баллов)
00 голосов
Извиняюсь, я опять в тупике. Вопросы
  1. Можно ли мне применять обработчик события в файле типа /bitrix/templates/Goroxov_template_green/components/bitrix/catalog/list3/bitrix/catalog.section.prop/.default/template.php
  2. Писать этот обработчик нужно в начале или конце файла ? или в отдельном файле ?
Или я опять чего не понимаю?
ответил 01 Июнь, 15 от ZZZZZZZZ1 (120 баллов)

Похожие вопросы

0 голосов
5 ответов
спросил 06 Ноя, 13 от RoMZeS1k (330 баллов)