Меняем текст на кнопке «Купить» после добавления товара в корзину 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;
}