Форум русской поддержки Joomla!® CMS
11.12.2016, 10:10:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 2728 раз)
0 Пользователей и 1 Гость смотрят эту тему.
denben777
Осваиваюсь на форуме
***

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« : 28.03.2013, 21: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/
« Последнее редактирование: 05.05.2013, 02:27:50 от denben777 » Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #1 : 01.04.2013, 09:26:22 »

Спасибо отличное дополнение, давно думал об этом !!) А как правильно прописать ссылку в корзину при наличии товара в ней ?
Записан
denben777
Осваиваюсь на форуме
***

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #2 : 01.04.2013, 12:03:04 »

skyrec если я вас правильно понял, то ссылка в корзину выглядит так:
Код:
<a href="<?php print SEFLink('index.php?option=com_jshopping&controller=cart');?>">Корзина</a>
Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #3 : 01.04.2013, 13:08:02 »

skyrec если я вас правильно понял, то ссылка в корзину выглядит так:
Код:
<a href="<?php print SEFLink('index.php?option=com_jshopping&controller=cart');?>">Корзина</a>
Да спасибо, такая фишка есть на сайте wildbirries, там при добавлении товара в корзину кнопка с "добавить в корзину" меняется на "перейти в корзину" очень удобно ! + поставил !
Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #4 : 01.04.2013, 13:24:07 »

Почему то решение для страницы товара не заработало....(
Записан
denben777
Осваиваюсь на форуме
***

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #5 : 01.04.2013, 15:14:07 »

Куда вставлялся код? Ссылка на сайт есть?
Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #6 : 01.04.2013, 17:52:07 »

Куда вставлялся код? Ссылка на сайт есть?
Сайт на локале пока, код вставлялся в product_default.
Записан
denben777
Осваиваюсь на форуме
***

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #7 : 01.04.2013, 18:46:34 »

Покажите свой product_default -> здесь только под спойлером или передайте мне по почте.
« Последнее редактирование: 02.04.2013, 00:16:47 от denben777 » Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #8 : 01.04.2013, 19:59:37 »

Убрал общие скобки

Показать текстовый блок

И все заработало... хотя странно все это как то Azn
Записан
denben777
Осваиваюсь на форуме
***

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #9 : 01.04.2013, 20:24:50 »

А ведь действительно не выводилась надпись "Товар не в корзине" при кол-ве товаров в корзине "0".
« Последнее редактирование: 02.04.2013, 00:17:08 от denben777 » Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #10 : 01.04.2013, 20:52:55 »

А ведь действительно не выводилась надпись "Товар не в корзине" при кол-ве товаров в корзине "0". Исправил.

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

Репутация: +74/-1
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #11 : 01.04.2013, 21:15:24 »

Изменил код - теперь все работает как надо.
« Последнее редактирование: 02.04.2013, 01:33:22 от denben777 » Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #12 : 03.04.2013, 12:28:35 »

Вот теперь работает как надо ! очень благодарен за фичу !)
Записан
devirus
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 144



« Ответ #13 : 17.05.2013, 12:38:18 »

Для J3 + JS4 работает если заменить одну строку:
$cart = JModelLegacy::getInstance('cart', 'jshop');
Записан
Argawa
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 72


« Ответ #14 : 29.05.2013, 13:03:16 »

Изменил код - теперь все работает как надо.

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

Репутация: +602/-0
Offline Offline

Пол: Мужской
Сообщений: 4321



« Ответ #15 : 30.05.2013, 11:37:54 »

Кнопочку "удалить из корзины" реально сделать?
Записан
Argawa
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 72


« Ответ #16 : 26.01.2016, 06:31:01 »

Здравствуйте! Фишка отличная. Вопрос, как сделать так, чтобы писалось, например, в корзине 1 товар или в корзине 2 товара?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet