Здравствуйте, Решение Аспро-Максимум, такой вопрос.
Суть такова, есть одна база в которой идут товары поштучно(я их поменять не могу) скажем 5000 товаров и есть свойство сколько штук в 1 упаковке, скажем 50 штук
и мне надо ограничить максимум до 100 товаров чтобы могли покупать именно этого товара, а т.к. количество попадает сразу 5000, то люди могут оформить 5000 упаковок, а по факту есть только 50 штук упаковок
На детальной странице товара я решил сделать так))) работает
<? $tovar1 = $arResult["PROPERTIES"]["KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA"]["VALUE"];
$str = preg_replace("/[^0-9]/", '', $tovar1);
$delenie = $arResult['CATALOG_QUANTITY'];
$finish = (int)($delenie / $str);
?>
<script>
var username = "<?php echo $finish ?>";
$('.plus').attr('data-max', '<?php echo $finish ?>');
</script>
Как установить другое значение доступного количества товара в корзине? такой маневр уже не получается sale.basket.basket
<td class="basket-items-list-item-amount">
<div class="basket-item-block-amount{{#NOT_AVAILABLE}} disabled{{/NOT_AVAILABLE}}"
data-entity="basket-item-quantity-block">
<span class="basket-item-amount-btn-minus" data-entity="basket-item-quantity-minus"></span>
<div class="basket-item-amount-filed-block">
<input style="display:none" type="text" class="basket-item-amount-filed" value="{{QUANTITY}}"
{{#NOT_AVAILABLE}} disabled="disabled"{{/NOT_AVAILABLE}}
data-value="{{QUANTITY}}" data-entity="basket-item-quantity-field"
id="basket-item-quantity-{{ID}}">
</div>
<span class="basket-item-amount-btn-plus" data-entity="basket-item-quantity-plus"></span>
{{#SHOW_LOADING}}
<div class="basket-items-list-item-overlay"></div>
{{/SHOW_LOADING}}
</div>
</td>
Решил сделать через коэф ед измерения, поставил обработчик в init.php но почему то не летит
<?
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockElementUpdateHandler");
function OnAfterIBlockElementUpdateHandler(&$arFields)
{
Cmodule::IncludeModule('iblock');
Cmodule::IncludeModule('catalog');
$iblockId = 18;
$updateElements = CIBlockElement::GetList(
Array("ID" => "ASC"),
Array("IBLOCK_ID" => $iblockId),
false,
false,
Array(
'ID',
'KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA'
)
);
while ($arFields = $updateElements->GetNext()) {
$coeff = $arFields['KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA'];
$newcoef = preg_replace("/[^0-9]/", '', $coeff);
$curElementRatio = CCatalogMeasureRatio::getList(
Array(),
array('IBLOCK_ID' => $iblockId, 'PRODUCT_ID' => $arFields['ID']),
false, false);
while ($arRatio = $curElementRatio->GetNext()) {
$ratioId = $arRatio['ID'];
}
CCatalogMeasureRatio::update($ratioId, Array(
'PRODUCT_ID' => $arFields['ID'],
'RATIO' => $newcoef)
);
}
}
?>
Выдает такую ошибку
[TypeError]
Argument 1 passed to Bitrix\Catalog\Config\State::handlerAfterIblockElementUpdate() must be of the type array, bool given, called in /var/www/html/bitrix/modules/main/classes/general/module.php on line 480 (0)
/var/www/html/bitrix/modules/catalog/lib/config/state.php:243
#0: Bitrix\Catalog\Config\State::handlerAfterIblockElementUpdate
/var/www/html/bitrix/modules/main/classes/general/module.php:480
#1: ExecuteModuleEventEx
/var/www/html/bitrix/modules/iblock/classes/mysql/iblockelement.php:1757
#2: CIBlockElement->Update
/var/www/html/bitrix/modules/iblock/admin/iblock_element_edit.php:1047
#3: require(string)
/var/www/html/bitrix/admin/iblock_element_edit.php:1