05 января 2022, 11:07 Для новых документов такое решение может и пойдет, но для ресурсов которые уже созданы, это дублирование. Ведь можно добавить флажок в системных настройках «использовать язык по умолчанию для стандартных полей ресурса». Либо расширить плагин или сниппет, который может на прямую запросы строить без обязательной привязке к класу «localizatorContent» (к примеру если вызывать pdoPage c ajax button, то пагинация не работает, говорит что не знает про класс localizatorContent при нажатии на кнопку «Подгрузить еще», а это из-за расширения стандартного pdoFetch — если вызывать сниппет pdoPage без leftjoin, select, where). Просто хочеться чуть больше гибкости, чтобы сайт который уже работает с 1000 новостями не перебивать через скрипты тупо дублируя их еще в одной таблице для стандартного языка (ru) и для английского языка (en). Ведь никто не будет переводить старые новости, а просто оставит старые как есть, причем на двух языках, но не выводить их не правильно, и дублировать не правильно. Новые дополнения и их версии / [localizator] Мультиязычность, СЕО, автоперевод... 353 0
25 февраля 2021, 13:33 У меня есть мой сниппет HistoryMod (один из елементов самописного дополнения), который отлично работает с Fenom. Решил добавить фильтр через выпадающий список по годам. Обрабатываю акцию вот так: if(!empty($_POST['selYear'])){ $params = array(); $params['type'] = $_POST['type']; $params['year'] = $_POST['selYear']; $params['tpl'] = 'tpl.full'; $res = $modx->runSnippet('HistoryMod', $params); }результат приходит правильно, но в шаблоне не обрабатываются феном теги, а модикса обрабатываются ({dt_item} — не работает, [[+dt_item]] — работает). В настройках pdoTools все включено. Шаблон с моими феном тегами tpl.full: <div class="month">{$dt_item | date : 'F'}</div>Напомню: изначально феном теги обрабатываются. Страница загрузилась, все хорошо. Выбираю из выпадающего списка год, запрос уходит куда нужно, скрипт обрабатывается, но феном теги перестают работать. Выходит что вызывать свой сниппет в сниппете нельзя? Или что еще нужно сделать чтобы $modx->runSnippet('HistoryMod', $params); начал работать с тегами Fenom? Для разработчиков / Основы Ajax 86 0
18 августа 2019, 21:02 При отмене оплаты не редиректит на страницу указанную в системных натсройках. Всегда перенаправляет в корзину. Что делать? Дружественные урлы включены. Новые дополнения и их версии / [mspLiqPay] — платежи через LiqPay в miniShop2 42 0
11 августа 2019, 12:36 А если используют прокси для спама?) Вопросы / Защита AjaxForm от спама конкурентов 5 0
11 августа 2019, 12:32 Та же история. Вопросы / Опций к категориям в настройках miniShop2. Ошибка? 1 0
05 августа 2019, 21:53 <form name="myform" novalidate>Вы пытаетесь сфокусироваться на поле которое скрыли. Увы вангующих нет. Вопросы / Отправка формы AjaxForm 1 0
01 апреля 2019, 11:28 А кто-то ковырял migxLoopCollection + Fenom при использовании MIGXdb и multiple formtabs? Есть три конфигурации для мультиформ, одна основная, которая указывается в тв для ресурса и две как переключатели. Столкнулся с такой проблемой что путем: {set $rows = json_decode($_modx->resource.mytvname, true)} выводятся только поля основной migx конфигурации. А вот когда использую сниппет: [[migxLoopCollection? &classname=`myclass` &packageName=`mypackage` &limit=`0` &debug=`0` ]]Выводит все поля всех связанных конфигураций. Вывести бы все поля через Fenom, было бы идеально. Вопросы / MIGX getImageList и Fenom 67 0
01 марта 2019, 09:40 Настройки в источнике файлов проведите, там basePath — /assets/uploads/ и basePathRelative — Да, baseUrl — /assets/uploads/ и baseUrlRelative — Да. Я сейчас использую CKEditor Вопросы / Мультиязычность TimyMCE RTE modx revo 2.6.1 5 0
17 декабря 2018, 13:25 siteStatistics 2.2.1-pl С чем может быть связана ошибка в логах? Ошибка: [full_path]/core/xpdo/om/xpdoobject.class.php : 1452) Error 23000 executing statement: INSERT INTO `modx_stat_page_statistics` (`rid`, `user_key`, `date`, `month`, `year`, `views`) VALUES (3, '68c21c6a42ceb97531b59a6a7c572c72', '2018-12-17', '2018-12', '2018', 1) Array ( [0] => 23000 [1] => 1062 [2] => Duplicate entry '3-68c21c6a42ceb97531b59a6a7c572c72-2018-12-17' for key 'PRIMARY' )Визов сниппета: [[!siteStatistics? &mode=`site` &countby=`day`]]Чанк tpl.siteStatistics <div class="site-statistics" title="Статистика за день"> <div class="stat-left-side"><i class="icon-pie-chart"></i></div> <div class="stat-right-side"> [[!siteOnlineUsers? &tpl=`tpl.mySOU`]]<i class="stat-icon icon-users" title="онлайн (за 5 м)"></i> [[+users]]<i class="stat-icon icon-users" title="пользователи"></i> [[+views]]<i class="stat-icon icon-eye" title="просмотры"></i> </div> </div>Чанк tpl.mySOU(pdoFenom): {set $users = $_pls['stat.online_users']} {set $guest = $_pls['stat.online_guests']} {set $result = $users + $guest} {$result} Новые дополнения и их версии / [siteStatistics] Версия 2.0.0. Пользователи 13 0
01 ноября 2018, 15:59 Небольшой фикс для мультиязычных сайтов. Проблема в том что на других контекстах сниппет возвращал некорректный текст для «5 часа назад». Заходим в core/components/dateago/include/declension.php ищем строчку 19: if ($lang == 'ru') {Изначально не разобрался и написал Василию не правильное решение, но сегодня решил по другому — заменяем строчку на: $ctxKey = $modx->context->key; $ctx = $modx->getContext($ctxKey); $curLang = $ctx->getOption('cultureKey', null, 'default'); if($lang == $curLang){На самом деле проще убрать этот блок проверки вовсе, либо проверять как if($lang != 'test'), либо просто добавить в условие: if ($lang == 'ru' || $lang == 'de' || $lang == 'en') { ... }Думаю стоит добавить в вызове как сниппета так и модификатора возможность указания тех языков, которые хочешь обрабатывать в данном условии. Вопросы / DateAgo: как перенести часы и минуты создания материала на следующую строку? 5 0
27 марта 2018, 09:43 Я установил дополнение modHelpers, теперь все формы защищаю от CSRF. Так вот в этом дополнении есть замечательный механизм генерации самого CSRF токена и его проверки. Дополнительная защита от более продвинутых «хацкеров». Если интересно, можете почитать тут. Новые дополнения и их версии / easyComm - комментарии, отзывы, вопросы на сайте 536 0
27 марта 2018, 08:42 Алексей. Подскажите, правильно ли я понимаю, если мне нужно добавить проверку CSRF токена, после нажатия на кнопку «Отправить» то необходимо внести изменения в "assets/components/easycomm/action.php"? Если да, то как я понял добавлять проверку нужно перед $easyComm->createMessage($_POST); как-то так: switch ($action) { case 'message/create': if(checkCsrfToken()){ $response = $easyComm->createMessage($_POST); } break; default: $response = $modx->toJSON(array('success' => false, 'message' => $modx->lexicon('ec_unknown_action'))); }Или есть более изящный способ? Может быть плагин на одно из событий easyComm? Новые дополнения и их версии / easyComm - комментарии, отзывы, вопросы на сайте 536 0
26 марта 2018, 15:30 Нельзя ставить в форме такие конструкции: pattern="^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+\\.[a-z]{2,4}$"Парсер pdoTools ругается на все что в фигурных скобках) Новые дополнения и их версии / easyComm - комментарии, отзывы, вопросы на сайте 536 0 1
20 февраля 2018, 11:17 Плагин на событие OnFileManagerUpload <?php // проверяем нужное событие if ($modx->event->name != 'OnFileManagerUpload') {return;} // подключаем phpthumb require_once MODX_CORE_PATH.'model/phpthumb/phpthumb.class.php'; // параметры загружаемого файла $file = $modx->event->params['files']['file']; $directory = $modx->event->params['directory']; // получаем media source $ms = $modx->event->params['source']; if($ms == null){ return; } // настройки media source $msProperties = $ms->get('properties'); $directory = $msProperties['basePath']['value'].$directory; // на всякий случай проверяем наличие // и заменяем на / $directory = str_replace('//', '/', $directory); // настройки плагина $config = array( $directory => array( 'src' => array('w' => 1280,'h' => 1024,'zc' => 0,'q' => 80, 'fltr' => 'wmi|/watermark/logo.png|BR|50|5'), ), ); // смотрим, что при загрузке не возникло ошибок if ($file['error'] != 0) { //fwrite($handle,"Ошибка при загрузке файлов \n"); return; } $name = $file['name']; $extensions = explode(',', $modx->getOption('upload_images')); // проверям, что наша категория задана в настройках плагина if (array_key_exists($directory, $config)) { $config = $config[$directory]; } else { return; } // путь к файлу, имя файла, расширение $filename = MODX_BASE_PATH.$directory.$name; $def_fn = pathinfo($name, PATHINFO_FILENAME); $ext = pathinfo($name, PATHINFO_EXTENSION); // проверяем, что расширение файла задано в настройках MODX, как изображение if (in_array($ext, $extensions)) { $sizes = getimagesize($filename); $format = substr($sizes['mime'],6); // бежим по всем полям массива с конфигом foreach($config as $imgKey =>$imgConfig){ $options = ''; if($imgKey == 'src'){ // для ключа src имя файла совпадает с исходным $imgName = $filename; } else { // формируем имя файла $imgName = MODX_BASE_PATH.$directory.$def_fn.$imgKey.'.'.$ext; } // создаем объект phpThumb.. $phpThumb = new phpThumb(); // ..и задаем параметры $phpThumb->setSourceFilename($filename); foreach ($imgConfig as $k => $v) { $phpThumb->setParameter($k, $v); } // генерируем файл if ($phpThumb->GenerateThumbnail()) { if ($phpThumb->RenderToFile($imgName)) { //$source->renameObject($imgName, $newName); // устанавливаем права на файл, это опционально, зависит от сервера //chmod($imgName, 0666); } } } } else { return; }Этот плагин выкладывал Безумкин Василий, вот только не помню где. Не забудьте поменять настройки плагина под ваши потребности. Там не только ватермарк накладывается но и ресайз изображения делается. Вы можете оставить только наложения ватермарка. Вопросы / Как наложить водяные знаки (ватемарки) на загружаемые изображения в modx revo? 5 0 1
20 февраля 2018, 10:58 <base href="/" />И старайтесь для такой мультиязычности использовать ссылки типа: &scheme=`full` {1 | url : ['scheme' => 'full'] } {$_modx->makeUrl(1,'','','full')} Вопросы / Мультиязычность TimyMCE RTE modx revo 2.6.1 5 0
30 мая 2017, 09:54 Две строчки кода) Я просто допилил немного компонент, вывожу еще дату ответа, и дату редактирования ответа, если редактирование было. Добавил проверку поля почты, раньше можно было вводить что душе угодно. :) Новые дополнения и их версии / easyComm - комментарии, отзывы, вопросы на сайте 536 0
29 мая 2017, 15:37 Доброго времени. Возник вопрос: при мультиязычном сайте на трех контекстах для перевода использую словари (управление словарями — easycomm), при этом элементы формы все переводятся но сообщения об ошибке нет, почему?) На примере! При пустом поле на: — русской версии: «Ваше имя» выводит сообщение «Вы не указали Ваше имя»; — английской версии: «Your name» выводит сообщение «Вы не указали Ваше имя»( а должно «You did not enter your name»); При этом в управлении словарями все переведено. Новые дополнения и их версии / easyComm - комментарии, отзывы, вопросы на сайте 536 0
13 декабря 2016, 16:42 А никто не задумывался, как построить такой компонент для мультиязычных сайтов? Представте что у пользователя сайт на трех языках, получается что введенная инфа в таблице на русском будет выводиться и на всех трех языках на русском. Печалька :) Для разработчиков / modExtra для MODX 2.3 21 0
21 ноября 2016, 09:22 Выход пока один: Ставим в вызове pdoPage &processTVs=`0` и в чанке где ссылка на изображение ручками пишем: <img src="assets/img/[[+image]]" alt=""> Вопросы / [pdoPage] MIGX getImageList изменяет image url 5 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Решил добавить фильтр через выпадающий список по годам.
Обрабатываю акцию вот так:
результат приходит правильно, но в шаблоне не обрабатываются феном теги, а модикса обрабатываются ({dt_item} — не работает, [[+dt_item]] — работает).
В настройках pdoTools все включено.
Шаблон с моими феном тегами tpl.full:
Напомню: изначально феном теги обрабатываются. Страница загрузилась, все хорошо. Выбираю из выпадающего списка год, запрос уходит куда нужно, скрипт обрабатывается, но феном теги перестают работать.
Выходит что вызывать свой сниппет в сниппете нельзя?
Или что еще нужно сделать чтобы
$modx->runSnippet('HistoryMod', $params);
начал работать с тегами Fenom?
Есть три конфигурации для мультиформ, одна основная, которая указывается в тв для ресурса и две как переключатели.
Столкнулся с такой проблемой что путем:
выводятся только поля основной migx конфигурации.
А вот когда использую сниппет:
Выводит все поля всех связанных конфигураций. Вывести бы все поля через Fenom, было бы идеально.
/assets/uploads/ и basePathRelative — Да, baseUrl — /assets/uploads/ и
baseUrlRelative — Да.
Я сейчас использую CKEditor
С чем может быть связана ошибка в логах?
Ошибка:
Визов сниппета:
Чанк tpl.siteStatistics
Чанк tpl.mySOU(pdoFenom):
ищем строчку 19:
Изначально не разобрался и написал Василию не правильное решение, но сегодня решил по другому — заменяем строчку на:
На самом деле проще убрать этот блок проверки вовсе, либо проверять как if($lang != 'test'), либо просто добавить в условие:
Думаю стоит добавить в вызове как сниппета так и модификатора возможность указания тех языков, которые хочешь обрабатывать в данном условии.
Если интересно, можете почитать тут.
Если да, то как я понял добавлять проверку нужно перед $easyComm->createMessage($_POST); как-то так:
Или есть более изящный способ? Может быть плагин на одно из событий easyComm?
Парсер pdoTools ругается на все что в фигурных скобках)
Этот плагин выкладывал Безумкин Василий, вот только не помню где.
Не забудьте поменять настройки плагина под ваши потребности. Там не только ватермарк накладывается но и ресайз изображения делается. Вы можете оставить только наложения ватермарка.
На примере!
При пустом поле на:
— русской версии: «Ваше имя» выводит сообщение «Вы не указали Ваше имя»;
— английской версии: «Your name» выводит сообщение «Вы не указали Ваше имя»( а должно «You did not enter your name»);
При этом в управлении словарями все переведено.
Ставим в вызове pdoPage
и в чанке где ссылка на изображение ручками пишем: