Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
то ждем ваше обращение в нашей службе тех поддержки.
Есть два метода разных метода снижения цены при оптовом заказе. Первый состоит в назначении общей скидки на итоговую сумму заказа. Он проще в реализации, и поэтому чаще применяется в интернет - магазинах. Второй метод представляет собой пересчет цен на каждую позицию по мере увеличения итоговой суммы. Такая демонстрация наглядней для покупателя, а значит, способна увеличить количество завершенных заказов. Как реализовать эту схему программно?
1. Зададим таблицу интервалов цен для товарных позиций
Внесем два фрагмента кода в файл result_modifier.php
Первый фрагмент:
Второй фрагмент:
2. Выведем таблицу интервалов цен в шаблоне для товаров простого типа
Готово!
Назад в раздел
1. Зададим таблицу интервалов цен для товарных позиций
Внесем два фрагмента кода в файл result_modifier.php
Первый фрагмент:
if ($arResult['CATALOG'] && isset($arResult['OFFERS']) && !empty($arResult['OFFERS'])) { ... foreach ($arResult['OFFERS'] as &$arOffer) { ... $arResultPrices = CIBlockPriceTools::GetCatalogPrices($arParams['IBLOCK_ID'], $arParams['PRICE_CODE']); foreach ($arResultPrices as $value) { // if (!$value['CAN_VIEW'] && !$value['CAN_BUY']) // continue; $arPriceTypeID[] = $value['ID']; } if (isset($value)) unset($value); $arOffer['PRICE_MATRIX'] = CatalogGetPriceTableEx($arOffer['ID'], 0, $arPriceTypeID, 'Y'); if (is_array($arOffer['PRICE_MATRIX'])) { $boolSKUDisplayProps = true; if (isset($arOffer['PRICE_MATRIX']['COLS']) && is_array($arOffer['PRICE_MATRIX']['COLS'])) { foreach ($arOffer['PRICE_MATRIX']['COLS'] as $keyColumn => $arColumn) $arOffer['PRICE_MATRIX']['COLS'][$keyColumn]['NAME_LANG'] = htmlspecialcharsbx($arColumn['NAME_LANG']); } } } ... }
Второй фрагмент:
if ($arResult['CATALOG_TYPE'] == CCatalogProduct::TYPE_PRODUCT || $arResult['CATALOG_TYPE'] == CCatalogProduct::TYPE_SET) { ... $arResultPrices = CIBlockPriceTools::GetCatalogPrices($arParams['IBLOCK_ID'], $arParams['PRICE_CODE']); foreach ($arResultPrices as &$value) { // if (!$value['CAN_VIEW'] && !$value['CAN_BUY']) // continue; $arPriceTypeID[] = $value['ID']; } if (isset($value)) unset($value); $arResult['PRICE_MATRIX'] = CatalogGetPriceTableEx($arResult['ID'], 0, $arPriceTypeID, 'Y'); if (isset($arResult['PRICE_MATRIX']['COLS']) && is_array($arResult['PRICE_MATRIX']['COLS'])) { foreach ($arResult['PRICE_MATRIX']['COLS'] as $keyColumn => $arColumn) $arResult['PRICE_MATRIX']['COLS'][$keyColumn]['NAME_LANG'] = htmlspecialcharsbx($arColumn['NAME_LANG']); } ... }
2. Выведем таблицу интервалов цен в шаблоне для товаров простого типа
$strMatrix = ''; if (!isset($arResult['OFFERS']) || empty($arResult['OFFERS'])) { ... if (is_array($arResult['PRICE_MATRIX'])) { $strMatrix .= '<dd class="clear">'; $strMatrix .= '<table cellpadding="0" cellspacing="0" class="price-matrix">'; $strMatrix .= '<thead>'; $strMatrix .= '<tr>'; if (count($arResult['PRICE_MATRIX']['ROWS']) >= 1 && ($arResult['PRICE_MATRIX']['ROWS'][0]['QUANTITY_FROM'] > 0 || $arResult['PRICE_MATRIX']['ROWS'][0]['QUANTITY_TO'] > 0)) { $strMatrix .= '<td>' . GetMessage('CATALOG_QUANTITY') . '</td>'; } foreach ($arResult['PRICE_MATRIX']['COLS'] as $typeID => $arType) { $strMatrix .= '<td>' . $arType['NAME_LANG'] . '</td>'; } $strMatrix .= '</tr>'; $strMatrix .= '</thead>'; foreach ($arResult['PRICE_MATRIX']['ROWS'] as $ind => $arQuantity) { $strMatrix .= '<tr>'; if ((count($arResult['PRICE_MATRIX']['ROWS']) > 1) || (count($arResult['PRICE_MATRIX']['ROWS']) == 1 && ($arResult['PRICE_MATRIX']['ROWS'][0]['QUANTITY_FROM'] > 0 || $arResult['PRICE_MATRIX']['ROWS'][0]['QUANTITY_TO'] > 0))) { $strMatrix .= '<td nowrap>'; if (IntVal($arQuantity['QUANTITY_FROM']) > 0 && IntVal($arQuantity['QUANTITY_TO']) > 0) $strMatrix .= str_replace('#FROM#', $arQuantity['QUANTITY_FROM'], str_replace('#TO#', $arQuantity['QUANTITY_TO'], GetMessage('CATALOG_QUANTITY_FROM_TO'))); elseif (IntVal($arQuantity['QUANTITY_FROM']) > 0) $strMatrix .= str_replace('#FROM#', $arQuantity['QUANTITY_FROM'], GetMessage('CATALOG_QUANTITY_FROM')); elseif(IntVal($arQuantity['QUANTITY_TO']) > 0) $strMatrix .= str_replace('#TO#', $arQuantity['QUANTITY_TO'], GetMessage('CATALOG_QUANTITY_TO')); $strMatrix .= '</td>'; } foreach ($arResult['PRICE_MATRIX']['COLS'] as $typeID => $arType) { $strMatrix .= '<td style="text-align: center;">'; if ($arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['DISCOUNT_PRICE'] < $arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['PRICE']) $strMatrix .= '<s>' . FormatCurrency($arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['PRICE'], $arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['CURRENCY']) . '</s> <span class="catalog-price">' . FormatCurrency($arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['DISCOUNT_PRICE'], $arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['CURRENCY']) . '</span>'; else $strMatrix .= '<span class="catalog-price">' . FormatCurrency($arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['PRICE'], $arResult['PRICE_MATRIX']['MATRIX'][$typeID][$ind]['CURRENCY']) . '</span>'; $strMatrix .= '</td>'; } $strMatrix .= '</tr>'; } $strMatrix .= '</table>'; $strMatrix .= '</dd>'; } if (strlen($strMatrix) > 0) { ?> <div class="item_info_section"> <dl id="<?=$arItemIDs['DISPLAY_MATRIX_DIV'] ?>"><?=$strMatrix?></dl> </div> <?php } }
Готово!
Назад в раздел
Подписаться на новые материалы раздела: