- Заметки 47
 - Комментарии 25
 
4 часа назад
            
                Я сделал вот такой скрипт, который можно повесить на cron или запускать вручную при необходимости. Суть в том, что он проходит по всему сайту, генерир...            
        
        
            
            Подскажите, как с помощью StercSeoSiteMap создать карту со ссылками на друге карты ?                            1
                    
    01 ноября 2025, 10:54
            
                Каждое предработное утро я начинаю с чтение новостей. И первым всегда идёт MODX.pro.
От такого дайджеста на меня костюм-тройка чуть сам не налез, б...            
        
        
            
            Дайджест форума за октябрь 2025 глазами DeepSeek                            4
                    
    01 ноября 2025, 10:49
            
                Собственно переговоры прошли успешно, в понедельник передаст мне компонент, к концу месяца будет работать.            
        
        
            
            [CDEKIntegrate] Отправка заказов напрямую в CDEK                            18
                    
    30 октября 2025, 19:01
            
                Два дня проковырялся, пытаясь сделать по этому конфигу.
Один сайт сразу завелся, остальные вместо перехода на страницу редиректят на главную — чудо н...            
        
        
            
            Настройка конфигурации NGINX + PHP-FPM 7.4 на Ubuntu 22.04 + Fastpanel для MODX 2.8.7                            13
                    
    30 октября 2025, 17:34
            
                да да, могу пообедать?            
        
        
            
            Modx 2.8.8 + minishop 2 какая версия php поддерживается?                            13
                    
    28 октября 2025, 22:14
            
                Сам себе отвечу: так как FormIt умеет только прикреплять файл к письму, для чего он файл грузит во временную директорию, надо отдельным хуком переноси...            
        
        
            
            GoogleSheets. Компонент для работы с Google таблицами.                            27
                    
    26 октября 2025, 19:22
            
                всё, спасибо. 
надо было понизить версию PHP -_//            
        
        
            
            [СДЕЛАЙ САМ] SendIt и MiniShop2 - заказ в 1 клик - быстро, просто и бесплатно.                            66
                    
    23 октября 2025, 21:08
            
                Сам отвечу, может кому-то пригодится. 
В классе компонента и его плагине есть проверки статуса заказа. Если статус отличный от «новый», то там сраз...            
        
        
            
            Вопрос по mspYaPay                            1
                    
    
