Вопросы

Поле со скидкой

есть плагин для реализации скидки при добавлении товаров в корзину

<?php
if ($modx->event->name == 'msOnBeforeAddToCart') {
    if ($modx->user->isAuthenticated()){
        //$user = $modx->getObject('modUserProfile', $modx->user->get('id'));
        $procent = 0;
        $sqlz = $modx->query("SELECT count(id) as count,SUM(cost) as summa FROM `modx_ms2_orders` WHERE user_id=".$modx->user->get('id')." and status=10");
        $parentz = $sqlz->fetchAll(PDO::FETCH_ASSOC);
            foreach ($parentz as $resz) {
                if ($resz['count'] == 0){
                    $procent = 0;
                }else{
                    $sql = $modx->query("SELECT count(id) as count,SUM(cost) as summa FROM `modx_ms2_orders` WHERE `createdon` >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) and user_id=".$modx->user->get('id')." and status=10");
                    $parentu = $sql->fetchAll(PDO::FETCH_ASSOC);
                    if ($parentu) {
                        foreach ($parentu as $res) {
                              if (round($res['summa'],0) < 50000) {
                                  $procent = 0;
                              }elseif (round($res['summa'],0) >= 50000 && round($res['summa'],0) < 100000){
                                  $procent = 3;
                              }elseif (round($res['summa'],0) >= 10000 && round($res['summa'],0) < 150000){
                                  $procent = 5;
                              }elseif (round($res['summa'],0) >= 150000 && round($res['summa'],0) < 200000){
                                  $procent = 8;
                              }elseif (round($res['summa'],0) >= 200000){
                                  $procent = 10;
                              }
                        }
                    }
                }
            }
        
        
        if (/*$user->get('sale')*/$procent > 0){
            $old_price = $product->get('price') - ($product->get('price') * ($procent / 100));
        		$product->set('price', round($old_price, 2));
        }
    }else{
        $modx->event->output('Для покупки товаров, Вам нужно авторизоваться или зарегистрироваться!');
    }
}
если мы меняем количество в корзине, то сумма меняется — все ок, а как сделать, чтобы еще показывалась сумма без учета скидки?

пока вывожу через сниппет, но при увеличении/уменьшении количества, сумма не меняется без перезагрузки страницы

<span>
    	    {'TotalSale' | snippet : [
                    'price' => $total.cost
                ]} 
   </span>
сниппет
$procent = 4;
$sale = (str_replace(' ', '', $price) * 100) / (100 - $procent);
echo round($sale,1);
Максим
19 апреля 2019, 15:17
modx.pro
702
0

modExtra - расширение других таблиц

Здравствуйте!
На основе заготовки modExtra делается компонент. Встала необходимость расширить таблицу Users.
Буду очень признателен если кто-то работал уже расширением других таблиц и поделится информацией.
Нужно чтобы сам транспортный пакет пакет расширял таблицу.
Артур
19 апреля 2019, 14:27
modx.pro
1
952
0

получить путь еще к одной картинке в minishop2 именно в каталоге

Дорого всем.
Не получается получить путь к картинке именно в каталоге, нужно для реализации смены превью при наведении.
{if $thumb?}
    <img src="{$thumb}" class="img-fluid image first" alt="{$pagetitle}" title="{$pagetitle}"/>
 {else}
{/if}
        
<div class="hover-image">
{if $thumb}
    <img  src="{$thumb[1]['medium']}"/> - КАКОЙ ЗДЕСЬ ПУТЬ НАПИСАТЬ?
{else}
 {/if}
</div>

в карточке товара вывожу так
{if $files}
    <img src="{$files[1]['medium']}">
{else}
 {/if}
Сергей
18 апреля 2019, 22:54
modx.pro
817
0

Сбрасывание корзины в minishop2

Если вернуться со страницы оплаты назад, то все товары из корзины пропадают.

Мы знаем, что это особенность работы минишопа.

