Для разработчиков
Конструктор фильтров и выборок - msProductsComposerSelection
Я обещал написать @Prihod обзорную статью анонсировав новые возможности компонента, так как @Prihod пилил последние версии пакета по моей инициативе. Момент настал. И не прошло трех лет после моего обещания.
Сразу начну с минуса, для меня он единственный, и очень мучительный. Название — msProductsComposerSelection — это как запомнить, написать или обсудить с коллегами. Шутка удалась. Ну я предлагаю тебе не останавливаться на достигнутом и придумать название из шести горбов). Будет весело.
Сразу начну с минуса, для меня он единственный, и очень мучительный. Название — msProductsComposerSelection — это как запомнить, написать или обсудить с коллегами. Шутка удалась. Ну я предлагаю тебе не останавливаться на достигнутом и придумать название из шести горбов). Будет весело.
PageBlocks - первое использование. Кейсы. Свой сниппет вывода.
Очень хочу поделиться своими впечатлениями от использования пакета PageBlocks от разработчика @Aleksandr Huz. Буду краток, пакет классный (Я люблю изъясняться кратко и по делу).
Почему AjaxForm использует сессии?
Всем привет, давно не виделись!
Переодически почитываю новости на сайте и вот увидел ветку комментариев про хранение данных в сессии.
Казалось бы, совершенно заслуженный камень в мой огород, как автора дополнения. Зачем использовать сессии для ajax сниппетов, ведь сама по себе эта технология сессий не требует? Так-то оно так, но в мире MODX всё несколько сложнее.
Переодически почитываю новости на сайте и вот увидел ветку комментариев про хранение данных в сессии.
Казалось бы, совершенно заслуженный камень в мой огород, как автора дополнения. Зачем использовать сессии для ajax сниппетов, ведь сама по себе эта технология сессий не требует? Так-то оно так, но в мире MODX всё несколько сложнее.
Поиск источника ошибки Instantiated a derived class
Всем привет!
На одном из сайтов стала появляться ошибка следующего содержания:
которая забивала Журнал ошибок за 2-а дня на 60 мб.
Поиск источника по БД, через сниппеты, через Batcher и другие способы не принесли результата.
На одном из сайтов стала появляться ошибка следующего содержания:
Instantiated a derived class CollectionContainer that is not a subclass of the requested class ArticlesContainer
которая забивала Журнал ошибок за 2-а дня на 60 мб.
Поиск источника по БД, через сниппеты, через Batcher и другие способы не принесли результата.
Как я написал YandexMarket2 на Vue.js
Привет, сообщество!
Вчера опубликовал большое обновление компонента YandexMarket2 и, наконец, могу рассказать о технических подробностях, которые анонсировал ещё здесь.
Серии уроков не будет — уж слишком долго пишу тексты.
Так вышло, что я уже больше двух лет активно не разрабатывал сайты на MODX, позабыл Ext JS, быстро привык к Vue.js на фронте, к PHP 7+ с автозагрузкой классов и захотел привнести это в нашу систему. Изначально планировал сделать компонент со слабой связанностью с MODX, чтобы можно было легко портировать на MODX3, а то и на другие системы. Скажу сразу: внедрить всё не удалось, а то бы до сих дорабатывал первую версию.
Заметкой хочу показать процесс и удобство разработки компонента, а может и подтолкнуть кого-то ещё написать компонент с интерфейсом на Vue.js, а то и полноценную админку для MODX4 (шутка. или нет :)
Вчера опубликовал большое обновление компонента YandexMarket2 и, наконец, могу рассказать о технических подробностях, которые анонсировал ещё здесь.
Серии уроков не будет — уж слишком долго пишу тексты.
Так вышло, что я уже больше двух лет активно не разрабатывал сайты на MODX, позабыл Ext JS, быстро привык к Vue.js на фронте, к PHP 7+ с автозагрузкой классов и захотел привнести это в нашу систему. Изначально планировал сделать компонент со слабой связанностью с MODX, чтобы можно было легко портировать на MODX3, а то и на другие системы. Скажу сразу: внедрить всё не удалось, а то бы до сих дорабатывал первую версию.
Заметкой хочу показать процесс и удобство разработки компонента, а может и подтолкнуть кого-то ещё написать компонент с интерфейсом на Vue.js, а то и полноценную админку для MODX4 (шутка. или нет :)
[ИНТЕРЕСНО] Server-Sent Events - Уведомления с сервера в браузер в реальном времени
Всем привет! Искал простой способ отправлять уведомления о смене статуса заказа в браузер пользователя. Из вариантов были websocket и сторонние сервисы push-уведомлений. С websocket я разобраться не смог, пробовал запустить workerman на shared-хостинге, но не вышло. Сторонние сервисы вроде sendpulse или comet-сервера не устраивают, потому что они сторонние, их оставлю на крайний случай.
И совершенно случайно я наткнулся на Server-Sent Events. Всё с ними хорошо, кроме одного, опытным путём я понял, что он должен быть запущен всегда, т.е. нельзя запустить его из другого скрипта и передать параметры. Или можно, если кто-то знает как, напишите в комментариях.
Так или иначе я его для своих задач приспособил. Вопрос такой: насколько это будет нагружать сервер и, если никто не знает, то подскажите как можно провести тест под нагрузкой? Предполагается от 1 до 5 тысяч клиентов одновременно.
И совершенно случайно я наткнулся на Server-Sent Events. Всё с ними хорошо, кроме одного, опытным путём я понял, что он должен быть запущен всегда, т.е. нельзя запустить его из другого скрипта и передать параметры. Или можно, если кто-то знает как, напишите в комментариях.
Так или иначе я его для своих задач приспособил. Вопрос такой: насколько это будет нагружать сервер и, если никто не знает, то подскажите как можно провести тест под нагрузкой? Предполагается от 1 до 5 тысяч клиентов одновременно.
Альфа релиз альтернативной админки для MODX
Всем привет!
В продолжение недавней дискуссии публикую то, что удалось сделать за два дня (точнее за 23 часа).
В продолжение недавней дискуссии публикую то, что удалось сделать за два дня (точнее за 23 часа).
Помогите протестировать PR для ускорения выпуска Revolution 3.0
MODX 3 приближается к замораживанию функции перед бета-циклом и последующим релизом. Так как нам нужна максимально возможная помощь в тестировании и проверке ключевых проблем и Pull Requests («PRs»), мы создали это учебное пособие по подходу для тех, кто не привык жить в командной строке и работать с git'ом каждый день.
В настоящее время существует более двух десятков PR, которые должны быть объединены перед окончательным альфа-релизом.
Во время альфа версии, вещи, которые нарушают обратную совместимость, являются кандидатами для включения в релиз MODX 3.0. Однако, во время предстоящей бета-версии, больше никаких изменений, нарушающих совместимость, приниматься не будут. Бета-версия предназначена для шлифовки вещей и работы над тем, чтобы как можно больше дополнений работали без рефакторинга. Многие уже работают.
В настоящее время существует более двух десятков PR, которые должны быть объединены перед окончательным альфа-релизом.
Во время альфа версии, вещи, которые нарушают обратную совместимость, являются кандидатами для включения в релиз MODX 3.0. Однако, во время предстоящей бета-версии, больше никаких изменений, нарушающих совместимость, приниматься не будут. Бета-версия предназначена для шлифовки вещей и работы над тем, чтобы как можно больше дополнений работали без рефакторинга. Многие уже работают.
[СДЕЛАЙ САМ] Поиск на сайте по-быстрому
ВАЖНО!!!
Я знаю, что есть два отличных компонента для организации поиска по сайту это SimpleSearch, который по-моему не работает с чанками на fenom, и mSearch2, который платный и большой. В связи с этим я решил написать свой вариант поиска — максимально простой и понятный, да неуниверсальный, но позволяющий по нескольким ключевым словам найти нужный ресурс. По сути это форма. которая через ajax отправляется на сервер, где формируется sql-запрос в БД и результат возвращается на фронт. Итак перейдём к коду.
Данное решение не является учебным и рекомендуется к использованию только на собственных проектах, с целью освоения работы с api modx. Для изучения лучших практик, анализируйте код дополнений с сайта https://modstore.pro/
Я знаю, что есть два отличных компонента для организации поиска по сайту это SimpleSearch, который по-моему не работает с чанками на fenom, и mSearch2, который платный и большой. В связи с этим я решил написать свой вариант поиска — максимально простой и понятный, да неуниверсальный, но позволяющий по нескольким ключевым словам найти нужный ресурс. По сути это форма. которая через ajax отправляется на сервер, где формируется sql-запрос в БД и результат возвращается на фронт. Итак перейдём к коду.
msPromoCode, date.strftime is not a function
После обновлений пакетов перестал отображаться список промокодов в компоненте msPromoCode.
Ошибка в консоли:
Судя по всему это отголоски следующей проблемы:
modx.pro/help/11562
github.com/bezumkin/Tickets/pull/169
github.com/Ibochkarev/miniShop2/issues/474
github.com/Ibochkarev/miniShop2/commit/f3b36a308d76b979982cc9fdc47fb420fb035bb4
Возможное решение — обновить файл core/components/mspromocode/controllers/home.class.php следующей строкой в конце тела функции loadCustomCssJs():
Ошибка в консоли:
ms2.utils.js:9 Uncaught TypeError: date.strftime is not a function
at constructor.miniShop2.utils.formatDate [as renderer] (ms2.utils.js:9)
.....
Установлены modx 2.8.1, minishop2 2.7.0, msPromoCode 1.4.4-plСудя по всему это отголоски следующей проблемы:
modx.pro/help/11562
github.com/bezumkin/Tickets/pull/169
github.com/Ibochkarev/miniShop2/issues/474
github.com/Ibochkarev/miniShop2/commit/f3b36a308d76b979982cc9fdc47fb420fb035bb4
Возможное решение — обновить файл core/components/mspromocode/controllers/home.class.php следующей строкой в конце тела функции loadCustomCssJs():
$this->addLastJavascript($this->miniShop2->config['jsUrl'] . 'mgr/misc/strftime-min-1.3.js');
@Павел Гвоздь вам на заметку.