В прошлом посте я описывал общую схему и два основных компонента каталога.
Сейчас будем изменять остальные компоненты каталога.
Внимание! Во всех компонентах должно быть включено отображение артикула, иначе он не выбирается, и отбор по артикулу не срабатывает.
В компонентах catalog.bigdata.products, catalog.top
в result_modifier.php:
после
switch ($arItem['CATALOG_TYPE']) { case CCatalogProduct::TYPE_SET: $arItem['OFFERS'] = array(); $arItem['CATALOG_MEASURE_RATIO'] = 1; $arItem['CATALOG_QUANTITY'] = 0; $arItem['CHECK_QUANTITY'] = false; break; case CCatalogProduct::TYPE_SKU: break; case CCatalogProduct::TYPE_PRODUCT: default: $arItem['CHECK_QUANTITY'] = ('Y' == $arItem['CATALOG_QUANTITY_TRACE'] && 'N' == $arItem['CATALOG_CAN_BUY_ZERO']); break; }
добавляем
$arItem['CAN_BUY']=false; $arItem['CAN_ORDER']=$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $arItem["PROPERTIES"]["CML2_ARTICLE"]["VALUE"])); if ($arItem['CATALOG_QUANTITY']){$arItem['CAN_BUY']="Y";$arItem['MAX_QUANTITY']=$arItem['CATALOG_QUANTITY'];$arItem['CHECK_QUANTITY']="Y";} if ($arItem['CAN_ORDER']){$arItem['CAN_BUY']="Y";$arItem['MAX_QUANTITY']=null;}
В файл шаблона template.php если надо, то вносим коррективы, но оно и само нормально работает. Нужно только в
$arJSParams = array(
опцию
'MAX_QUANTITY' => $arItem['CATALOG_QUANTITY'],
во всех компонентах нужно заменить на
'MAX_QUANTITY' => $arItem['MAX_QUANTITY'],
Для компонента поиска по сайту search.page в свой шаблон добавлял такой код для цикла вывода результатов
Наличие: <?if ($arFields["CATALOG_QUANTITY"]):?> На складе <?else:?> <?$canorder=$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $arFields["PROPERTY_CML2_ARTICLE_VALUE"]));?> <?if ($canorder):?> Доступен к заказу (+2-4 дня к поставке товара) <?else:?> <span style="color: red"><strong>Временно нет в продаже</strong></span> <?endif;?> <?endif?>