Вопросы

Вывод броней в userevent

В дополнении реализовано так, что выводится только событие id которого жестко передано в запросе userevent=id.
1) Как мне вывести все брони определенного пользователя
2) Как вывести все брони определенного ресурса

P.S. При бронировании записывается id пользователя и id ресурса где происходит бронирование, соответственно пользователь может сделать несколько разных броней, также на определенный ресурс могут забронироваться несколько разных пользователей

3) не самое важное, но вдруг, как мне при вызове сниппета передать параметр cost со значением необходимой стоимости и желательно в админке как-то указывать стоимость для каждого ресурса, хоть доп полем
Dima
13 марта 2021, 23:15
modx.pro
1
846
0

Вывод событий в UserEvents

Необходима реализация системы записи к специалисту на определенное время. Выбрал для этого модуль UserEvents. Вроде все хорошо, но есть большие проблемы:
1) не могу поменять время для записи, выводится только стандартное, например 8-9, 9-10 (https://file.modx.pro/files/d/8/5/d85c3cc976b7caaa799e4b704dbdd9bc.png) и тд, но в админке можно редактировать с периодом в 15 минут, как сделать возможность выбора времени на фронте.
2) не выводится список событий, на которые имеются записи. В календаре они помечаются как бронь, но на фронте я не могу вывести этот список, сниппет просто ничего не выводит, даже если tpl пустой, нет никаких данных
Помогите разобраться с модулем, или подскажите, что можно использовать другое для реализации задумки
Dima
13 марта 2021, 15:29
modx.pro
695
0

Отправка результата Quiz

Проблема в следующем, не могу отправить результат теста менеджеру.
Выбранные ответы отправляются, хоть и с небольшим косяком, приходит так:
— They___my parents.: b) are
— Имя: Иван
— Телефон: 890012312312

А в тесте всего 3 страницы:
1 — вопрос
2 — вопрос
3 — имя и телефон
Т.е. затирается одна запись

Главный вопрос: как мне отправить цифру с количеством правильных ответов в письме и выводом непосредственно результата (контент, который зависит от количества баллов, который настраивается на вкладке Результаты)
Dima
12 марта 2021, 22:55
modx.pro
969
0

Свой x-type с данными из json

Приветствую!
ExtJs для меня главная трудность в modx, поэтому прошу подсказок

Есть поле в БД, тип TEXT, в нем хранится JSON

При вызове окна если указать x-type = textarea, то получаю такого вида:
["assets\/uploads\/user_files\/file_0_2021-03-11_20-24-30.jpg",
"assets\/uploads\/user_files\/file_1_2021-03-11_20-24-30.jpg",
"assets\/uploads\/user_files\/file_2_2021-03-11_20-24-31.jpg"]
prnt.sc/10jwg5j

Из строки можно заметить, что это массив с ссылками изображений.
Собственно хочу вывести их в виде плитки «с крестиком», т.е. когда нажимаешь на креститик, он обращается к процессору, который в свою очередь удаляет его из этого массива и сам файл.
Константин Ильин
12 марта 2021, 22:52
modx.pro
1 091
0

Плагин для пересчета стоимости доставки в админке

Всем привет!
Так как в miniShop2, к сожалению по прежнему нет пересчета доставки в админке, приходится из раза в раз что-то придумывать.
Какие решения я пока нашел:
  1. Полностью создать новый заказ через фронт — самый легкий способ, который всё пересчитает как надо, проблема только в том, что нужно заново набрать корзину с теми же параметрами, что у клиента, выбрать способ доставки с теми же параметрами, что у клиента и наконец выбрать способ оплаты
    Плюсы: охватываем даже сложные способы доставки с динамическим расчетом через всякие API
    Минусы: повторять весь процесс формирования заказа
  2. Сделать плагин на событие обновления заказа, чтобы он пересчитывал стоимость доставки, тут проблема в том, что в плагине уже нет объекта корзины, но, что мешает его создать на основании заказа. Я нашел среди issues минишопа одно решение (Код ниже), которое по идее должно решить этот вопрос хотя бы для простых способов доставки, у которых фиксированы доп. стоимость и стоимость при которой доставка бесплатная. Но проблема в том, что плагин почему-то считает не корректно, возможно из-за того, что он написан в 2015, а минишоп недавно прилично так обновился и с этим могут быть связаны проблемы. Собственно нужна помощь сообщества, чтобы его поправить.
  3. Ну и третий способ, правим исходники минишопа и делаем все поля заказа редактируемыми, таким образом решая все возможные проблемы с пост-обработкой заказа в админке. Да в таком случае менеджер может насчитать что и как угодно, но это уже проблема магазина и ответственности менеджера. Единственное, что при таком способе хорошо бы делать — это вносить все изменения в историю заказа, так можно будет произвести разбор полетов в случае чего.
