Максим

Максим

С нами с 02 декабря 2015; Место в рейтинге пользователей: #129
Максим
30 июня 2020, 10:39
0
А не проще ли переопределить гриды и возможно потребуется переопределить процессор getlist, что бы сразу получать нужные заказы и не мешать работе фильтров? А фильтрацию по контексту в таком случае просто скрыть.
Максим
29 июня 2020, 15:10
+1
Хорошая идея и статья. Я как-то начинал писать подобное с Eloquent, но без Slim и Phinx. Но что-то забросил…
Поддержу Алексея по поводу JWT и тестов.
А с чем связан вынос роутов в index.php? Ведь их может быть много и тогда точка входа разрастется… Может их стоит вынести, например, в отдельный сервис? Я не знаю Slim и возможно там это уже реализовано… Ну или в отдельный файлик?
Максим
29 июня 2020, 14:06
0
Судя по вашему ответу выше и минишоп копать не нужно. Просто создаете модификацию, указываете нужный вес, а в свойствах указывайте размер упаковки. Единственное условие при создании модификации, с которым могут возникнуть проблемы, так это то, что размер упаковки должен быть разным под каждый вес.
Максим
29 июня 2020, 13:48
0
Ну что бы было без перезагрузки — это AJAX. Можно сделать по примеру minishop2. Определяете в форме действие, например через Отправку формы можно повесить на клик по месяцу или изменении года.
Создаете /assets/components/arhiv/action.php в котором проверяете является ли это AJAX запросом, присутствует ли action и если эти условия верны, то подключаете точку входа (/index.php). Далее создаете плагин и вешаете его на событие onHandleRequest. В нем на основании экшена вызывать нужный процессор или метод класса.
Или можно в action.php вместо точки входа подкючать свой класс и дергать нужный метод или дергать свой самописный процессор. Только не забываем в action.php написать подключение по API.
Метод класса или процессор должен получать данные формы и на основании этого составлять условие выборки и получать данные. Я бы для этого использовал pdoFetch.
В любом случае придется нормально так разобраться с принципами работы modX.
Максим
29 июня 2020, 10:18
0
Не совсем понятно, что у вас не получается. Если вывести вес товара, который указывается в настройке модификации, то в чем проблема? Открываем код дефолтного чанка и смотрим как вывести вес ($weight).
Если у вас товар может быть доступен с разным весом, то нужно видоизменить поле вес (в доках минишопа, есть пример) ну и потом создавать соответствующие мдификации.
Максим
28 июня 2020, 18:56
+1
Для mFilter можно написать кастомные фильтры. Если не ошибаюсь, то даже в доках есть пример кастомного фильтра. Сложного особо ничего в нем нет. Вот дока
Максим
27 июня 2020, 17:59
+1
Должно отработать так:
$values = & $modx->event->returnedValues;
$values['price'] = ($price * $modif / 100) + $price;
Вот описание
Максим
27 июня 2020, 14:02
+1
Вообще, насколько я понимаю, то
$modx->event->returnedValues
используется только для вывода, а для того, а цена будет в переменной
$price
на основании данного кода:
$params = array(
                'product' => $this,
                'data' => $data,
                'price' => $price,
            );
            $response = $miniShop2->invokeEvent('msOnGetProductPrice', $params);
