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

Разделение типов цен по сайтам

00 голосов
6
Есть один инфоблок с товарами и два типа цен (у одного типа цен цены выше чем у другого).

Этот инфоблок выводиться на двух сайтах но с разными типами цен. Выводится все хорошо, но на обоих сайтах добавляются товары в корзину с наименьшей ценой (так корзина работает).

Как добавлять в корзину товары только с теми ценами которые нам нужны ??

з.ы. Разграничение прав по ценам не подойдет т.к. пользователь может быть даже не зареган.
спросил 24 Сен, 13 от Federal (200 баллов)

6 Ответы

00 голосов
Самое простое - от функции Add2BasketByProductID, с помощью которой товар добавляется в корзину, перейти к Add2Basket, которая позволяет задавать тип цен. НО это требует либо катомизации компонента bitrix:catalog.element, либо всяческих извращений, типа размещения перед bitrix:catalog.element кода, который будет перехватывать добавление в корзину. Как второй вариант будет работать с ajax (и будет ли вообще) - не могу сказать.
ответил 03 Окт, 13 от Pomnep (13,960 баллов)
00 голосов
Add2Basket(
int PRICE_ID[,
int QUANTITY = 1[,
array arRewriteFields = array()[,
array arProductParams = array()]]]
);


PRICE_ID это не id товара. где этот PRICE_ID брать

И вообще как этой функцией положить определенный товар с определенным типом цены в корзину?
ответил 03 Янв, 14 от Federal (200 баллов)
00 голосов
Код
$db_res = CPrice::GetList(
        array(),
        array(
                "PRODUCT_ID" => $PRODUCT_ID,
                "CATALOG_GROUP_ID" => $PRICE_TYPE_ID
            )
    );
if ($ar_res = $db_res->Fetch())
{
   $PRICE_ID = $ar_res['ID'];
}
ответил 19 Апр, 14 от Pomnep (13,960 баллов)
00 голосов
))))
еще так можно
Код
array
GetCatalogProductPrice(
 int PRODUCT_ID,
 int CATALOG_GROUP_ID
);
ответил 13 Авг, 14 от Federal (200 баллов)
00 голосов
кладется в корзину может и по той цене которая нужна, но в корзине все равно другая (минимальная)
Цитата

$prod_prise = GetCatalogProductPrice(
  $_GET['ID'],
  2
);

Add2Basket(
  $prod_prise['ID'],
  1,
  array(),
  array(
    array("NAME" => "Цвет", "CODE" => "CLR", "VALUE" => "красный"),
  array("NAME" => "Размер", "VALUE" => "25")
  )
  );





$dbBasketItems = CSaleBasket::GetList(
  array(
    "NAME" => "ASC",
    "ID" => "ASC"
  ),
  array(
    "FUSER_ID" => CSaleBasket::GetBasketUserID(),
    "LID" => SITE_ID,
    "ORDER_ID" => "NULL"
  ),
  false,
  false,
  array("ID", "NAME", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "DETAIL_PAGE_URL", "NOTES", "CURRENCY", "VAT_RATE")
  );

while ($arItems = $dbBasketItems->GetNext())
{
  echo '<pre>'; print_r($arItems); echo '</pre>';
}


как быть?
ответил 18 Дек, 14 от Federal (200 баллов)
00 голосов
Вам нужно передавать еще свою колбэк-функцию (ключ CALLBACK_FUNC), а в этой колбэк-функции вызывать свой метода расчета оптимальной цены.
ответил 08 Апр, 15 от Delp (7,220 баллов)

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

0 голосов
2 ответов
0 голосов
5 ответов
спросил 13 Ноя, 13 от Kania (5,180 баллов)
0 голосов
8 ответов
спросил 25 Июнь, 13 от Asteria (1,840 баллов)