Корзина
Корзина – модуль в составе модуля «Интернет-магазин». У этого модуля есть и административный интерфейс, и страница на сайте, и подключение в виде набора функций для работы с корзиной.
Подключение
Подключаемая часть – файл modules/cart/cart.inc.php. В нем описан класс
Cart_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_cart
. Экземпляр класса создается при первом вызове
переменной.
Методы
array get ([integer $payment_id = 0]) – Возвращает товары в корзине.
- integer $payment_id: идентификатор текущего метода оплаты
Пример:
$cart = $this->diafan->_cart->get();
Массив $cart
будет содержать различную информацию о корзине:
- идентификатор корзины (id),
- массив товаров в корзине (rows) с ценами (price), с данными о товаре (good), с данными о сопутствующих услугах (additional_cost),
- общая скидка на всю корзину (discount_total), начисляемая от суммы корзины или от суммы прошлых заказов, скидка распределяется на каждый товар пропорционально стоимости,
- следующая скидка (discount_next), которую пользователь может получить при добавлении товар на определенную сумму,
- сопутствующие услуги на всю корзину (additional_cost),
- суммы за все товары до применения скидки (old_summ_goods), сумма за товары со скидкой (summ_goods), итоговая сумма за товары и сопутствующие услуги со всеми скидками (summ).
При подготовке данных функция актуализирует информацию. Если товар удален на сайте, то в корзине он тоже будет удален. Если товар отсутствует, то из корзины он будет перемещён в список пожеланий.
array get_good (integer $good_id, array|string $param, array|string $additional_cost) – Возвращает товар в корзине.
- integer $good_id: идентификатор товара. Если не указан, возвращается вся корзина
- array|string $param: идентификаторы характеристик товара из таблицы {shop_param_select}
- array|string $additional_cost: идентификаторы сопутствующих услуг
Пример:
// запрашиваем добавленный в корзину товар ID=38
// c характеристиками Цвет: Оливковый(ID 25) Размер XL (ID 34)
// c дополнительным ремешком (ID 2) и упаковкой (ID 5)
$row = $this->diafan->_cart->get_good(38, '25,34', '2,5');
print_r($row);
/* выведет:
Array
(
[id] => 143
[count] => 1
[good_id] => 38
[price_id] => 59
[additional_cost] => 2,5
[param] => 25,34
[params] => Array
(
[0] => 25
[1] => 34
)
[additional_costs] => Array
(
[0] => 2
[0] => 5
)
)*/
float get_count_good (integer $good_id, [integer $price_id = 0]) – Возвращает количество товара в корзине.
- integer $good_id: идентификатор товара. Если не указан, возвращается вся корзина
- integer $price_id: идентификатор цены
Пример:
// запрашиваем количество товара ID=45 со всеми возможными вариантами
$count = $this->diafan->_cart->get_count_good(45);
// запрашиваем количество товара ID=45 с ценой ID=73
$count = $this->diafan->_cart->get_count_good(45, 73);
integer get_count () – Возвращает количество товаров в корзине.
Пример:
echo 'В корзине '.$this->diafan->_cart->get_count().' товара';
// выведет: В корзине 2 товара
float get_summ () – Возвращает общую стоимость товаров в корзине.
Пример:
echo 'В корзине товаров на сумму '.$this->diafan->_cart->get_summ().' руб.';
// выведет: В корзине товаров на сумму 2738 руб.
integer get_last_order () – Возвращает идентификатор последнего заказа.
Пример:
echo 'Номер последнего совершенного заказа: '.$this->diafan->_cart->get_last_order().'.';
// выведет: Номер последнего совершенного заказа: 129.
void add () – Добавляет корзину.
Пример:
// если еще не создана сущность "Корзина"
// для пользователя, создаем ее
$this->diafan->_cart->add();
void edit (array $data) – Изменяет запись в корзине.
- array $data: изменяемые данные
Пример:
// записываем номер совершенного заказа в корзину
$this->diafan->_cart->edit(array("order_id" => 129));
// записываем данные о пользователе в корзину
$this->diafan->_cart->edit(array(
"name" => "Николай",
"mail" => "my@user.ru",
));
// записываем в корзину выбранные общие сопутствующие услуги ID=4 и ID=7
// и способ доставки ID=5
$this->diafan->_cart->edit(array(
"additional_cost" => array(4, 7),
"delivery_id" => 5,
));
array добавленный товар add_good (integer $good_id, array $price, array|string $param, array|string $additional_cost, float $count) – Добавляет товар в корзину.
- integer $good_id: идентификатор товара
- array $price: данные о цене товара из таблицы {shop_price}
- array|string $param: идентификаторы характеристик в из таблицы {shop_param_select}
- array|string $additional_cost: массив идентификаторов сопутствующих услуг
- float $count: количество
Пример:
// добавляем в корзину 3 товар ID=38 с ценой ID=75
// c характеристиками Цвет: Оливковый ID=25, Размер: XL ID=34
// c дополнительным ремешком ID=2 и упаковкой ID=5
$row = $this->diafan->_cart->add_good(38, 59, '25,34', '2,5', 3);
print_r($row);
/* выведет:
Array
(
[id] => 143
[count] => 1
[good_id] => 38
[price_id] => 59
[additional_cost] => 2,5
[param] => 25,34
[params] => Array
(
[0] => 25
[1] => 34
)
[additional_costs] => Array
(
[0] => 2
[0] => 5
)
)*/
void|array edit_goods (array $new_count) – Изменяет запись о товарах в корзине.
- array $new_count: обновляемое количество товара: ключи - идентификаторы записей из таблицы {shop_cart_goods}, значения - количество. Массив содержит только обновляемые значения
Пример:
// изменяем количество товара в записи корзины ID=143 на 5
// остальные товары не редактируем
$row = $this->diafan->_cart->edit_goods(array(143 => 5));
print_r($row);
/* выведет:
Array
(
[id] => 143
[count] => 5
[good_id] => 38
[price_id] => 59
[additional_cost] => 2,5
[param] => 25,34
[params] => Array
(
[0] => 25
[1] => 34
)
[additional_costs] => Array
(
[0] => 2
[0] => 5
)
)*/
// изменяем количество товара в записях корзины ID=141 на 2, ID=143 на 6
// товар в записи ID=140 удаляем
$row = $this->diafan->_cart->edit_goods(array(140 => 0, 141 => 2, 143 => 6));
print_r($row);
/* выведет последнюю отредактированную запись:
Array
(
[id] => 143
[count] => 6
[good_id] => 38
[price_id] => 59
[additional_cost] => 2,5
[param] => 25,34
[params] => Array
(
[0] => 25
[1] => 34
)
[additional_costs] => Array
(
[0] => 2
[0] => 5
)
)*/
void clear ([integer $order_id = 0]) – Очищает коризину.
- integer $order_id: идентификатор добавленного заказа, если корзина очищается после совершения заказа
Пример:
// очищаем корзину
$this->diafan->_cart->clear();
// очищаем корзину и записываем в нее номер совершенного заказа
$this->diafan->_cart->clear(35);
array db_cart () – Получает запись из БД о корзине пользователя.
Пример:
// запрашиваем данные о корзине
// в отличие от функции get() данные никак не будут форматированы
$row = $this->diafan->_cart->db_cart();
print_r($row);
/* выведет запись о корзине из базы данных:
Array
(
[id] => 29
[user_id] => 1
[session_id] =>
[name] =>
[mail] =>
[trash] => 0
[summ] => 8680
[count_goods] => 2
[delivery_id] => 1
[additional_cost] =>
[orders] =>
[additional_costs] => Array
(
[0] =>
)
)*/
array db_goods () – Получает запись из БД о товарах в корзине.
Пример:
// запрашиваем данные о товарах в корзине
// в отличие от функции get() данные никак не будут форматированы
$rows = $this->diafan->_cart->db_goods();
print_r($rows);
/* выведет запись о товарах в корзине из базы данных:
Array
(
[0] => Array
(
[id] => 143
[count] => 1
[good_id] => 44
[price_id] => 59
[additional_cost] =>
[param] => 31
[params] => Array
(
[0] => 31
)
[additional_costs] => Array
(
[0] =>
)
)
[1] => Array
(
[id] => 142
[count] => 1
[good_id] => 47
[price_id] => 65
[additional_cost] =>
[param] => 27
[params] => Array
(
[0] => 27
)
[additional_costs] => Array
(
[0] =>
)
)
)*/
void get_form_param ([boolean $one_click = false]) – Генерирует поля формы, созданные в конструкторе.
- boolean $one_click: сокращенная форма для быстрого заказа
Подключение модуля «Корзина» было переработано в версии 6.0.10.1.
Функция init()
удалена. Инициация теперь происходит при создании экземпляра класса Cart_inc
.
Функция write()
удалена. Ранее функции, изменяющие данные в корзине записывали их в текущую память и требовалось вызов функции write()
. Теперь в этом нет необходимости.
Функция get()
– получение данные о товарах в корзине разделена на get()
и get_good()
. Первая теперь отдаёт только информацию обо всех товарах в корзине (ранее можно было получить информацию и об одном товаре), но результат расширен другой информацией – сопутствующими услугами, скидками на отдельные товары и на корзину в целом, данными о самих товарах, результирующими суммами (которые стали точнее, благодаря учету общих скидок). Добавлена актуализация корзины (удаленные товары удаляются из корзины, отсутствующие товары перемещаются в список пожеланий).
Функция set()
– редактирование данных в корзине заменена на add_good()
, edit_goods()
.
Появилась сущность «Корзина», к которой прикреплены товары. Ранее корзиной был набор строк. Для работы с новой сущностью созданы функции add()
и edit()
.
Добавлены функции get_count_good()
, clear()
, get_last_order()
, db_cart()
, db_goods()
.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.