+7 495 008 8452
  • Загрузка
Выберите ваш цвет
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Источник: http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/8635/

Если у товара есть торговые предложения - не добавлять его в корзину, а переходить в его карточку

Представим себе некий готовый магазин с обычными товарами. А потом решили добавить раздел со SKU-товарами. К примеру, телефоны с разными цветами. Получаем ситуацию - некоторые товары (которые были) по клику на корзину должны добавляться как и раньше в корзину, а товары со SKU редиректить пользователя на карточку товара.

Решение из разряда "пока и так сойдет", но может в некоторых случаях подойдет и на постоянку.

Все решается одним обработчиком событий:
<?php
AddEventHandler('sale', 'OnBeforeBasketAdd', array('CSaleHandlers', 'OnBeforeBasketAddHandler'));

class CSaleHandlers {
   public static function OnBeforeBasketAddHandler($arFields) {
      if ($arFields['MODULE']=='catalog' && $arFields['PRODUCT_ID']>0 && CModule::IncludeModule('iblock')) {
         if ($arElement = CIBlockElement::GetByID($arFields['PRODUCT_ID'])->GetNext()) {
            if ($arIB = CCatalog::GetByID($arElement['IBLOCK_ID'])) {
               if ($arIB['OFFERS_IBLOCK_ID'] > 0) {
                  if (CIBlockElement::GetList(array(), array(   'IBLOCK_ID' => $arIB['OFFERS_IBLOCK_ID'],
                                                   '=PROPERTY_CML2_LINK' => $arElement['ID'],
                                                   'ACTIVE' => 'Y'))->Fetch()
                  ) {
                     LocalRedirect($arElement['DETAIL_PAGE_URL']);
                  }
               }
            }
         }
      }
   }
}
Пробежимся по if-ам:
1. Проверка, подключенрие.
2. Дергаем поля товара.
3. Дергаем часть инфоблока, которая является каталогом.
4. Если у инфоблока есть торговые предложения ...
5. ... проверяем есть ли SKU для данного родительского товара. И если есть, то редиректим на карточку родительского.

Таким образом получаем, что сам родительский товар не может быть добавлен в корзину никаким образом.

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...