Как создать скидку для товаров с опред брендом в msDiscount ?
Есть список брендов, бред указан в опциях товара, как сделать именно для них скидку через msDiscount?
Код ниже уже готовый, вопрос решён. Нужно будет вам создать ваши бренды в группе ресурсов обязательно указать все контексты, затем записать их в словарь как ниже, и всё это запустить в пакете под названием «Консоль»
При условии что у вас бренд как у меня находится в опции товара, если нет то код ниже нужно будет переделать а именно первую часть с поиском опции.
Код ниже уже готовый, вопрос решён. Нужно будет вам создать ваши бренды в группе ресурсов обязательно указать все контексты, затем записать их в словарь как ниже, и всё это запустить в пакете под названием «Консоль»
При условии что у вас бренд как у меня находится в опции товара, если нет то код ниже нужно будет переделать а именно первую часть с поиском опции.
<?php
$brensList = array('NOMAD','Dominator','АкТех','Kainar');
$q=$modx->newQuery('msProductOption', array('key:=' => 'brand', 'value:IN' => $brensList));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
$brendsGroups = array(
'NOMAD' => 79,
'Dominator' => 80,
'АкТех' => 81,
'Kainar' => 82
);
$productWithoutGroup = 103; // Айди группы ресурсов что нет в списке выше.
foreach ($res as $k => $v) {
$currentProductBrand = $v['msProductOption_value'];
$docId = $v['msProductOption_product_id'];
$newGroup = $brendsGroups[$currentProductBrand];
if(!$newGroup){
$newGroup = $productWithoutGroup;
}
$resource = $modx->getObject('modResource', $docId);
if($resource){
if(!$resource->isMember($newGroup)){
$resource->joinGroup($newGroup);
}
}
}
Комментарии: 2
У меня есть 1 вариант, но он костыльный, пройтись по всем товарам, и положить их в спец группу ресурсов по бренду, и потом эту группу указать
Спасибо всем кто помог. Вот код работает проверил. Можно конечно было лучше сделать, особенно в случае создание и автоматом добавления групп ресурсов по брендам, но так и не смог быстро найти способ проверить все группы ресурсов на имеющиеся и если нет то создать а потом всё собрать и указать в словарь.
<?php
$brensList = array('Zuff', 'Пульс', 'ON', 'Dominator', 'FB', 'Актех', 'Вожак', 'Зверь');
$q=$modx->newQuery('msProductOption', array('key:=' => 'brand', 'value:IN' => $brensList));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
$brendsGroups = array(
'Zuff' => 7,
'Пульс' => 8,
'ON' => 9,
'Dominator' => 10,
'FB' => 11,
'Актех' => 3,
'Вожак' => 6,
'Зверь' => 14
);
foreach ($res as $k => $v) {
$currentProductBrand = $v['msProductOption_value'];
$docId = $v['msProductOption_product_id'];
$newGroup = $brendsGroups[$currentProductBrand];
$resource = $modx->getObject('modResource', $docId);
if(!$resource->isMember($newGroup)){
$resource->joinGroup($newGroup);
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.