Проблема замечалась еще в 2012 году, но за все время поисков я не смог найти адекватного ее решения. В основном все советуют отключать сжатие css js, чистить кэш и прочее, но это не помогает.
Чего я только не делал за эту неделю, но методом проб, ошибок и кучи потраченных нервов мне удалось прийти к самому простому и эффективному решению данной проблемы, которое не затронет структуру вашего сайта и БД.
В шапке оставил теги, по которым люди чаще всего ищут решение данной проблемы.
Теперь к сути:
Конкретного решения (то есть из за чего возникает данная проблема и как решить ее точечно) я не нашел, хотя очень хотелось бы. Но нашлось решение другое, возможно даже лучшее. Нам не потребуются новые домены и базы данных.
По пунктам:
1. Выходим из админки MODX.
2. Удаляем оба файла .htaccess (в корне сайта и в /core).
3. Вручную чистим кэш (удаляем всё из папки /core/cache).
4. Выгружаем нашу базу данных любым удобным способом (я делал через phpMyAdmin).
5. Удаляем все таблицы из БД(чтобы база данных была пустая).
6. Скачиваем с офсайта MODX файлы для установки.
7. Заливаем их на сервер поверх наших файлов с заменой (перезаписать все совпадения) и не забываем про папку setup.
8. Далее идем по адресу 'ваш-сайт.ру/setup' и устанавливаем MODX (не обновляем, а именно устанавливаем, первый пункт в списке предложенных). Я так же отключал сжатие css js. Тут как обычно, выбираем нашу ранее очищенную БД и устанавливаем. В конце установки уберите галочку «удалить установочные файлы», так как папка setup нам еще понадобится.
9. Далее идем в базу данных, удаляем вновь созданные таблицы и импортируем нашу старую базу, которую мы выгрузили в пункте 4. Чистим кэш (/core/cache).
10. Снова идем по адресу 'ваш-сайт.ру/setup', тут нам могут сказать, что надо удалить папку .locked в папке setup чтобы продолжить, делаем это и перезагружаем страницу установки. Теперь все нормально и нам остается лишь выбрать второй пункт «обновить», убрать чекбокс «сжатие css js» и обновить MODX.
11. Снова чистим кэш и пробуем заползти в админку. У меня после такого обновления (О, ЧУДО) админка ожила и все работает как раньше, ничего не слетело и не уехало, все на месте. Не забываем переименовать файлы ht.access
За время поисков решения я смог предположить несколько вариантов появления данной проблемы, но это лишь предположения:
— Вредоносный php скрипт (проблемы с безопасностью)
— Неверное системное время (возможно заходили в админку с компьютера с неправильно настроенным временем) — Мутные делишки хоста. За время поисков обнаружилось аж 4-ро людей с такой проблемой, которые хостились на MasterHost, как и я. «Совпадение? Не думаю...». Хотя с данным хостингом работаю на MODX давно и таких проблем на прошлом проекте с версией 2.5.2 не возникало. Может быть и правда совпадение, но я все же новый проект перенес на более популярный хост))
Еще на счет хостинга — еще до начала недельной эпопеи, греша на хост, я переправил сайт на новое место, но проблема осталась, так что нельзя быть на 100% уверенным в «мутных делишках» хоста, хотя возможно какие-то сбои повредили js-скрипты. Тут лучше судить знающим людям.
Надеюсь, что моя инструкция поможет с решением данный проблемы тем, у кого она возникла. Спасибо за внимание)
Ну так можно украсть?
Хоть бы слово сказал, где был этот сниффер. Т.е. загружался откуда то или файл был залит на сервер? Это разные вектора атаки.
Вообще, тема безопасности будет подниматься всё чаще. Информатизация общества. Интел опять заявил о дырке в процессоре. На хабре попадалась статья про расширения браузера, сливающие данные. А ещё недобросовестные разработчики — недавно Николай Ланец выкладывал ссылку про очень известное дополнение для Node.js, которое воровало биткоины. Плюс огромная армия младоразработчиков, которые умудряются оставлять дырки даже в статических файлах или устраиваются работать в крутые студии. И в результате видим такое. Да даже Facebook хранил пароли в открытом виде.
Самая главная уязвимость — человек. )
П.С. Оставлю тут, может кому пригодится.
Если ты что то новое добавляешь в карту объекта и базу данных (уточню на всякий случай что еще и таблицу базы данных нужно расширять ручками) — то так же ручками нужно добавлять новый дополнительный код в js массив полей.
Обычно делают отдельный плагин, чтобы не вносить правки в исходный код MODX.
Вот пример, прямо из рабочего проекта дернул
switch ($modx->event->name){ case 'OnDocFormPrerender': $modx->controller->addHtml(" <script type='text/javascript'> Ext.ComponentMgr.onAvailable('modx-panel-resource', function(){ if(this.items[1].items[0].id == 'minishop2-product-tab'){ var leftCol = this.items[1].items[0].items[0].items[0].items[0].items[0].items[0].items[0]; }else{ if(this.items[1].items[0].id== 'modx-resource-settings'){ var leftCol = this.items[1].items[0].items[0].items[0]; } if(this.items[1].items[1].id == 'modx-resource-settings'){ var leftCol = this.items[1].items[1].items[0].items[0]; } } var kz_title = { anchor: '100%', description: '<b>[[*kz_title]]</br>Заголовок на казахском</b>', fieldLabel: 'Заголовок на казахском', id: 'modx-resource-kz-title', maxLength:255, msgTarget: 'under', name:'kz_title', xtype:'textfield' } leftCol.items.splice(2, 0, kz_title); var kz_description = { anchor: '100%', description: '<b>[[*kz_description]]</br>Описание на казахском</b>', fieldLabel: 'Описание на казахском', id: 'modx-resource-kz-description', maxLength:255, msgTarget: 'under', name:'kz_description', xtype:'textarea' } leftCol.items.splice(4, 0, kz_description); }); </script>"); break; }На выходе получилось вот так prntscr.com/mnm25mОткрыл сниппет mFilter2 и увидел там вот это:
Это значит что для отсутствующих фильтров можно указать чанк, а не просто отключить вывод пустых результатов параметром
В документации упоминания о «tplFilter.empty.» не нашел.
Я создал чанк с неактивным чекбоксом, в итоге для одного чекбокса получился вот такой вызов:
И в итоге получил вот такой результат:
И вставил сюда
В будущем планируется поддержка двух версий платной и бесплатное.
От вирусов оно конечно не избавит, но поможет разобраться с вашей файловой системой.
Смысл в том что во время сканирования происходит заказчка вашей версия MODX из репозитория https://ilyaut.ru/download-modx/ (только чистая)
Затем все распаковывается в папке core/cache/default/scannermodx/repository/modx-2.6.5-pl
Запускается паук который ищет все файлы с расширение: php,js,html,tpl,css,scss,sass,less (можно свои добавить)
И во время поиска сравниваются файлы ядра с версией ядра из репозитория.
Если в файлах ядра были какие то изменения то вы это все увидите.
В общем пробуем: https://yadi.sk/d/mLKu-jXq3a7jJU
Так же составляется список карантинных файлов и список доверенных файлов и директорий.
Чтобы не сканировать все подряд.
Так же еще можно открыть файл и посмотреть что в нем.
Вот так это все выглядит:
Если будут какие то идеи по улучшению то пишите.
Особенно нужны алгоритмы для отлова вирусных файлов. Чтобы можно было вычислять зараженные файлы.
Директории и файлы:
- 'core/components',
  - 'core/docs',
  - 'core/cache',
  - 'core/packages',
  - 'setup',
  - 'core/config/config.inc.php',
 
