Как вывести цену со скидкой в карточке товара msDiscount ?

msDiscount выводит в каталоге, корзине всё норм, но в карточке товара не выводит, в доках не нашёл как вывести цену со скидкой в карточке товара
Viktor
23 июня 2022, 11:58
modx.pro
60
0

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

Viktor
23 июня 2022, 11:58
0
Такой очевидный вопрос, но в доках нет решения
    Viktor
    23 июня 2022, 12:06
    0
    Пока нет ответа со встроенным решением, сделал такой сниппет
    [[!getProductDiscountPrice? &price=`[[*price]]`]]
    .
    <?php
    // Если не указан &uid=``, то выбираем для текущего юзера
    if(empty($price)){
        return '';
    }
    
    if (empty($uid)) {$uid = $modx->user->id;}
    
    $pdoFetch = $modx->getService('pdoFetch');
    $group = $pdoFetch->getObject('msdUserGroup', array('modUser.id' => $uid), array(
        'loadModels' => 'msdiscount',
        'leftJoin' => array(
            'modUserGroupMember' => array('class' => 'modUserGroupMember', 'on' => 'modUserGroupMember.user_group = msdUserGroup.id'),
            'modUser' => array('class' => 'modUser', 'on' => 'modUser.id = modUserGroupMember.member AND modUser.id = '.$uid),
        ),
        'groupby' => 'msdUserGroup.id',
        'sortby' => 'CAST(`msdUserGroup`.`discount` AS DECIMAL(13,3))',
        'sortdir' => 'desc',
        'select' => 'discount',
    ));
    
    
    
    if (isset($group['discount'])) {
        
        return (((int)$price * (100 - (int)$group['discount'] )/100));
    }
    
    return '';
      Viktor
      23 июня 2022, 12:34
      0
      Как вывести скидку для всех тоже хз
        Viktor
        23 июня 2022, 12:45
        0
        Вывод вообще для всех
        <?php
        if(empty($price)){
            return '';
        }
        
        $pdoFetch = $modx->getService('pdoFetch');
        $group = $pdoFetch->getObject('msdUserGroup', array(), array(
            'loadModels' => 'msdiscount',
            'leftJoin' => array(
                'modUserGroupMember' => array('class' => 'modUserGroupMember', 'on' => 'modUserGroupMember.user_group = msdUserGroup.id')
            ),
            'groupby' => 'msdUserGroup.id',
            'sortby' => 'CAST(`msdUserGroup`.`discount` AS DECIMAL(13,3))',
            'sortdir' => 'desc',
            'select' => 'discount',
        ));
        
        if (isset($group['discount'])) {
            
            return (((int)$price * (100 - (int)$group['discount'] )/100));
        }
        
        return '';
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          4