Товар уже в корзине

  • 16 Ответов
  • 2980 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

denben777

  • ***
  • 157
  • 75
Товар уже в корзине
« : 28.03.2013, 23:36:38 »
Принцип покупки товара в JoomShopping делится на два варианта -> переходить в корзину после покупки или нет. В последнем случае выводится уведомление о том, что товар добавлен в корзину -> после этого, в зависимости от дизайна корзины сайта, покупатель может видеть свои выбранные товары  только в модуле корзины или же в меню "Корзина". Считается, что эффективней для продаж магазина, если покупатель переходит в корзину сразу после клика на «Купить», но это далеко не всегда бывает удобно и необходимо.

Ниже приведен один из вариантов вывода информации о том, что данный товар уже находится в корзине.
Шаблон стандартный и подойдет практически ко всем модулям вывода товаров JS.
Принцип простой: вызываем корзину, сравниваем id товаров в корзине с id товара (или товаров) на текущей странице (список товаров, страница товара, товары в модулях) -> если совпадает, то … результат на картинках:

     

Код для страницы товара (product_default.php):
Код
<?php
$tov=0;
$cart = JModel::getInstance('cart', 'jshop');
$cart->load("cart");
$countprod = 0;
$array_products = array();
foreach($cart->products as $value) {
$array_products [$countprod] = $value;
if ($this->product->product_id==$array_products [$countprod]["product_id"]) { $tov=1; }
} if ($tov==1) {?>

Товар в корзине

<?php } else {?>

Товар не в корзине

<?php }?>

Код для страницы со списком товаров (/list_products/product.php):
Код
<?php
$tov=0;
$cart = JModel::getInstance('cart', 'jshop');
$cart->load("cart");
$countprod = 0;
$array_products = array();
foreach($cart->products as $value) {
$array_products [$countprod] = $value;
if ($product->product_id==$array_products [$countprod]["product_id"]) { $tov=1; }
} if ($tov==1) {?>

Товар в корзине

<?php } else {?>

Товар не в корзине

<?php }?>

Если вы не заметили, то разница в коде (в сравнении со страницей товара) лишь в:
Для страницы товара (product_default.php):
Код
if ($this->product->product_id==...
Для списка товаров (product.php):
Код
if ($product->product_id==...

Для, например, модуля JS "label products" (tmpl/default.php):
Код
if($curr->product_id==...
то есть полностью (только(!) при условии расположения внутри '<?php foreach($list as $curr) {}?>'):
Код
<?php
$tov=0;
$cart = JModel::getInstance('cart', 'jshop');
$cart->load("cart");
$countprod = 0;
$array_products = array();
foreach($cart->products as $value) {
$array_products [$countprod] = $value;
if ($curr->product_id==$array_products [$countprod]["product_id"]) { $tov=1; }
} if ($tov==1) {?>

Товар в корзине

<?php } else {?>

Товар не в корзине

<?php }?>

Конечно же условие else не обязательно.
Работу данного примера можно посмотреть здесь (J_2.5.9+JS_3.14.0): http://old.joomcommerce.net/

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #1 : 01.04.2013, 11:26:22 »
Спасибо отличное дополнение, давно думал об этом !!) А как правильно прописать ссылку в корзину при наличии товара в ней ?

*

denben777

  • ***
  • 157
  • 75
Re: Товар уже в корзине
« Ответ #2 : 01.04.2013, 14:03:04 »
skyrec если я вас правильно понял, то ссылка в корзину выглядит так:
Код
<a href="<?php print SEFLink('index.php?option=com_jshopping&controller=cart');?>">Корзина</a>

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #3 : 01.04.2013, 15:08:02 »
skyrec если я вас правильно понял, то ссылка в корзину выглядит так:
Код
<a href="<?php print SEFLink('index.php?option=com_jshopping&controller=cart');?>">Корзина</a>
Да спасибо, такая фишка есть на сайте wildbirries, там при добавлении товара в корзину кнопка с "добавить в корзину" меняется на "перейти в корзину" очень удобно ! + поставил !

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #4 : 01.04.2013, 15:24:07 »
Почему то решение для страницы товара не заработало....(


*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #6 : 01.04.2013, 19:52:07 »
Куда вставлялся код? Ссылка на сайт есть?
Сайт на локале пока, код вставлялся в product_default.

*

denben777

  • ***
  • 157
  • 75
Re: Товар уже в корзине
« Ответ #7 : 01.04.2013, 20:46:34 »
Покажите свой product_default -> здесь только под спойлером или передайте мне по почте.

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #8 : 01.04.2013, 21:59:37 »
Убрал общие скобки

Спойлер
[свернуть]

И все заработало... хотя странно все это как то :)

*

denben777

  • ***
  • 157
  • 75
Re: Товар уже в корзине
« Ответ #9 : 01.04.2013, 22:24:50 »
А ведь действительно не выводилась надпись "Товар не в корзине" при кол-ве товаров в корзине "0".

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #10 : 01.04.2013, 22:52:55 »
А ведь действительно не выводилась надпись "Товар не в корзине" при кол-ве товаров в корзине "0". Исправил.

Теперь прикол в том что если вышел из карточки товара и снова в нее зашел, эффект не сохраняется. Даже если еще раз добавить этот товар, проверка не сработает.

*

denben777

  • ***
  • 157
  • 75
Re: Товар уже в корзине
« Ответ #11 : 01.04.2013, 23:15:24 »
Изменил код - теперь все работает как надо.

*

skyrec

  • ****
  • 383
  • 10
  • Люблю я детей !!!
Re: Товар уже в корзине
« Ответ #12 : 03.04.2013, 14:28:35 »
Вот теперь работает как надо ! очень благодарен за фичу !)

*

devirus

  • ***
  • 140
  • 6
Re: Товар уже в корзине
« Ответ #13 : 17.05.2013, 14:38:18 »
Для J3 + JS4 работает если заменить одну строку:
$cart = JModelLegacy::getInstance('cart', 'jshop');

*

Argawa

  • ***
  • 78
  • 1
Re: Товар уже в корзине
« Ответ #14 : 29.05.2013, 15:03:16 »
Изменил код - теперь все работает как надо.

Если использовать mod_ice_jshopcart, то надпись меняется только после перезагрузки страницы. Можно ли этот способ подправить под AJAX корзину?

*

Efanych

  • *****
  • 4317
  • 605
Re: Товар уже в корзине
« Ответ #15 : 30.05.2013, 13:37:54 »
Кнопочку "удалить из корзины" реально сделать?
Создание сайтов, шаблонов, помощь в решении проблем.

*

Argawa

  • ***
  • 78
  • 1
Re: Товар уже в корзине
« Ответ #16 : 26.01.2016, 07:31:01 »
Здравствуйте! Фишка отличная. Вопрос, как сделать так, чтобы писалось, например, в корзине 1 товар или в корзине 2 товара?