Алексей Шумаев

Алексей Шумаев

Был в сети Вчера в 09:45
Заказы принимаю
По моему опыту, подобные задачи в modx не решаются просто «из коробки», как, возможно, в других более специализированных системах. Но у нас cmf, поэтому всё можно настроить максимально удобно для себя.

За основу берите minishop2, т.к. там есть сразу: каталог, мультикатегории, свойства.
Обязательно mSearch2; возможно, seoFilter.

Импорт/экспорт я бы сделал свой (по мне проще правильно настроить и поддерживать свой класс экспорта-импорта, чем любое стороннее не специализированное решение). Тут главное сразу определиться: что и куда должно попадать; вот как раз это требует опыта построения проектов на modx.
В модуле экспорта/импорта закладывается логика распределения объектов по категориям minishop'а в зависимости от свойств объектов.

Для вывода на фронт в различных разрезах можно использовать:
— мультикатегориии minishop2
— mSearch2 — настраивать вывод определённых объектов, исходя из их свойств.
Проще всего, наверное, для ресурса добавить TV-поле c фильтром и применять его на данной странице
— seoFilter (? я его не использовал, но вроде он для того и создан).
Наверное стоит чуть дополнить:
1. Скрипт лучше сохранить в закрытую базовой авторизацией директорию. На всякий случай )
2. Добавить необязательный параметр $_GET['id'] для отключения конкретного плагина, т.к. чаще всего виновник известен. А то потом не разобраться, какие были включены, а какие нет. Особенно если сайт чужой или старый с тяжёлым наследством…
Согласен.

Кстати, есть нюанс, о котором я забыл, хотя и собирался реализовать.
Он как раз касается и метрик.

Может возникнуть такая ситуация:
1. создали универсальную форму, которую менеджер пихает по статьям где надо
2. нужна эта же форма, но с другим названием/продающим тестом и метрикой
Сейчас, получается, нужно создавать дубль формы.
Чтобы этого избежать, нужно зашить в строку запуска формы дополнительные параметры, например: название формы или иные пользовательские переменные. Тут же можно передать и событие метрики.
Получится одна форма с вариантивностью метрик и с разными названиями, продающим текстом или т.п.
Я подумаю, как это реализовать удобнее. Отпишусь.
Спасибо.
По метрике — попробуйте коллбэк:
$(document).ready(function ($) {
    mvtForms2.callbacks.success = function(response) {
        console.log(response);
    };
    mvtForms2.callbacks.error = function(response) {
        console.log(response);
    }
    mvtForms2.callbacks.fail = function(response) {
        console.log(response);
    }
});
Должно же быть удобнее и универсально вроде. Можно все нужные метрики собрать в одном файле.
И ещё: в отличие просто от поля метрики в прошлой версии, сейчас можно вешать события не только на успешную отправку, но и на ошибки отправки или валидации. Это позволит отловить всякие баги форм или понять, что не так с конверсией.
А то бывает — есть форма, а лидов нет. Потом оказывается там проблема с вводом номера телефона, например…
Гарантированная доставка до адресата без SMTP невозможна.
Может работать, может нет — зависит от спам-фильтра на сервере адресата.
Иногда (часто на самом деле) сервер-отправитель попадает в спам-листы.
В логе ничего не будет, т.к. никаких ошибок при отправке нет.
Пробуйте на домене через smtp.
Расширить модель msOrder: https://modx.pro/solutions/7037.
case 'OnMODXInit':

    # добавим расширение для msOrderAddress
    $modx->loadClass('msOrderAddress');
    #добавить новое поле для адреса 
	$modx->map['msOrderAddress']['fields']['new_field'] = 0;
	$modx->map['msOrderAddress']['fieldMeta']['new_field'] = array(
            'dbtype' => 'varchar',
            'phptype' => 'string',
            'precision' => 100,
            'null' => true,
            'default' => null,
	);

        # добавим расширение для msOrder
        $modx->loadClass('msOrder');
	$modx->map['msOrder']['fields']['new_field'] = 0;
	$modx->map['msOrder']['fieldMeta']['new_field'] = [
            'dbtype' => 'int',
            'precision' => 8,
            'phptype' => 'integer',
            'null' => true,
            'default' => 0
	];
Всё. Работаете со своими полями, как и с любыми другими.
Все параметры сниппета, очевидно, в параметрах )
Что в ответе можно посмотреть, распечатав массив на экран. Про объём не помню.
Всё, пробка кончается, быстро больше не отвечу, смотрите сами, там всё очень просто.