vectorserver · 30 ноября 2022, 06:53 Нужно еще просто было указать в параметрах, еще один ключ stage $params = array( 'crontab' => true, 'stage' => 'new_session', 'id' => 2, ); Готовый рабочий вариант: <?php define('MODX_API_MODE', true); require '../index.php'; /* @var modX $modx */ //Дадим права админа навыполнение процессора $modx->user = $modx->getObject('modUser', 1); //id строки в таблице (колонка ID), таб "Прайс-листы" $row_ID = 2; /** @var msPriceList $msPriceList */ $msPriceList = $modx->getService('msPriceList', 'msPriceList', MODX_CORE_PATH . 'components/mspricelist/model/'); $corePath = $modx->getOption('mspricelist_core_path', null, $modx->getOption('core_path') . 'components/mspricelist/'); $path = $modx->getOption('processorsPath', $msPriceList->config, $corePath . 'processors/'); /* @var modX $modx */ $params = array( 'crontab' => true, 'stage' => 'new_session', 'id' => $row_ID, ); /* @var modProcessorResponse $response */ $response = $modx->runProcessor('mgr/file/export', $params, array( 'processors_path' => $path )); if ($response->isError()) { die($response->getMessage()); } else { echo json_encode($response->response); } Вопросы / cron в компоненте msPriceList 17 +2 1
Alexey · 28 ноября 2022, 18:26 Рабочее решение, благодарность @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"; } Вопросы / cron в компоненте msPriceList 17 +2 1
vectorserver · 12 октября 2022, 08:43 В Fenom можно напрямую использовать условный тернарный оператор, не создавая чанк: {'!getImageList' | snippet : [ 'tvname' => 'test', 'tpl' => '@CODE: <input type="checkbox" {$check == 1 ? "checked" : ""} >' ] }Через обычный парсер, нужно создавать чанк и уже в нем прописывать условия Snippet: [[!getImageList? &tvname=`test` &tpl=`option_tpl` ]]Chunk option_tpl: <input type="checkbox" [[+check:is=`1`:then=`checked`:else=``]] >Проверил у себя на тестовом сервере все работает! Настройки MIGX: Вкладки формы [ { "caption": "Заголовок", "fields": [ { "field": "image", "caption": "Изображение", "inputTVtype": "text" }, { "field": "check", "caption": "checkDATA", "inputTVtype": "listbox", "inputOptionValues": "Да==1||Нет==0" } ] } ]Разметка колонок: [{ "header": "Изображение", "dataIndex": "image" },{ "header": "checkDATA", "dataIndex": "check" }] Вопросы / Вывод чекбокс MIGX 15 0 2
vectorserver · 31 марта 2022, 13:26 Накидал сниппет на коленке. Вызов сниппета: &input — Исходный ролик &default — другое зеркало ролика [[ytTest? &input=`https://www.youtube.com/watch?v=BCwkRcDlo2k` &default=`https://www.youtube.com/watch?v=tu-hhC_PNEg`]]Код сниппета: <?php //Snippet ytTest /** * @param $yt_source * @return false|mixed */ function ytTest($yt_source){ //Парсинг YT ID preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $yt_source, $matches); $yt_id = $matches[0]; if(!$yt_id) return false; $yt_image = "https://img.youtube.com/vi/{$yt_id}/default.jpg"; file_get_contents($yt_image, false, stream_context_create(['http' => ['ignore_errors' => true]])); $check = $http_response_header[0]; return ($check === "HTTP/1.0 200 OK")? $yt_source : false; } /** @var TYPE_NAME $input */ /** @var TYPE_NAME $default */ return ytTest($input) ? ytTest($input) : $default; Вопросы / Как проверить недоступность ролика? 2 0 1
vectorserver · 14 февраля 2022, 13:57 Я бы сделал прослушку на nodejs, и повесил бы к примеру на node.localhost:3000 и потом через плагин отправлял бы данные. <?php $eventName = $modx->event->name; switch($eventName) { case 'OnWebLogin': // хук на вход http://node.localhost:3000/?userID=1&login=1 break; case 'OnWebLogout': // хук на выход http://node.localhost:3000/?userID=1&logout=1 break; } NodeJS const http = require("http"); http.createServer(function(request, response){ console.log("Url: " + request.url); console.log("Тип запроса: " + request.method); console.log("User-Agent: " + request.headers["user-agent"]); console.log("Все заголовки"); console.log(request.headers); response.end(); }).listen('node.localhost',3000); Вопросы / Обращение к MODx через nodejs 3 0 1
vectorserver · 14 февраля 2022, 12:37 Я использовал в свое время, для синхронизации товаров, точно не помню, вот накидал на коленке. Работает :) Пример: <?php //Файл дампа времменый $dump = __DIR__ . "/test_.sql"; //Экспорт из бд №1 таблицы modx_users, modx_user_group_roles $export_db = exportDatabase('localhost', 'root', '', 'modx', array('modx_users', 'modx_user_group_roles'), $dump); //Импорт в бд №2 $import_db = importDatabase('localhost', 'root', '', 'remote_modx', $dump); function importDatabase($host, $user, $password, $database, $backupFilePath) { $password = ($password) ? "-p$password" : ""; $cmd = "mysql -u {$user} {$password} {$database} < $backupFilePath"; return exec($cmd) === 0; } function exportDatabase($host, $user, $password, $database, $tables, $targetFilePath) { $cmd = "mysqldump --host {$host} --user {$user} "; if ($password) { $cmd .= " --password {$password} "; } $cmd .= " {$database} "; if ($tables) { $cmd .= implode(" ", $tables); } $cmd .= " > {$targetFilePath}"; return exec($cmd) === 0; } Вопросы / Как импортировать выборочно таблицы из базы данных в другую базу данных 2 0 1
Илья Уткин · 10 января 2022, 15:20 Есть же метод parsePropertyString — он как раз составит массив из MODX-синтаксиса. То есть что-то типа такого <?php $parser = $modx->getParser(); $html = '[[!pdoResources? &parents=`1` &depth=`0` &tpl=`ListRowTpl` &tplWrapper=`@INLINE [[+output]]` &includeTVs=`image` ]]'; $properties = $parser->parsePropertyString($html); Там же можно подсмотреть, как MODX определяет тип элемента — в методе processTag Готовые решения / Было бы неплохо сделать конвертер MODX в Fenom. Я начал, но вряд ли смогу доделать 40 +5 2
Руслан Алеев · 20 ноября 2017, 16:13 Здравствуйте! 1) в MODX есть несколько методов фильтрации символов в URL — я ставлю alphanumeric (только буквы и цифры), см. в «Системные настройки -> Дружественные URL -> Метод фильтрации символов в псевдонимах» и править friendly_alias_restrict_chars_pattern не нужно. 2) Чтобы поправить транслитерацию символов заходите в /public_html/core/components/translit/model/modx/translit/tables/russian.php и правите на нужное сочетание, но при обновлении, как выше обсуждалось, может слететь, хотя translit не обновлялся, по-моему, никогда :) Вопросы / Заперт символов при автосоздании алиаса. Как сделать? 10 +1 2
UiCMPGenerator дополнение для создания пакетов Ближе к сентябрю, основная загвоздка это создание нормальной документации и видео обзора, а так пакет как бы уже готов
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
Готовый рабочий вариант:
Через обычный парсер, нужно создавать чанк и уже в нем прописывать условия
Snippet:
Chunk option_tpl:
Проверил у себя на тестовом сервере все работает!
Настройки MIGX:
Вкладки формы
Разметка колонок:
Вызов сниппета:
&input — Исходный ролик
&default — другое зеркало ролика
Код сниппета:
NodeJS
Работает :)
Пример:
Там же можно подсмотреть, как MODX определяет тип элемента — в методе processTag
1) в MODX есть несколько методов фильтрации символов в URL — я ставлю alphanumeric (только буквы и цифры), см. в «Системные настройки -> Дружественные URL -> Метод фильтрации символов в псевдонимах» и править friendly_alias_restrict_chars_pattern не нужно.
2) Чтобы поправить транслитерацию символов заходите в /public_html/core/components/translit/model/modx/translit/tables/russian.php и правите на нужное сочетание, но при обновлении, как выше обсуждалось, может слететь, хотя translit не обновлялся, по-моему, никогда :)