Новые дополнения и их версии
[jwtSession] Перенос сессии в куки браузера
Привет, друзья!
Вы задумывались, как работают сессии в MODX? Каждый раз, когда кто-то заходит на сайт, PHP генерирует ему уникальный id и сохраняет его в куку PHPSESSID. При этом в базе данных создаётся запись modSession с этим id и содержимым текущей сессии.
При каждом запросе на сайт передаётся кука с id, MODX делает запрос в БД, загружает сессию, а потом сохраняет в неё изменения. Минимум 2 запроса в БД каждый раз.
Что же нам предлагает JWT? Отказаться от всех этих действий на сервере, и выдавать всё нужное сразу в одном токене. Он может храниться в кукисах или в локальном хранилище браузера. Ну а дальше, при запросе, из него будет создана сессия пользователя. Соответственно, мы выкидываем работу с БД и не храним пользовательские сессии на сервере вовсе.
Конечно, сразу же встаёт вопрос — а что будет, если пользователь такую сессию подделает? Стандарт JWT ему этого не позволит. Токены можно прочитать, но не изменить, потому что они все подписаны надёжным алгоритмом с ключом на сервере, который пользователь не знает. Это теория, а теперь переходим к практике в MODX.
Вы задумывались, как работают сессии в MODX? Каждый раз, когда кто-то заходит на сайт, PHP генерирует ему уникальный id и сохраняет его в куку PHPSESSID. При этом в базе данных создаётся запись modSession с этим id и содержимым текущей сессии.
При каждом запросе на сайт передаётся кука с id, MODX делает запрос в БД, загружает сессию, а потом сохраняет в неё изменения. Минимум 2 запроса в БД каждый раз.
Что же нам предлагает JWT? Отказаться от всех этих действий на сервере, и выдавать всё нужное сразу в одном токене. Он может храниться в кукисах или в локальном хранилище браузера. Ну а дальше, при запросе, из него будет создана сессия пользователя. Соответственно, мы выкидываем работу с БД и не храним пользовательские сессии на сервере вовсе.
Конечно, сразу же встаёт вопрос — а что будет, если пользователь такую сессию подделает? Стандарт JWT ему этого не позволит. Токены можно прочитать, но не изменить, потому что они все подписаны надёжным алгоритмом с ключом на сервере, который пользователь не знает. Это теория, а теперь переходим к практике в MODX.
[logRotation] Ротация файла error.log (журнал ошибок MODX)

Дополнение избавляет от проблемы «разрастания» файла ошибок error.log
Ротация логов
На некоторых сайтах за годы работы скопилось огромное количество записей в журнале ошибок MODX. Файл error.log может «весить» гигабайты.Дополнение logRotation постоянно проверяет размер этого файла. Как только он превысит максимальный размер, указанный в системных настройках, плагин удалит старые записи и тем самым уменьшит размер файла.
Инструкция
Установите дополнение и в системной настройке logrotation_size укажите желаемый максимальный размер файла.Дополнение в modstore.pro.
[Jevix] Версия 1.3
Еще одно дополнение, которое давно не обновлялось.
Но тут случилось сразу 2 события:
— @Евгений Борисов собрал все фиксы в одном репозитории и опубликовал Jevix на packagist. Так что теперь его можно использовать в любых проектах через Composer.
— и @Fi1osof заметил недоработку с формированием ссылок со знаком @
Но тут случилось сразу 2 события:
— @Евгений Борисов собрал все фиксы в одном репозитории и опубликовал Jevix на packagist. Так что теперь его можно использовать в любых проектах через Composer.
— и @Fi1osof заметил недоработку с формированием ссылок со знаком @
[Theme.Bootstrap] Новая версия с Bootstrap 4
Привет, друзья!
Наконец-то у меня дошли руки до обновления Theme.Bootstrap, который не менялся аж с 2017 года. Причина проста — если переводить его на Bootstrap 4, то нужно менять и стандартные чанки у кучи дополнений, а это долго.
В итоге, вместе с Theme.Bootstrap были обновлены и:
Наконец-то у меня дошли руки до обновления Theme.Bootstrap, который не менялся аж с 2017 года. Причина проста — если переводить его на Bootstrap 4, то нужно менять и стандартные чанки у кучи дополнений, а это долго.
В итоге, вместе с Theme.Bootstrap были обновлены и:
- pdoTools
- miniShop2 (помимо чанков вошли еще несколько правок, см. changelog)
- mSearch2 (а здесь чанки даже на Fenom переписаны, ура!)
- Office
Обновление msPre - Режим эксперт и массовое изменения десятков тысяч ресурсов за один раз
Режим эксперт позволяет производить изменения над десятками тысяч ресурсов за один раз. Все найденные ресурсы с помощью фильтров будут обновлены.
[mSearch2] Версия 1.13 с поддержкой плагинов ms2
Представляю вам новую версию самого популярного дополнения в modstore.pro, которая улучшает работу фильтра с дополнениями для скидок.
Как известно, mFilter2 работает напрямую с базой данных, чтобы выбирать все данные для построения фильтров максимально быстро. И если эти данные чем-то меняются перед выводом, например дополнением msDiscount, то в фильтре цены будут одни значения, а при выводе товаров — другие.
Раньше мы просто расширяли фильтр и добавляли поддержку плагинов при выборке, но в новой версии это сделано из коробки.
Как известно, mFilter2 работает напрямую с базой данных, чтобы выбирать все данные для построения фильтров максимально быстро. И если эти данные чем-то меняются перед выводом, например дополнением msDiscount, то в фильтре цены будут одни значения, а при выводе товаров — другие.
Раньше мы просто расширяли фильтр и добавляли поддержку плагинов при выборке, но в новой версии это сделано из коробки.
[msOrderAnalytics] 1.1.0 Привязка идентифицированного клиента к заказу

Я давно хотел связать заказ с клиентом GA, но времени на альтруизм совсем не было. Однако, на днях мне поступил запрос на доработку этого функционала от uweb.agency. Заказчику было нужно, чтобы определялся источник трафика.
[msPromoCode] Отменяем промо-код при помощи API компонента

В этом кейсе я покажу, как программно (через плагины) можно обращаться к API и отменять или вовсе запрещать применение промо-кода, когда в корзине есть запрещённые товары.
Я умышленно использовал событие mspcOnSetCoupon вместо mspcOnBeforeSetCoupon, чтобы наглядно показать, как можно отменить скидку на корзину и отменить уже применённый промо-код через API компонента.
[YandexMaps2] 1.2.0 События jQuery и API ключ

У компонента появился jQuery триггер ymOnLoadMap. Теперь можно после загрузки карты выполнить свой JS код, не прибегая к правкам исходного default.js.
Также, не так давно Яндекс внедрил для карт обязательное указание API ключа. В связи с этим, пользователям компонента YandexMaps2 нужно произвести некоторые действия, чтобы их карты работали и дальше.
[msLiveInform] - отслеживание Заказов MiniShop2 при помощи сервиса LiveInform
[msLiveInform] — компонент для отслеживания Заказов MiniShop2 при помощи сервиса LiveInform.

Особенности
— работа только с miniShop2 (version =>2.4.0-beta2)
— отслеживание заказов при помощи сервиса LiveInform
— сниппет для вывода информации отслеживания заказа
— проверка клиента заказа по Черному списку ненадежных клиентов при помощи сервиса LiveInform

Особенности
— работа только с miniShop2 (version =>2.4.0-beta2)
— отслеживание заказов при помощи сервиса LiveInform
— сниппет для вывода информации отслеживания заказа
— проверка клиента заказа по Черному списку ненадежных клиентов при помощи сервиса LiveInform