Примеры плагинов Shopkeeper
- Дополнения
- Shopkeeper
- Примеры плагинов
Поддержать: USDT TRC20: TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh
4487
Примеры плагинов Shopkeeper
OnSHKChangeStatus
Изменения статуса заказа в Shopkeeper.
/**
* OnSHKChangeStatus
*
* @internal @events OnSHKChangeStatus
*
*/
defined('IN_MANAGER_MODE') or die();
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKChangeStatus') {
$order_id = isset($order_id) ? $order_id : '';
$status = isset($status) ? $status : '';
$output .= "OnSHKChangeStatus submited
";
$output .= "ID заказа: $order_id, Статус: $status";
$modx->event->output($output);
}
OnSHKsaveOrder
Плагин переводит заказ в статус "Отправлен" (название меняется в яз. файле) и пересчитывает кол-во товара на складе сразу после отправки заказа.
/**
* OnSHKChangeStatus
*
* @internal @events OnSHKsaveOrder
*
*/
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKsaveOrder') {
$order_id = isset($id) && is_numeric($id) ? $id : 0;
$purchases = isset($purchases) && is_array($purchases) ? $purchases : array();
if(!$id || !count($purchases)) return;
//вытаскиваем имя TV кол-ва на складе из конфигурации модуля
$conf_inventory = $modx->db->getValue($modx->db->select("value",$modx->getFullTableName('manager_shopkeeper_config'),"setting = 'conf_inventory'"));
//изменем статус на Отправлен
$update_status = $modx->db->update(array('status'=>3),$modx->getFullTableName('manager_shopkeeper'),"`id` = '$order_id'");
//Обновляем значения TV кол-ва товаров на складе
require_once MODX_BASE_PATH."assets/snippets/shopkeeper/classes/class.shopkeeper.php";
require_once MODX_BASE_PATH."assets/snippets/shopkeeper/classes/class.SHKmanager.php";
$shkm = new SHKmanager($modx);
$p_allowed = $shkm->allowedArray('all',$purchases);
$shkm->updateInventory($purchases,$p_allowed,$conf_inventory);
$modx->clearCache();
}
OnSHKFrontendInit
/**
* Shopkeeper plugin example
*
* @internal @events OnSHKFrontendInit
*
*/
defined('IN_MANAGER_MODE') or die();
$e = &$modx->Event;
$output = "";
if($e->name == 'OnSHKFrontendInit') {
if(isset($_SESSION['purchases'])){
$purchases = unserialize($_SESSION['purchases']);
foreach($purchases as $key => $value){
$output .= "ID: $value[0], count: $value[1], price: $value[2]
";
}
}
$output .= '';
$modx->event->output($output);
}
OnSHKgetProductPrice
Применения разных действиях над ценами товара до отображения, например сделать скидку.
/**
* OnSHKgetProductPrice
*
* @internal @events OnSHKgetProductPrice
*
*/
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKgetProductPrice') {
if(isset($price)){
$discount = 5; //discount 5%
$output = round($price * (1-$discount/100), 2);
}
$modx->event->output($output);
}
OnSHKmodRenderTopLinks
/**
* OnSHKmodRenderTopLinks
*
* @internal @events OnSHKmodRenderTopLinks
*
*/
defined('IN_MANAGER_MODE') or die();
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKmodRenderTopLinks') {
$mod_page = "index.php?a=112&id=".$_GET['id'];
$output .= 'OnSHKmodPagePrint
/**
* OnSHKmodPagePrint
*
* @internal @events OnSHKmodPagePrint
*
*/
defined('IN_MANAGER_MODE') or die();
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKmodPagePrint') {
if(isset($_GET['pname']) && $_GET['pname']=='example'){
$mod_page = "index.php?a=112&id=".$_GET['id'];
$html = '
Тестовый плагин для модуля.
';
echo $html;
}
}
$modx->event->output($output);
OnSHKsaveOrder
Плагин переводит заказ в статус "Отправлен" (название меняется в яз. файле) и пересчитывает кол-во товара на складе сразу после отправки заказа.
/**
* OnSHKsaveOrder
*
* @internal @events OnSHKsaveOrder
*
*/
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKsaveOrder') {
$order_id = isset($id) && is_numeric($id) ? $id : 0;
$purchases = isset($purchases) && is_array($purchases) ? $purchases : array();
if(!$id || !count($purchases)) return;
//вытаскиваем имя TV кол-ва на складе из конфигурации модуля
$conf_inventory = $modx->db->getValue($modx->db->select("value",$modx->getFullTableName('manager_shopkeeper_config'),"setting = 'conf_inventory'"));
//изменем статус на Отправлен
$update_status = $modx->db->update(array('status'=>3),$modx->getFullTableName('manager_shopkeeper'),"`id` = '$order_id'");
//Обновляем значения TV кол-ва товаров на складе
require_once MODX_BASE_PATH."assets/snippets/shopkeeper/classes/class.shopkeeper.php";
require_once MODX_BASE_PATH."assets/snippets/shopkeeper/classes/class.SHKmanager.php";
$shkm = new SHKmanager($modx);
$p_allowed = $shkm->allowedArray('all',$purchases);
$shkm->updateInventory($purchases,$p_allowed,$conf_inventory);
$modx->clearCache();
}
OnSHKcalcTotalPrice
Расчет общей стоимости заказа
/**
* OnSHKsaveOrder
*
* @internal @events OnSHKcalcTotalPrice
* @internal @properties &threshold=пороговая величина;string;1000 &discount=скидка;string;5%
*
*/
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKcalcTotalPrice') {
if(isset($totalPrice)){
//скидка будет, когда общая сумма выбранных товаров достигнет определённой суммы,
// пороговая величина и скидка задаётся в конфигурации плагина
if($totalPrice>=$threshold){
$output = round($totalPrice * (1-$discount/100), 2);
$modx->setPlaceholder('discountInfo', "$discount");
}
}
$modx->event->output($output);
}
Назад