Семён Кудрявцев
12 марта 2021, 12:09
modx.pro
1 057
0

Хорошие сервисы для отправки email ?

Добрый день.
Кто из личного опыта может подсказать платные и качественные сервисы по отправке email с простым api без ограничения на количество?

Один из наших магазинов на modx отправляет очень много писем, каждый заказ сопровождается минимум 2 мя, плюс есть подписка на рассылки новостей и так далее. Заказы происходят каждые 30 секунд, а подписка на новости (после того как заказчик попросил дарить каждому подписавшемуся промокод) происходит каждые 10 секунд.
И нас банят всюду — хостинг ник ру так почти сразу, если мы отправляем письма через mail()
Есть платный гугл аккаунт, отправляли через smtp, но в какой то момент и гугл прислал письмо — вы нарушили правила (без пояснения какие именно) и тоже отключил smtp

Есть ли вообще такие сервисы, которые могут граммотно и без ограничений отправлять письма?
ps и особое спасибо тому кто ткнет пальцем в строчку кода minishop где идет вызов сервиса mail при отправке писем при заказе товара и смене статусов заказа.
Спасибо.
Александр Мельник
12 марта 2021, 09:26
modx.pro
921
0

Инициализация формы при обращении formit + ajaxform + google capcha

Всем примет, как на странно но роботы отправляют спам и при google capcha.
Как мне кажется, роботы отправляют спам из-за того, что они видят форму в исходном коде сайта.
Если его скрыть, возможно спама не станет.

Может у кого есть какие-то мысли или решения.

Хотелось бы максимально не править код компонентов и решить следующие задачи.

1. Скрыть форму из исходного кода, я так полагаю это можно сделать по средствам php, но на сколько сильно придется менять компоненты.
2. Сделать так, что бы google capcha срабатывала только при открытой форме, так-как чем больше форм, тем сильнее она грузит сайт и вес у скриптом не мал.
3. Что бы, функционировал ajaxform

Если форму мы можем скрыть как то при использовании всплывающих окон, то как быть без их использования.
Сергей
11 марта 2021, 13:36
modx.pro
710
0

Как сделать дополнительное поле в Register?

Здравствуйте, нужно сделать регистрацию на сайте. Установил дополнение Login.
Как сделать дополнительно поле при регистрации и отобразить его в профиле? Уже весь гугл изрыл
Вызываю сниппет Register
Чанк: lgnRegisterFormTpl
Как видим, только базовые поля заполнения.
<div class="register">
    Чанк: <strong>lgnRegisterFormTpl</strong>
    <div class="registerMessage">[[+error.message]]</div>
    
    <form class="form" action="[[~[[*id]]]]" method="post">
        <input type="hidden" name="nospam:blank" value="" />
        
        <label for="username">[[%register.username? &namespace=`login` &topic=`register`]]
            <span class="error">[[+error.username]]</span>
        </label>
        <input type="text" name="username:required:minLength=6" id="username" value="[[+username]]" />
        
        <label for="password">[[%register.password]]
            <span class="error">[[+error.password]]</span>
        </label>
        <input type="password" name="password:required:minLength=6" id="password" value="[[+password]]" />
        
        <label for="password_confirm">[[%register.password_confirm]]
            <span class="error">[[+error.password_confirm]]</span>
        </label>
        <input type="password" name="password_confirm:password_confirm=`password`" id="password_confirm" value="[[+password_confirm]]" />
        
        <label for="fullname">[[%register.fullname]]
            <span class="error">[[+error.fullname]]</span>
        </label>
        <input type="text" name="fullname:required" id="fullname" value="[[+fullname]]" />
        
        <label for="email">[[%register.email]]
            <span class="error">[[+error.email]]</span>
        </label>
        <input type="text" name="email:email" id="email" value="[[+email]]" />
        
        <br class="clear" />

        [[+register.recaptcha_html]]
        [[+error.recaptcha]]
        
        <div class="form-buttons">
            <input type="submit" name="login-register-btn" value="Register" />
        </div>
    </form>
