Подскажите пожалуйста, возможно ли стандартными средствами реализовать показ кол-ва товара на складе, и блокировать кнопку "в корзину" если количество 0.
02.11.2010 09:07:51
Подскажите пожалуйста, возможно ли стандартными средствами реализовать показ кол-ва товара на складе, и блокировать кнопку "в корзину" если количество 0.
|
|
|
|
02.11.2010 10:54:31
Возможно, только чуть-чуть шаблон подправить нужно будет.
Теперь откроем сайт в Internet Explorer 6 и...
|
|
|
|
02.11.2010 18:48:45
Все просто, если структура каталога стоит из одного инфоблока КАТАЛОГ ТОВАРОВ.
Однако, если используется разделение с добавлением ПАКЕТА ПРЕДЛОЖЕНИЙ(когда есть спецификации по товару), тогда не совсем корректно отрабатывает компонент CATALOG, в настройках которого присутствует ссылка на каталог товаров и связанный с ним инфоблок "пакет предложений", с полем связи CML2_link. Замечу, что используется ТИПОВОЙ механизм, т.е. на уровне настроек параметров компонента, без углублений в Bitrix-API. Результат не "Ах". в $arResult - нет поля CML2_link... Однако, если воспользоваться конструкцией вида: //$ID="5359"; для товара в инфоблоке КАТАЛОГ ТОВАРОВ $ID="5359"; $ar_res = CCatalogProduct::GetByIDEx($ID); echo "<br>Товар с кодом ".$ID." имеет следующие параметры:<pre>"; print_r($ar_res); echo "</pre>"; //$ID="18142";для товара в инфоблоке ПАКЕТ ПРЕДЛОЖЕНИЙ $ID="18142"; $ar_res = CCatalogProduct::GetByIDEx($ID); echo "<br>Товар с кодом ".$ID." имеет следующие параметры:<pre>"; print_r($ar_res); echo "</pre>"; для $ID="18142" в $arResult будет ожидаемое поле связи CML2_link со своим VALUE для остатка товара на складе и ссылкой на ID товара в каталоге товаров. Но в типовом шаблоне выборка идет сперва по инфоблоку каталога товаров, и это в шаблоне OFFERS, который и предназначен для работы в связке двух инфоблоков! Буду признателен за идеи, как "руками" вытянуть значение остатка на складе(QUANTITY). |
|
|
|
03.11.2010 10:21:03
Всем привет!
Может кому пригодится рабочее решение: //получаем код используемого типа цен: <?$dbPriceType = CCatalogGroup::GetList(array("SORT" => "ASC"), array("NAME" => $arParams["PRICE_CODE"][0])); //результат -в массив $arPriceType=$dbPriceType->Fetch(); //формируем параметры запроса: $arSort = array("ID" => "ASC"); $arFilter = array("ACTIVE" => "Y", "IBLOCK_ID" => $arParams["LINK_IBLOCK_ID"], "IBLOCK_LID" => SITE_ID, "IBLOCK_ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", "PROPERTY_".$arParams["LINK_PROPERTY_SID"] => "5359", ); $arSelect = array("ID", "IBLOCK_ID", "PROPERTY_".$arParams["LINK_PROPERTY_SID"], "CATALOG_GROUP_".$arPriceType["ID"], ); //получаем аналог рекордсета $rsElements = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect); // результат - в массив $arElement = $rsElements->Fetch(); /* Итог: $arElement["CATALOG_PRICE_".$arPriceType["ID"]] - содержит цену(без скидки) $arElement["CATALOG_QUANTITY"] - содержит остаток товара на складе */ //а вот все содержимое массива $arElement: echo "<pre>"; print_r ($arElement); echo "</pre><BR>"; |
|
|
|
08.11.2010 19:26:41
Мы учимся на них:
|
|||
|
|
11.01.2011 14:55:58
Наличие товара на складе получаем для элемента.
А как быть если это значение надо получить при построении списка элементов в разделе. Массивы получаются вложенными. А если делатьзапрос по каждому товару в списке - получаем неоправданную нагрузку.
Мы учимся на них:
|
|
|
|
07.08.2011 00:05:58
|
|||
|
|
13.03.2013 15:46:39
|
||||
|
|
|||