Alexey

Alexey

С нами с 02 августа 2015; Место в рейтинге пользователей: #201
Alexey
07 января 2023, 12:15
0
docs.modx.pro/komponentyi/pdotools/parser#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5

Попробуй $.server['DOCUMENT_ROOT']. Я сам ни разу не использовал, но — судя по мануалу — может сработать
Alexey
07 января 2023, 11:59
1
0
if ($input && file_exists($path)) {

Делай доп. проверку на пустоту tv -поля
Alexey
07 января 2023, 11:36
0
Если картинки лежат на этом же сервере, то нужно указывать путь от корня сервера, а не http. А если файлы лежат в удалённом хранилище, то file_exists в этом случае не работает — www.nomostech.it/2022/02/20/checking-if-a-file-exists-on-a-remote-server-with-php/
Alexey
06 января 2023, 20:19
1
+1
Привет!

rtfm.modx.com/current/ru/extending-modx/plugins/system-events/ondocformsave

Плагин на это событие не подойдёт?
Alexey
26 декабря 2022, 07:38
0
Покажите вызов сниппета, который вызываете в шаблоне.
Alexey
25 декабря 2022, 23:35
0
Вот здесь отличный пример через xpdo с джоинами полей TV.
Alexey
25 декабря 2022, 20:59
+1
В вызове сниппета в includeTVs названия этих доп полей прописаны? Если нет, то нужно добавить через запятую.
Alexey
04 декабря 2022, 11:40
0
У $_modx->resource.pagetitle убрать кавычки?
Alexey
30 ноября 2022, 08:42
+2
Да, вчера обратил внимание, что если закомментить указанную строку в файле processors/mgr/file/export.class.php ( if ($new_session == 'new_session') ), то начинается проблема при запуске генерации прайса с большим количеством позиций из админки, там же за несколько этапов генерация идет, каждый раз новую сессию создавая, и подумал, что нужно попозжЕ попытаться пробросить параметр из скрипта для крона, но vectorserver опередил))), за что ему снова человеческое спасибо!

Кстати, при запуске кода для крона, можно убрать эту строку:

$modx->user = $modx->getObject('modUser', 1);

авторизация при запуске процессора не требуется, как выяснилось — проверил в инкогнито, всё работает.
Alexey
29 ноября 2022, 16:35
+1
Совсем забыл про существенный момент — столько времени компонент ковырял, что память стала подводить))

В файле core/components/mspricelist/processors/mgr/file/export.class.php в методе startExport закомментил это условие:



Без этого запуск генерации прайс-листа из внешнего файла не происходит
Alexey
28 ноября 2022, 18:26
1
+2
Рабочее решение, благодарность @vectorserver:

define('MODX_API_MODE', true);
require '../index.php';

$modx->user = $modx->getObject('modUser', 1);

$msPriceList = $modx->getService('msPriceList', 'msPriceList', MODX_CORE_PATH . 'components/mspricelist/model/');
$modx->lexicon->load('mspricelist:default');

$corePath = $modx->getOption('mspricelist_core_path', null, $modx->getOption('core_path') . 'components/mspricelist/');
$path = $modx->getOption('processorsPath', $msPriceList->config, $corePath . 'processors/');

$params = array(
    'crontab' => true,
    'id' => 2,
);

/* @var modProcessorResponse $response */
$response = $modx->runProcessor('mgr/file/export', $params, array(
    'processors_path' => $path
));

if ($response->isError()) {
    die( $response->getMessage() );
} else{
    echo "cron OK";
}
Alexey
28 ноября 2022, 16:05
0
@Андрей Степаненко будьте добры, ответьте на вопрос по крону. Либо тут, либо в ТП модстора. Уже неделю тишина. Проблема та же — по крону не запускается генерация прайс-листа
Alexey
27 ноября 2022, 14:26
0
www.mail-tester.com/

Вот неплохой сервис для тестирования. Бесплатно 3 попытки в сутки позволяет.

И ещё частенько из-за неверной системной настройки emailsender в спам летят письма. Должно быть типа no-reply@site.ru
Alexey
27 ноября 2022, 00:03
0
После раздумий на свежую голову, допер наконец-то, что данные, которые прилетают в комбобокс из базы при открытии модального окна, нужно смотреть в общем процессоре get.class.php, а не процессоре, который в комбобокс отдает список пользователей. Разумеется, из процессора get приходит массив айдишников юзеров — skrinshoter.ru/s/261122/swgV0bFJ, а нужен массив, соответствующий комбобоксу — skrinshoter.ru/s/261122/OUfflCjn. Остальное дело техники, добавил нужный код в метод cleanup:

public function cleanup() {
    $array = $this->object->toArray();
    
    $tmp = [];
    foreach($array['properties'] as $key => $item) {
        if($tmp_user = $this->modx->getObject('modUser', $item)) {
            $tmp[$key]['id'] = $item;
            $tmp[$key]['username'] = $tmp_user->get('username');
        }
    }
    $array['properties'] = $tmp;

    return $this->success('', $array);
}

из кода самого комбика выкинул лишее:

RewardsPupil.combo.Options = function (config) {
    config = config || {};
    Ext.applyIf(config, {
        xtype: 'superboxselect',
        allowBlank: true,
        allowAddNewData: true,
        addNewDataOnBlur: false,
        resizable: true,
        name: 'properties',
        anchor: '100%',
        minChars: 2,
        store: new Ext.data.JsonStore({
            id: (config.name || 'properties') + '-store',
            root: 'results',
            autoLoad: true,
            autoSave: false,
            totalProperty: 'total',
            fields: ['username','id'],
            url: RewardsPupil.config.connector_url,
            baseParams: {
                action: 'mgr/user/getoptions',
            }
        }),
        mode: 'remote',
        displayField: 'username',
        displayFieldTpl: '{username} ({id})',
        valueField: 'id',
        triggerAction: 'all',
        extraItemCls: 'x-tag',
        expandBtnCls: 'x-form-trigger',
        clearBtnCls: 'x-form-trigger',
        renderTo: Ext.getBody(),
    });
    config.name += '[]';
    RewardsPupil.combo.Options.superclass.constructor.call(this,config);
};
Ext.extend(RewardsPupil.combo.Options, Ext.ux.form.SuperBoxSelect);
Ext.reg('rewardspupil-combo-options', RewardsPupil.combo.Options);

Всё завелось — skrinshoter.ru/s/261122/6GN8iS6i.

В который раз убеждаюсь, что нельзя упираться надолго, если не получается найти решение, только мозг закипает… Голову проветрил и сразу дело пошло.
Alexey
25 ноября 2022, 20:35
0
А если два плюса в последней строке убрать?
Alexey
25 ноября 2022, 20:31
0
Поддерживаю! Техподдержка с понедельника молчит.
Alexey
23 ноября 2022, 11:23
+2
Возможно от того, что компонент не адаптирован под MODX 3?
Alexey
22 ноября 2022, 19:33
0
И он прямо мультиселект выдаёт?

С одиночным списком-то проблем нет
Alexey
19 ноября 2022, 15:11
0
Привет! Та же проблема вылезла с кроном. Не подскажешь, как удалось решить? Родитель, разумеется, указан, из админки этот прайс-лист создаётся без проблем
Alexey
08 ноября 2022, 14:56
0
modx.pro/help/18778 — тут есть пример с плагином. Только нужно учесть, что поле editedon уже существует и не нужно для него писать плагин на OnMODXInit