Максим Кузнецов

Максим Кузнецов

С нами с 01 июля 2013; Место в рейтинге пользователей: #18

Внедряем webp без боли

Недавно начал работу над очередным проектом, и захотелось сразу добавить поддержку webp (раз такая поддержка уже есть в MODX из коробки). Задача несложная, но хотелось сделать все красиво, да так чтобы менеджеру не нужно было дополнительно эти изображения конвертировать.
Petr Golovatyy
21 июня 2019, 02:15
modx.pro
21
3 088
+18

[jwtSession] Перенос сессии в куки браузера

Привет, друзья!

Вы задумывались, как работают сессии в MODX? Каждый раз, когда кто-то заходит на сайт, PHP генерирует ему уникальный id и сохраняет его в куку PHPSESSID. При этом в базе данных создаётся запись modSession с этим id и содержимым текущей сессии.

При каждом запросе на сайт передаётся кука с id, MODX делает запрос в БД, загружает сессию, а потом сохраняет в неё изменения. Минимум 2 запроса в БД каждый раз.

Что же нам предлагает JWT? Отказаться от всех этих действий на сервере, и выдавать всё нужное сразу в одном токене. Он может храниться в кукисах или в локальном хранилище браузера. Ну а дальше, при запросе, из него будет создана сессия пользователя. Соответственно, мы выкидываем работу с БД и не храним пользовательские сессии на сервере вовсе.

Конечно, сразу же встаёт вопрос — а что будет, если пользователь такую сессию подделает? Стандарт JWT ему этого не позволит. Токены можно прочитать, но не изменить, потому что они все подписаны надёжным алгоритмом с ключом на сервере, который пользователь не знает. Это теория, а теперь переходим к практике в MODX.
Василий Наумкин
24 марта 2019, 15:52
modx.pro
5
717
+11

[EmailQueue] - Очередь писем

С сайта бывает требуется отсылать много писем. Но многие хостеры ограничивают число писем что можно сразу отправить. Например на одном хостинге можно отправить только 60 писем в минуту. Чтобы обойти это ограничение нужно организовывать очередь писем и отправлять письма частями по, например, 50 штук. Чтобы не писать такую очередь каждый раз когда отправка многих писем нужна в компоненте, написал отдельный компонент что организует такую очередь.
Александр
10 июня 2018, 05:44
modx.pro
8
1 845
+12

Защита дополнений в деталях



Приветствую. Эта заметка будет полезна скорее для уже состоявшихся авторов компонентов, но возможно начинающим тоже будет полезно изучить механизм и позволит стать будущими авторами дополнений, если ещё в раздумьях.

Не так давно некоторые дополнения на modstore.pro обзавелись защитой. Дополнения можно по прежнему устанавливать из репозитория, но если попробовать скопировать архив с пакетом на другой сайт, то установить ничего не получится. И это было сделано не спроста, так как наглости некоторых людей нет предела, пришлось предпринять меры.

Следом авторам платных дополнений разослали инструкцию о том, каким образом встроить подобную защиту в собственные дополнения. Стоит отметить, что с первого раза сделать по инструкции (несмотря на простоту) не получилось в силу особенностей применяемого варианта сборки пакета. Пришлось разбираться досконально и выяснять, как и что в MODX работает, чтобы сделать это “правильно” и надежно.

Прежде чем продолжить, стоит ознакомиться с специальным методом сборки пакетов – «Сборка transport-пакета без установки MODX». Инструкция написана в далеком 2015 году, однако описанный метод работает до сих пор. Отличие в том, что подход не требует установки MODX для сборки пакета, т.е. сборку запустить можно откуда угодно, имея только исходники пакета и xPDO.

Детали внутри.

Иван Климчук
30 апреля 2018, 22:41
modx.pro
19
8 239
+15

Изменяем форму заказа minishop2

За год работы с минишопом я понял одну вещь — никто не знает как просто и быстро кастомизировать стандартную форму заказов. Для меня это довольно частая задача, по этому соберу тут несколько приемов которыми сам пользуюсь:


Pavel Zarubin
22 апреля 2018, 02:16
modx.pro
76
3 485
+41

[ExtJS] Расширяем нативную гриду юзеров (UPD)


После статьи о расширении профиля юзера правильными дополнительными полями мне посыпались вопросы о расширении нативной таблицы со списком юзеров. Мы знаем, что практически любой стандартный компонент системы, работающий на ExtJS, можно расширить не затрагивая исходника. Главное уметь пользоваться «методом тыка» понимать принцип того, что делаешь. Что-ж… давайте расширять нативную таблицу пользователей!
Сразу опишем задачу, которую реализуем в рамках статьи:

  1. Убрать слева каждой записи ненужный чекбокс,
  2. Добавить столбцы: Фото, Дата рождения, Страна, Город,
  3. Добавить возможность отфильтровать пользователей по стране,
  4. Заменить некрасивое поле поиска на симпатичное и компактное,
  5. Подсветить заблокированных красным цветом.
Павел Гвоздь
07 июля 2017, 19:14
modx.pro
37
2 914
+21

modNodejs - Интеграция Nodejs в MODx

Всем доброе утро. Сегодня представляю на всеобщее обозрение компонент над которым я потел последние несколько дней.

Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».

Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:

Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
but1head
21 января 2017, 03:11
modx.pro
20
9 964
+27

Добавление своих полей в форму заказа [обновлено]

При разработке нескольких проектов, возникала необходимость в получении дополнительных данных от покупателей, а полей в miniShop2 ограниченное количество. Поиск готового решения результата не дал, поэтому предлагаю свой вариант.

Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей

Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.

Более подробно далее
Дмитрий Меркурьев
11 октября 2016, 16:38
modx.pro
82
9 968
+11

[modTelegram] - Telegram сообщения

[modTelegram] — Небольшое дополнение для работы с Telegram.

Реализовано:
— методы работы с api
— помощник сайта
Володя
15 августа 2016, 09:34
modx.pro
17
12 027
+23

Дополнительные поля профиля юзера (не extended)


Разрабатываю проект, в котором необходимо было реализовать более простое редактирование дополнительных полей профиля, чем есть из коробки. К слову, неудобное редактирование — это не единственный минус нативного способа расширения профиля полями. Ни для кого не секрет, что фильтрацию по JSON полям нормально не осуществить, только костылями. Фактически, мне надо было получить решение, которое бы расширяло стандартный код MODX, не трогая исходники, дабы сохранить карму в порядке возможность обновления системы.
Пришёл к выводу, что буду расширять стандартную вкладку профиля «Общая информация». При желании можно чуть переписать код в событии OnUserFormPrerender и создать свою вкладку со своими полями.
Павел Гвоздь
30 мая 2016, 22:36
modx.pro
93
11 452
+19