Как создать скидку для товаров с опред брендом в 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);
        }
    }    

}
Vladimir
04 июля 2022, 13:57
modx.pro
869
0

Комментарии: 2

Vladimir
04 июля 2022, 14:00
0
У меня есть 1 вариант, но он костыльный, пройтись по всем товарам, и положить их в спец группу ресурсов по бренду, и потом эту группу указать
    Vladimir
    04 июля 2022, 15:35
    0
    Спасибо всем кто помог. Вот код работает проверил. Можно конечно было лучше сделать, особенно в случае создание и автоматом добавления групп ресурсов по брендам, но так и не смог быстро найти способ проверить все группы ресурсов на имеющиеся и если нет то создать а потом всё собрать и указать в словарь.
    <?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);
        }
    
    }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2