Скидки на товар в модификациях товара
Скидки на товар при использовании 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;
Комментарии ()