function spoilerToMsg(string $text, int $limit = 2): string
{
$innerLimit = 2 * $limit;
/*
* тут у нас совпадение: из-за того, что нумерация внутри массива идёт с 0,
* индекс последней части равен $innerLimit
*/
$lastIndex = $innerLimit;
/*
* по умолчанию поиск не жадный
*/
$pattern = '#(' . preg_quote('[img]', '#') . '.*' . preg_quote('[/img]', '#') . ')#uU';
$parts = preg_split($pattern, $text, $limit+1, PREG_SPLIT_DELIM_CAPTURE);
if (
count($parts) > $innerLimit
&& strpos($parts[$lastIndex], '[img]') !== false
// не очень правильно, надо бы именно обёрнутость проверять
&& strpos($parts[$lastIndex], '[/spoiler]') === false)
{
$parts[$lastIndex] = '[spoiler title="Остальной контент здесь"]' . $parts[$lastIndex] . '[/spoiler]';
}
return implode('', $parts);
}
надо пересоздать корзину с новыми весами
Если у товара Коэффициент единицы измерения 0.3, а продать можем только 0.2- значит, что-то у Вас не так. Если кратность 0.3, то из 1С должно приходить тоже кратно 0.3 .
$res = CSaleBasket::GetList(array(), array("ORDER_ID" => $ORDER_ID));
$json_product=array();
while ($arBasketItem = $res->Fetch()) {
// впишите правильный ID инфоблока
$filter = ['IBLOCK_ID'=> 1, 'ID' => $arBasketItem['PRODUCT_ID']];
$select = ['ID', 'IBLOCK_ID', 'PREVIEW_PICTURE', 'PROPERY_SIZE', 'PROEPRTY_COLOR_REF'];
$itemRes = CIBlockElement::GetList([], $filter, false, false, $select);
while ( $itemRow = $itemRes->Fetch() ) // может быть, нужно не Fetch, а GetNext()
{
// ...
}
}
Можете порыться в urlrewrite.php - если повезёт, то нужная информация будет там. Но если сайт делался некачественно, то туда могли и вписать ручную конкатенацию /catalog/ и id