Инструменты пользователя

Инструменты сайта


shkorder

Работа с объектом заказа SHKorder

Объект SHKorder используется для хранения данных о заказах покупателей и для вывода этих заказов в «Управлении заказами» в панели управления.

Регулярно возникает необходимость обратиться к заказам Shopkeeper через API (например, показать какую-то статистику пользователю, сделать выборку в панели управления по нестандартным параметрам для своего дополнения, изменить статус заказа при оплате через платежную систему и т.д).

Чтобы получить доступ к заказам, нужно сначала подключить соответствующий пакет в своем сниппете или плагине:

Для Shopkeeper 2:

$modx->addPackage('shopkeeper', $modx->getOption('core_path').'components/shopkeeper/model/');

Для Shopkeeper 3:

$modx->addPackage('shopkeeper3', $modx->getOption('core_path').'components/shopkeeper3/model/');

После этого можно работать с заказами.

Примеры использования

Выбор одного заказа по его ID

// $id - ID нужного заказа
$order = $modx->getObject('SHKorder', $id); // для Shopkeeper 2
$order = $modx->getObject('shk_order', $id); // для Shopkeeper 3

Получение статуса выбранного заказа

$status = $order->get('status');

Установка новой цены для выбранного заказа

$status = $order->set('price', 100);
$order->save();  // Сохраняем изменения

Получение содержимого заказа (списка заказанных товаров) в виде массива:

$orderDetails = unserialize($order->get('content'));

Получение списка всех заказов, проход по ним в цикле и вывод всех email, введенных покупателями при оформлении

// получение списка заказов - Shopkeeper 2
$q = $modx->newQuery('SHKorder');
$orders = $modx->getCollection('SHKorder', $q);

// или

// Shopkeeper 3
$q = $modx->newQuery('shk_order');
$orders = $modx->getCollection('shk_order', $q);

// проход по списку полученных заказов
foreach($orders as $o) {
    echo $o->email;
}

Полный список полей объекта SHKorder можно посмотреть в файле core/components/shopkeeper/model/shopkeeper/mysql/shkorder.map.inc.php

Работа со списком покупок

Список покупок заказа хранится не в нем самом, а в отдельной таблице БД, и напрямую через объект shk_order не управляется. Для работы с покупками есть отдельный класс shk_purchases. Из этого следуют некоторые неочевидные выводы. Например, если мы создали заказ через API (а не оформили через корзину), к этому заказу может быть не прикреплено ни одной покупки. Или покупки могут не соответствовать реальным ресурсам MODX. Это позволяет делать магазины с нестандартным функционалом.

shkorder.txt · Последние изменения: 2016/04/23 15:44 (внешнее изменение)