Примеры плагинов Shopkeeper
- Дополнения
- Shopkeeper
- Примеры плагинов
3547
Примеры плагинов 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); }