</div>
Дмитрий
11 марта 2021, 12:49
modx.pro
992
0

PdoPage ЧПУ не переходит при клике на пагинацию, как исправить?

При клике на ссылку допустим следующей странице, не переходит, но если ввести адрес что в этой ссылке оно переходит, а при клике на ссылку ничего не происходит, НЕТ ошибок как в консоли, так и в модиксе. Плагин делал.
Migx обернут в PdoPage

[[!pdoPage?
        &element=`getImageList`
        &limit=`5`
        &ajaxMode=`default`
        &ajaxElemWrapper=`#pdopage`
        &ajaxElemRows=`#pdopage .rows`
        &ajaxElemPagination=`#pdopage .pagination`
        &ajaxElemLink=`#pdopage .pagination a`
        &pageVarKey=`refresher`
        &pageNavVar=`refresher.nav`
        &totalVar=`refresher.total`
        &pageLinkScheme=`/[[+pageVarKey]]-[[+page]]`
        &tvname=`refresherCourses`
        &tpl=`refresherCoursesTpl`
        &docid=`[[*id]]`
    ]]
Вот плагин на обработку не найденных страниц. ИВЕНТ СТАВИЛ.

<?php
    if ($modx->event->name == 'OnPageNotFound') {
        $req = $modx->getOption('request_param_alias');
        if (strpos($_REQUEST[$req], 'refresher') !== false) {
            $pageVarKey = 'refresher';
        } else if(strpos($_REQUEST[$req], 'proffesions') !== false){
            $pageVarKey = 'proffesions';
        } else {
            $pageVarKey = 'page';
        }
        
        if (preg_match("#.*?({$pageVarKey}-(\d+))#", $_REQUEST[$req], $matches)) {
            $uri = str_replace($matches[1], '', $matches[0]);
            $id = 0;
            if (!$id = $modx->findResource($uri)) {
                $id = $modx->findResource(rtrim($uri, '/'));
            }

            if ($id) {
                $_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2];
                $modx->sendForward($id);
            }
        }
    }
Alex
10 марта 2021, 15:20
modx.pro
711
0

Не приходят заявки на почту через SMTP

Сайт:
xn--80acbhftsxotj0d8c.xn--p1ai/
Установлен Shopkeeper.
Заказы с сайта падают в админку:

Но на почте ничего нет.

Интересный момент — в октябре 20-го года поменяли пароль от почтового ящика, и именно после этого перестали приходить заявки на почту.
Я ввел новый пароль в поле mail_smtp_pass но безрезультатно. Пробовал еще раз менять пароль, не помогает.
Писал в поддержку хостинга, говорят проблема на стороне mail.ru
Пишу в mail.ru, говорят неверный пароль:(

Может быть где-то еще может храниться старый пароль?
Текущие настройки SMTP:

Лог ошибки:
[2021-03-10 12:44:10] (ERROR @ /var/www/u0129085/data/www/xn--80acbhftsxotj0d8c.xn--p1ai/core/components/formit/src/FormIt/Hook/Email.php: 322) [FormIt] Произошла ошибка при попытке отправить почту. Ошибка соединения с SMTP-сервером github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Виноградов Тимур
10 марта 2021, 13:02
modx.pro
2 244
0