Скидки на товар в модификациях товара
Скидки на товар при использовании msOptionsPrice2 в модификациях, когда скидка задается через дополнительное поле у товара или раздела товаров.
Сначало создаем поле для скидок, например sales.
Задаем отображение шаблонамтовар и раздела, получаем результат самого поля в товарах или разделах.
Осталось создать плагин на событие msopOnGetFullCost при условии что установлен плагин модификаций msOptionsPrice2
<?php switch ($modx->event->name) { case 'msopOnGetFullCost': foreach($modifications as $i => $modificat){ if (!$modificat['old_price']>0){ $sales = 0; //проверяем наличие скидки у товара $q = $modx->newQuery('modTemplateVarResource'); $q->where(array( 'contentid' => $rid, 'tmplvarid' => 11 )); $q->select(array( 'modTemplateVarResource.value' )); $q->prepare(); $q->stmt->execute(); $res = $q->stmt->fetch(PDO::FETCH_ASSOC); $sales = $res['value']; if (!isset($sales)){//если скидки у товара нет, проверяем у раздела $q = $modx->newQuery('modResource'); $q->where(array( 'modResource.id' => $rid, 'modResource.context_key' => 'web' )); $q->leftJoin('modTemplateVarResource', 'TSales', 'modResource.parent = TSales.contentid AND TSales.tmplvarid = 11'); $q->select(array( 'TSales.value as sales' )); $q->prepare(); $q->stmt->execute(); $res = $q->stmt->fetch(PDO::FETCH_ASSOC); $sales = $res['sales']; } if (isset($sales)){//рассчет скидки на товар $new_price = round($cost - ($cost * (int)$sales / 100)); $cost = $new_price; } } } $modx->Event->returnedValues['cost'] = $cost; break; } $modx->event->returnedValues = $modx->Event->returnedValues;
Комментарии ()