Наверх

Корзина

Корзина – модуль в составе модуля «Интернет-магазин». У этого модуля есть и административный интерфейс, и страница на сайте, и подключение в виде набора функций для работы с корзиной.

Подключение

Подключаемая часть – файл modules/cart/cart.inc.php. В нем описан класс Cart_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_cart. Экземпляр класса создается при первом вызове переменной.

Методы

array get () – Возвращает товары в корзине.

Пример:

$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] =>
            )

    )

)*/

Подключение модуля «Корзина» было переработано в версии 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().

Ваши комментарии и дополнения

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.