Поэтому вот эту строчку
$values['price'] += $values['price']*$modif / 100;
нужно переписать на
$values['price'] = $price * $modif / 100;
Максим
27 июня 2020, 12:50
+1
Вопрос первый: Вы само событие включили (поставить галочку в поле Включен на вкладке Системные события)
Вопрос второй: Удалось получить результат работы этой строки:
echo $values['price'];
. Для отладки нужно использовать:
$modx->log(modX::LOG_LEVEL_ERROR, print_r($value['price'], 1))
. Результат будет в журнале ошибок.
И теперь, если событие включено и уже зная как дебажить, то можем приступать к дебагу.
В коде есть 3 условия из-за которых результат может быть не удовлетворительным, соответственно и проверяем эти условия.
Максим
27 июня 2020, 12:40
0
Нужно понимать, что сами компоненты ClientConfig и VersionX не имеют никакого отношения к импорту товаров. Поэтому предполагаю, что в самом csv файле присутствует символ [. Попробуйте взять из файла несколько корректных товаров, с ними создать новый csv и подгрузить. Если все пройдет успешно, то ищите проблему в самом файле импорта.
Максим
27 июня 2020, 12:35
0
Может слеши воспринимаются как спецсимволы? Попробуйте заменить их на дефисы или поставить пробелы перед и после слешей.
Максим
27 июня 2020, 12:20
0
У меня в профиле есть скайп. Напишите, созвонимся и протестируем.
Максим
26 июня 2020, 18:36
0
Если вы пытаетесь установить атрибут value тегу input с типом файл, то это не допустимо по соображениям безопасности. А при логике описанной в комментариях выше, вам просто нужно сформировать корректные данные и отправить их на сервер и уже там их ловить и отправлять ручками с атачами либо формитом (только я хз как для формита сформировать данные с файлом или файломи).
Максим
26 июня 2020, 17:57
0
Сделал 2 заказа с одного браузера указав разные почты. Письма пришли корректно. Посмотрите в админке должны быть 2 новых пользователя. Так же протестил на других сайтах и тоже подобного нет.
Максим
25 июня 2020, 23:03
+1
Насколько я понимаю вам нужен сниппет с таким вызовом:
[[!mySnyppet?&tvname=`pole`&tvvalue=`[[*pole]]`
Сам же сниппет должен делать следующее:
1) Получать TV по полю name из таблицы modx_site_tmplvars
2) Получать у данной TV и парсить данные из поля elements. Хранятся они там так: Красный==1||Синий==2
3) Находим нужное и возвращаем.
А теперь кодом (просто наброски для наглядности. Не является готовым решением):
// Получаем TV
$tv = $modx->getObject('modTemplateVar', array('name' => $tvname));
if (empty($tv)) {return;}
// Получаем данные
$el = $tv->get('elements');
if (empty($el)) {return;}
$elements = explode('||', $el);
$output = '';
foreach ($elements as $elenemt) {
    // Перед использованием list ознакомьтесь с документацией
    list($label, $value) = explode('==', $element);
    if ($value == $tvvalue) {
        $output = $label;
        break;
    }
}
return $output;
Максим
25 июня 2020, 22:32
0
Ну тогда так:
1) Удаляем ручками все из /core/cache/ (саму папку cache оставляем) и проверяем
2) Проверяем корректность записей в лексиконах.
3) Если первые два пункта не дали результатов, то смотрим может где-то в плагинах подгружают буржуйские словарики, например на событии msOnBeforeChangeOrderStatus
4) Если и в плагинах нет ничего такого, то смотрим исходники минишопа, может там переписали (всякое бывает).
Максим
25 июня 2020, 21:49
0
Ну тогда глупый вопрос, а в чанках на каком языке написано?
Максим
25 июня 2020, 21:47
+1
Не знаю есть ли готовое что-то или нет, но в таких случаях я предпочитаю реализовывать самостоятельно и закладывать только нужный функционал.
Есть 2 варианта самостоятельного решения:
  1. Воспользоваться modExtra
  2. Написать ручками без использования заготовки. Примеры можно подсматривать в различных компонентах и исходниках MODx.
Раньше я бы выбрал второй вариант, только потому, что он заставляет вникать в каждый этап и дает более глубокое понимание принципов работы.
Максим
25 июня 2020, 21:37
0
А как офис решит проблему с сохранением каждодневных данных? Их же не обновлять нужно а добавлять новые, насколько я понял.
Максим
25 июня 2020, 21:33
0
Проверьте настройки:
cultureKey
locale