Меняем текст на кнопке «Купить» после добавления товара в корзину Opencart 3
Подробное руководство как сделать замену кнопки «Купить» например на текст «Товар в корзине» или просто «В корзине»
Добавляем текст «Товар в корзине»
Откройте файл по пути
catalog/language/ru-ru/ru-ru.php
Найдите вот такой текст
$_['button_cart'] = 'Купить';
После него добавьте
$_['button_incart'] = 'Товар в корзине';
Соответственно добавьте такой же текст в
catalog/language/en-gb/en-gb.php
Добавляем проверку что товар в корзине
Откройте файл контроллера категории
catalog/controller/product/category.php
Найдите вот такой код
$data['products'][] = array(
Перед ним добавьте вот этот код
$cart = false; $products = $this-cart-getProducts(); if (in_array($result['product_id'], array_column($products, 'product_id'))) { $cart = true; }
А после этого же кода
$data['products'][] = array(
Добавьте вот такой код
'cart' = $cart,
Делаем замену кнопки в шаблоне
Найдите кнопку
<button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>
Меняем её на
{% if product.cart %} <button type="button" class="product_{{ product.product_id }}" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-check"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_incart }}</span></button> {% else %} <button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button> {% endif %}
Добавим в файл common.js замену текста и иконки
Откройте файл common.js по пути
catalog/view/javascript/common.js
Найдите вот такой код
$('#cart > ul').load('index.php?route=common/cart/info ul li');
После него добавьте вот такой код
$('button.product_'+product_id).find('i.fa-shopping-cart').removeClass('fa-shopping-cart').addClass('fa-check'); $('button.product_'+product_id).find('span').text('Товар в корзине');
Готово! Теперь если нажать на кнопку «Купить» текст сменится на «Товар в корзине», а если обновить страницу, текст останется такой же «Товар в корзине»
Этот вариант можно проделать на таких страницах как: «Категории», «Производители», «Поиск», «Акции», а так же в модулях «Хиты продаж», «Новинки», «Акции»
В модуле «Рекомендуемые» нужно сделать поправку в коде, там нужно заменить на такой код
if (in_array($product_info['product_id'], array_column($products, 'product_id'))) { $cart = true; }