По умолчанию исключены из сканирования. Но можно включить их в настройках: scannermodx_enabled_dirпереносишь список файлов к удалению в отдельный текстовый файл, в нем каждая строка — удаляемый файл и путь к нему
И да, вместо PuTTY под винду лучше www.bitvise.com/
Парсер MODX запускается перед феномом только для обработки кэшируемых тегов. Вообще парсинг выглядит так:
1. Запускается парсер MODX и обрабатывает кэшируемые теги. Феном теги остаются необработанные.
2. Запускается парсер фенома, если есть теги Fenom.
3. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные не удаляются.
Пункты 2 и 3 могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
4. Запускается парсер фенома, если есть теги Fenom.
5. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные теги удаляются.
Пункты 4 и 5 пункт могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
Многие, наверно, обращали внимание на тормоза, если указан несуществующий плейсхолдер.
Выглядит эта конструкция, мягко говоря, как вид жопы сбоку. У этих парсеров разный принцип работы. По хорошему, разработчикам MODX нужно или вообще отказываться от парсера и просто дать возможность пользователям самим выбирать (я сделал маленький шажок в эту сторону) или дорабатывать его до более-менее функционального уровня (я это тоже пробовал).
Я бы посоветовал использовать оба парсера так:
— юзать только кэшируемые теги MODX ([[*tag]], [[$chunk]], [[++system]], [[snippet]]). Хорошо для оптимизации.
— для остального использовать феном.
В этих режимах парсеры не пересекаются.
Просто в файле подключаете modx api, разбираете xml и из готового массива с данными товаров обновляете цены с помощью процессора modx.
если очень схематично, то так
Если нужно обновлять только одно поле, то можно не через процессор а так