Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне 1С-Битрикс

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Если товар в корзине, поменять кнопку на "В корзине" в новом шаблоне 1С-Битрикс

Ранее я уже делал заметку на эту тему. Тогда, мы меняли значение input-а при добавлении товара в корзину в старых шаблонах детальной карточки.

В этой заметке рассмотрю этот же функционал для нового шаблона, при этом поправим и некоторый SEO момент данного функционала.
Что бы спрятатаь, точнее не показывать, всплывающее окно о добавлении товара в корзину.

В шаблоне catalog.item и catalog.element комментируем строчку с инициализацией этого окна.
Находим ее в файлах script.js

Код
this.initPopupWindow();

в секции
Код
basketResult: function(arResult)
Если вы хотите проверить, есть ли торговые предложения товара в корзине, используя метод CSaleBasket::GetList, то вам нужно сначала получить список торговых предложений текущего товара, а затем проверить их наличие в корзине.
Код
$offerList = CIBlockPriceTools::GetOffersArray(
    array(
        'IBLOCK_ID' => $arParams['IBLOCK_ID']
    ),
    array(
        $arResult['ID']
    ),
    false,
    array(
        'ID'
    ),
    false,
    false,
    false,
    false,
    false,
    false,
    false
);

$offerIds = array_column($offerList, "ID"); // Получаем ID торговых предложений

$dbBasketItems = CSaleBasket::GetList(
    array(
        "NAME" => "ASC",
        "ID" => "ASC"
    ),
    array(
        "FUSER_ID" => CSaleBasket::GetBasketUserID(),
        "LID" => SITE_ID,
        "PRODUCT_ID" => $offerIds, // Проверяем наличие торговых предложений в корзине
        "ORDER_ID" => "NULL",
        "DELAY" => "N"
    ),
    false,
    false,
    array("PRODUCT_ID")
);
$hasOffersInCart = false;
while ($arItemsBasket = $dbBasketItems->Fetch()) {
    if (in_array($arItemsBasket['PRODUCT_ID'], $offerIds)) {
        $hasOffersInCart = true;
        break;
    }
}

В этом примере мы сначала получаем список торговых предложений для текущего товара с помощью CIBlockPriceTools::GetOffersArray. Затем из этого списка извлекаем ID торговых предложений.

Затем мы используем CSaleBasket::GetList для проверки наличия этих торговых предложений в корзине. Если хотя бы одно из торговых предложений присутствует в корзине, то ITEM_HAS_OFFERS_IN_CART будет установлено в true.
Эта информация будет кэшироваться в шаблоне  
Здравствуйте. А как для списка элементов раздела это сделать?
Возможно есть где-то но не нашел в блоге.
В целом, точно также, просто вместо $arResult['ID'] использовать $arResult['ITEM_ID']['ID']
Спасибо!!!
Оказывается я не в тот result_modifier.php код вставлял.
И на списке вот так сделал "PRODUCT_ID" => $arResult['ITEM']['ID'],
Подскажите как вывести для торговых предложений на списке товаро?

это в шаблоне прописал верно?
if ($hasOffersInCart) {
$itemInCart = true;
}

возможно в result_modifier.php что то не так передаю.
Распечатывал в шаблоне, id торговых так выводятся $arResult["ITEM"]["OFFERS"][0]
Но не понимаю что поправить чтоб работало.

Подскажите :)
Это: так текстом понятно не объяснить. Пока не знаю когда, но постараюсь в течении пары недель сделать видеоинструкцию по этому вопросу
Появится в этой заметке
Подскажите как вывести кнопку "Удалить из корзины" после того как мы добавили в нее товар?

Точнее как вывести кнопку в принципе понятно, вопрос где взять айдишник товара в корзине чтобы передать его в метод аякса.
Уберите из arSelect получение PRODUCT_ID и распечатайте весь массив, где то там будет ID записи в корзине, точно не помню какой у нее ключ, наверное так и есть "ID"
Код
$dbBasketItems = CSaleBasket::GetList(
    array(
        "NAME" => "ASC",
        "ID" => "ASC"
    ),
    array(
        "FUSER_ID" => CSaleBasket::GetBasketUserID(),
        "LID" => SITE_ID,
        "PRODUCT_ID" => $arResult['ID'],
        "ORDER_ID" => "NULL",
        "DELAY" => "N"
    ),
    false,
    false,
    array("*") // Выбираем все поля
);
while ($arItemsBasket = $dbBasketItems->Fetch()) {
     print_r($arItemsBasket) // распечатываем все поля
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.