Артур Шевченко

Артур Шевченко

С нами с 24 мая 2019; Место в рейтинге пользователей: #7
Отправить деньги
Артур Шевченко
16 мая 2020, 00:17
0
Самый простой вариант это отваливать событие оплаты и если она не прошла, удалять заказ. Но стоит иметь в виду, что оплата могла не пройти по техническим причинам или клиент решил оплатить позже, а заказа уже нет. Другой вариант на событие msOnBeforeOrderCreate, в общем то которое возникает перед сохранением заказ, точное название есть в документации по minishop2, повесить вызов функции оплаты, но это сложнее. И если вы ждёте готовое решение, то вряд ли вам его в комментариях напишут.
Артур Шевченко
15 мая 2020, 16:15
0
Вдруг я не единственный, кому понадобилось получать данные любого пользователя на фронте, используя fenom, поэтому предлагаю вашему вниманию более универсальную версию сниппета user_info
$output = [];
$options = explode(',',$options);
$profile = $modx->getObject('modUserProfile', ['internalKey' => $input]);
if($profile) {
    foreach($options as $option){
        if (strpos($option,'extended.') === false) {
        $output[$option] = $profile->$option;
        } else {
            $extended = $profile->get('extended');
            $ext = explode(".", $option);
            $ext = $ext[1];
            if(strpos($ext,'|') === false){
                $output[$ext] = $extended[$ext];
            }else{
                $cont = explode("|", $ext);
                $key = $cont[0];
                $val = $cont[1];
                $output[$key][$val] = $extended[$key][$val];
                
            }
        }    
    }
}
if(count($output) == 1){
    return $output[$options[0]];
}else{
    return $output;
    //return json_encode($output); //раскомментируй чтобы возвращать json, а предыдущую закомментируй
}
Примеры вызова
<!-- получаем email -->
{44 | getUserInfo : 'email'} 
<!-- получаем несколько полей -->
{44 | getUserInfo : 'phone,extended.sizes|weight,extended.age' | print_r}
Во втором случае вернется
Array ( [phone] => +7(989)456-85-12 [sizes] => Array ( [weight] => 67 ) [age] => 35 )
sizes — это контейнер в дополнительных полях профиля пользователя, в котором лежит атрибут weight.
Артур Шевченко
13 марта 2020, 10:00
0
Как это нет? В настройках minishop2 есть раздел способы доставки там указывается стоимость каждого и эта стоимость влияет на общую стоимость заказа.
Артур Шевченко
13 марта 2020, 09:56
0
Что значит в сниппет засунул? Ты чтобы добавить элемент в список редактируешь сниппет? По поводу лезть в migx, зачем? Создаёшь tv migx и выводишь его в шаблоне с помощью синтаксиса феном.
Артур Шевченко
13 марта 2020, 09:15
0
Тогда мы вам очень сочувствуем, но придётся всё сносить.
Артур Шевченко
13 марта 2020, 09:11
0
В правом верхнем углу шестерёнка, там пункт системные настройки там и ищите. Ещё можно воспользоваться поиском от Яндекса или Гугла напишите там Modx Revolution переход на на https
Артур Шевченко
12 марта 2020, 18:00
0
Как выяснилось позже, решение выше решает не все проблемы, в частности нет возможности удалить чужой файл. Чтобы это исправить идем core/components/tickets/processors/mgr/ticket/update.class.php, открываем на редактирование находим
$q->andCondition(array('parent' => $this->object->id, 'createdby' => $this->modx->user->id), null, 1);

Заменяем на
$q->andCondition(array('parent' => $this->object->id), null, 1);
Ещё меняем
if ($this->object->createdby != $this->modx->user->id && !$this->modx->hasPermission('edit_document'))
на
if (!$this->modx->hasPermission('edit_document'))
Имейте ввиду при обновлении пакета все манипуляции нужно будет повторить.
Решение прямо скажем не очень хорошее, но других вариантов я не придумал.
Артур Шевченко
12 марта 2020, 09:50
0
В системных настройках протокол поменял?
Артур Шевченко
12 марта 2020, 09:49
0
{set $cost = $product.price | replace: ' ': ''}
Это сработает только при загрузке, дальше переменная $cost меняться не будет. Это первое.
Второе. Цена выводится строкой, а умножение строки на число даёт нечисло.
Ну и третье, это надо делать через js.
(function( $ ){
   $.fn.changeCost = function(id, count) {
    cost = $('#cost-' + id).children('span').text(); //получаем стоимость
    cost = cost.replace(/\s+/g, ''); //вырезаем лишние пробелы
    sum = parseInt(Number(count) * Number(cost)); //умножаем на количество
    $('#sum-' + id).html(sum + ' <i class="fas fa-ruble-sign"></i>'); //выводим результат
   }; 
})( jQuery );
Артур Шевченко
12 марта 2020, 01:13
0
У тебя должен быть шаблон для вывода меню, скорее всего в чанках. Найди его там и пиши условие. Какое именно написали выше.
Артур Шевченко
12 марта 2020, 01:09
0
Нет, ограничений нет. Если для вывода используете protools, то нужно прописывать limit =0, иначе ограничение в 10 ресурсов.
Артур Шевченко
12 марта 2020, 01:07
0
Я думаю вам поможет только бэкап базы если он есть. Ну и mSync передаёт остатки из любого поля которое вы ему укажите, в базе ковыряться не нужно.
Артур Шевченко
12 марта 2020, 01:01
0
Ты получил токен от Яндекса и прописал его в настройках? Ты указал в настройках Яндекс redirect uri с get параметрами?
Артур Шевченко
12 марта 2020, 00:50
0
Где список хранится изначально? От каких условий зависит выбор варианта? Но в принципе можешь попробовать fenom+migx.
Артур Шевченко
12 марта 2020, 00:44
0
А почему ты решил что этот код должен что-то учитывать? Там нет ни одного сравнения свойств двух товаров, нет даже проверки артикулов. Честно говоря не понимаю для чего вообще этот код, если при изменении заказа стоимость и так пересчитывается. Если нужно работать с модификациями так для этого есть msOptionPrice, если охота самому это реализовать читай документы по minishop2 там написано какие события когда генерируются выбирай нужные пиши плагины.
Артур Шевченко
11 марта 2020, 00:52
0
Решено. Находим в элементах сниппет Ticket Form. Открываем на редактирование. Находим на 110 строке условие и в нём удаляем 'createdby'=>$modx->user->id, тоже самое делаем в else. Всё.