Но нужно как то сделать, чтобы товар вновь появлялся в корзине, когда нажимаешь назад. Например при нажатии назад например опять покупка дублировалась и т.д. Любой костыль.
Богдан
18 апреля 2019, 19:37
modx.pro
614
0

Поле в заказах в админке

Как сделать поле в заказе для вписывания стоимости доставки самим менеджером в админке?
Aslero
18 апреля 2019, 15:06
modx.pro
600
0

Как поменять пароль у пользователя, зная его id?

Здравствуйте. Я знаю как можно поменять пароль у авторизированного пользователя: $modx->user->changePassword($new,$current)
А как это сделать без указания текущего пароля? В голову кроме «ломового» способа на чистом PDO ничего не лезет, но это же костыль…
Николай
18 апреля 2019, 14:24
modx.pro
1 611
0

процессоры и пользователи

На одной странице сайта у меня находится мой сниппет, внутри которого идет обращение к процессору
$response = $modx->runProcessor('resource/create', $data2);
Это страница доступна для посетителей.
До этого я пользовался для создания ресурсов методом
$modx->newObject
но недавно узнал о методе с использованием процессора.
Столкнулся с тем, что с компьютера нужные мне ресурсы создавались чудесно, а затем зашел с телефона — и ничего не создается. Минут 20 тупил, пока не понял что дело в правах. На компьютере я залогинен, а на мобильном — гость.

Ну и собственно вопрос — как правильно поступать, чтобы даже гость мог создать ресурс?
1) Каким то образом дать гостю права на обращение к процессору?
2) Создавать ресурс при помощи
$modx->newObject
и не выделываться?
3) Ваш вариант.
Александр Мельник
17 апреля 2019, 21:11
modx.pro
772
0

[РЕШЕНО] Переменная в фильтре по TV

Всем доброго времени суток!
Столкнулся с проблемой, которая, наверняка, имеет простое решение:

На моем сайте Арктических конвоев существует три уровня вложенности:
1 Конвой
2 Состав конвоя
3 Экипаж

Для привязки члена экипажа к судну использую ТВ-параметр «Список (множественный список)» с оператором выбора:
@SELECT pagetitle, id FROM modx_site_content WHERE parent=11
где в родителе 11 — соответственно все суда и корабли участники конвоем

Аналогично использую для члена экипажа и привязку к списку конвоев. В шаблоне для страницы члена экипажа — все ОК. Выводит как надо.
Михаил Боровов
17 апреля 2019, 14:57
modx.pro
988
0

Добавить порядковый номер к ALT на странице

Доброго времени суток всем. Формирую автоматически атрибут alt для изображений на странице из поля pagetitle, можно как-то добавить к каждому alt порядковый номер, что бы добавлялось по порядку: заголовок — фото 1, заголовок — фото 2?
Виктор Лобанов
17 апреля 2019, 14:34
modx.pro
966
0

Анимация во время ajax загрузки

Приветствую. Есть необходимость сделать анимацию во время загрузки контента через ajax, тоесть список товаров после прокрутки вниз загружается дальше, но это происходит не очень быстро и хотелось бы сделать какую либо анимацию, чтобы юсер видел, что происходит подгрузка контента, а не список товара кончился. Сейчас просто список товара в этот момент серый становиться. используется minishop2, msearch2 и pdotools
[[!mFilter2?
	  &paginator=`pdoPage`
	  &class=`msProduct`
	  &element=`msProducts`
	  &parents=`[[*id]]`
	  &tplOuter=`mFilter2OuterTpl`
	  &tpls=`featureProductTpl`
	  &showEmptyFilters=`0`
	  &suggestions=`1`
	  &suggestionsMaxResults=`15000`
	  &suggestionsMaxFilters=`15000`
	  &limit=`12`
	  &ajaxMode=`scroll`
	  &aliases=`
Pavel
17 апреля 2019, 13:06
modx.pro
1
983
0