Перейти к содержанию
Форум поддержки пользователей VamShop

Проверка товара на наличие в корзине


Рекомендуемые сообщения

Никто случайно не реализовывал проверку конкретного(текущего, находясь на странице описания товара) товара на его наличие(т.е. добавлен ли он уже) в корзине?

Ссылка на сообщение
Поделиться на другие сайты

в includes/shopping_cart.php есть метод


function in_cart($products_id) {
if (isset ($this->contents[$products_id])) {
return true;
} else {
return false;
}
}
[/code] можно сделать примерно так: в файл includes/modules/product_info.php добавить
[code]
if ($_SESSION['cart']->in_cart($product->data['products_id'])) {
  $info->assign('IN_CART', 1);
} else {
  $info->assign('IN_CART', 0);
}
потом в шаблоне templates/vamshop/module/product_info/product_info_v1.html использовать эту метку например

{if $IN_CART}<strong>Товар уже находится в корзине в количестве {$PRODUCTS_QUANTITY} </strong>{/if}
[/code]

Ссылка на сообщение
Поделиться на другие сайты

Я у себя делал. Если не получится, то подскажу. Просто сейчас времени нет.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

Я у себя делал. Если не получится, то подскажу. Просто сейчас времени нет.

Не получается =( куда в includes/modules/product_info.php вставлять

if ($_SESSION['cart']->in_cart($product->data['products_id'])) { $info->assign('IN_CART', 1);} else { $info->assign('IN_CART', 0);}

???

Помоги пожалуйста, очень надо...

Ссылка на сообщение
Поделиться на другие сайты

Например туда где метка PRODUCTS_NAME определяется, в этот блок кода.

Что-то не получается.

У меня такой код:

Файл product_info.php


...
/*Проверка на наличие товара в корзине*/
if ($_SESSION['cart']->in_cart($product->data['products_id'])) {
$info->assign('IN_CART', 1);
} else {
$info->assign('IN_CART', 0);
}
/*Конец проверки*/
$info->assign('PRODUCTS_NAME', vam_parse_input_field_data($product->data['products_name'], array('"' => '&quot;')));
...
[/CODE] Если в файле product_info_v1.html сделать такое условие:
[CODE]
{if $IN_CART}
<strong>Товар уже находится в корзине в количестве {$PRODUCTS_QUANTITY} </strong>
{else}
Что-то другое
{/if}

то выводит "Что-то другое". Получается, что условие if срабатывает, но результат false

Ссылка на сообщение
Поделиться на другие сайты

Проверяйте как работает условие, что выводит $_SESSION['cart']->in_cart($product->data['products_id'])

Если я правильно проверяю


$info->assign('TEST_CART', $_SESSION['cart']->in_cart($product->data['products_id']));
[/CODE]

, а в шаблоне вызываю {$TEST_CART} то ничего не выводит.

Или я что-то не так делаю?

Ссылка на сообщение
Поделиться на другие сайты

Смотрите метод in_cart в /includes/classes/shopping_cart.php как он работает и что отдаёт на вывод.

Выше уже писали, что код рабочий.

Наверное просто не так что-то делаете.

Ссылка на сообщение
Поделиться на другие сайты
  • 4 weeks later...

Походу, если у товара есть атрибуты, то не работает эта function in_cart($products_id) в includes/shopping_cart.php

Проверьте пожалуйста.

Ссылка на сообщение
Поделиться на другие сайты
  • 4 weeks later...

' timestamp='1334007969' post='84301']

Походу, если у товара есть атрибуты, то не работает эта function in_cart($products_id) в includes/shopping_cart.php

Проверьте пожалуйста.

Ну да, все правильно, если есть атрибуты то не работает, а если атрибутов нет, то работает, но не считает количество.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

Вот припёрло вернуться к этой теме.

Версия 1.72. Не работает метод in_cart в /includes/classes/shopping_cart.php если у товара есть атрибуты.

Т.е. не выяснить, что товар уже есть в корзине.

Ссылка на сообщение
Поделиться на другие сайты

Так ничего в корзине не менялось, всё осталось как есть.

Я так подозреваю, что in_cart не предназначе для атрибутов, там вроде просто id товара проверяется, а при атрибутах всякие скобки добавляются ещё.

Ссылка на сообщение
Поделиться на другие сайты
Может попробовать что-то типа:
if ($_SESSION['cart']->in_cart(ceil($product->data['products_id']))) {
 
т.е., обычно товар с атрибутов, насколько я помню будет иметь id что-то вроде, к примеру, 10{1}
 
т.е. 10 - id товара, 1 - id атрибута.
 
Вот, наверное, нужно просто лишнее обрезать в условии, оставив id товара только,  тогда и условие будет работать, по идее.
 
или может:
if ($_SESSION['cart']->in_cart((int)$product->data['products_id'])) {
 
Либо через preq_replace оставить только число.
Ссылка на сообщение
Поделиться на другие сайты

Оставить число не получается, т.к. функция in_cart ищет в корзине именно строку вида '10{1}1' - где первое код товара, второе код атрибута, третье значение атрибута.

Для одного конкретного атрибута рабочий вариант такой:

$_SESSION['cart']->in_cart($product->data['products_id'].'{1}1')
Ссылка на сообщение
Поделиться на другие сайты

Я даже и не знаю тогда, не делал никогда такого, что-то нужно переписывать в in_cart функции.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...