Наумов Алексей
С нами с 31 марта 2013; Место в рейтинге пользователей: #12Compare - компонент для сравнения товаров miniShop3 по характеристикам
Привет!
Рад представить адаптацию дополнения Compare для MODX 3 + MiniShop3.
Если что, я ранее публиковал статью о версии для miniShop2: modx.pro/components/25312

Рад представить адаптацию дополнения Compare для MODX 3 + MiniShop3.
Если что, я ранее публиковал статью о версии для miniShop2: modx.pro/components/25312

[MIGX] Исправляем "сжатые" таблицы
[Внимание] SQL-инъекция через miniShop2 (msPayment) в MODX — разбор и поиск причины
Хочу поделиться реальным кейсом: вчера на два сайта обнаружилась массовая SQL-инъекция через компонент miniShop2, которая загружала MySQL и выводила из строя сайт (я бы сказал нагружает сервер под 100%).
Версия minishop2 (2.8.3)
Что происходило
Началась высокая нагрузка на MySQL: десятки зависших SELECT COUNT(DISTINCT msPayment.id) с вложенными INFORMATION_SCHEMA, ORD(MID(...)), CAST(...), XOR() — т.е. типичный blind SQL injection.
Все вредоносные запросы шли от пользователя, к базе.
Сайт работал через miniShop2, и инъекции шли через msPayment и msDeliveryMember в JOIN-запросах.
Пример вредоносного запроса:
Версия minishop2 (2.8.3)
Что происходило
Началась высокая нагрузка на MySQL: десятки зависших SELECT COUNT(DISTINCT msPayment.id) с вложенными INFORMATION_SCHEMA, ORD(MID(...)), CAST(...), XOR() — т.е. типичный blind SQL injection.
Все вредоносные запросы шли от пользователя, к базе.
Сайт работал через miniShop2, и инъекции шли через msPayment и msDeliveryMember в JOIN-запросах.
Пример вредоносного запроса:
SELECT COUNT(DISTINCT msPayment.id)
FROM modx_ms2_payments AS msPayment
JOIN modx_ms2_delivery_payments Member ON Member.payment_id = msPayment.id AND 7574=IF((SESSION_USER() LIKE USER()), (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C WHERE 0 XOR 1), 7574)
WHERE msPayment.id = 1 AND msPayment.active = 1 CKEditor "на максималках", расширение функционала визуального редактора
Всем привет! Решил установить пару плагинов в CKEditor, и меня понесло)
Собрал и перевёл на русский все рабочие плагины для этого компонента.
Обновил сам CKEditor до версии 4.25-LTS (Long Term Support)
Добавил функцию выбора ресурса для ссылок! Спасибо @Дима Касаткин и Степан Гончаров!
Теперь он воспринимает Excel таблицы, умеет генерировать QR коды изображением, создавать диаграммы, оформлять контент в Bootstrap «сетке», создавать Bootstrap вкладки, подсвечивать исходный код, считать кол-во слов и параграфов и многое другое…
Так же, теперь он выглядит как редактор MS Word!
UPD. Обновление самой библиотеки CKEditor + новый плагин autogrow.
UPD. 01.11.24 Новые плагины — вставка изображений со внешних источников и красивые уведомления: uploadfile, uploadwidget, notificationaggregator, filetools.

Собрал и перевёл на русский все рабочие плагины для этого компонента.
Обновил сам CKEditor до версии 4.25-LTS (Long Term Support)
Добавил функцию выбора ресурса для ссылок! Спасибо @Дима Касаткин и Степан Гончаров!
Теперь он воспринимает Excel таблицы, умеет генерировать QR коды изображением, создавать диаграммы, оформлять контент в Bootstrap «сетке», создавать Bootstrap вкладки, подсвечивать исходный код, считать кол-во слов и параграфов и многое другое…
Так же, теперь он выглядит как редактор MS Word!
UPD. Обновление самой библиотеки CKEditor + новый плагин autogrow.
UPD. 01.11.24 Новые плагины — вставка изображений со внешних источников и красивые уведомления: uploadfile, uploadwidget, notificationaggregator, filetools.

Настройка конфигурации NGINX + PHP-FPM 7.4 на Ubuntu 22.04 + Fastpanel для MODX 2.8.7
Добрый день.
Поднимаю сервер VDS для MODX 2.8.5. Ubuntu 22.04 + Fastpanel. Связка NGINX + PHP-FPM 7.4. Cертификат Let's Encrypt Wildcard создан через панель. Стандартную настройку конфигов сделал такую (настройки сохраняются в разделе «Ручная настройка» в панели управления. Учтите, что при ручных настройках панель начнет вас предупреждать о попытке поменять стандартные настройки и будет просить ввести код подтверждения, если вы это сделаете — то ручные настройки затрутся и придётся настраивать заново).
Поднимаю сервер VDS для MODX 2.8.5. Ubuntu 22.04 + Fastpanel. Связка NGINX + PHP-FPM 7.4. Cертификат Let's Encrypt Wildcard создан через панель. Стандартную настройку конфигов сделал такую (настройки сохраняются в разделе «Ручная настройка» в панели управления. Учтите, что при ручных настройках панель начнет вас предупреждать о попытке поменять стандартные настройки и будет просить ввести код подтверждения, если вы это сделаете — то ручные настройки затрутся и придётся настраивать заново).
Оптимизации и тонкости работы с БД для больших магазинов на MODX Revolution
Небольшое вступление
Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
[miniShop2] Группируем поля на вкладке "Свойства товара"
Всем привет, небольшая инструкция про кастомизацию вкладки «Свойства товара» у miniShop2.
Отдаем модные форматы картинок в webp и avif напрямую через nginx и apache в обход разметки

Всем привет!
Я тут работал над одним проектом, в котором очень много контентной и интерфейсной графики, десятки тысяч изображений и, конечно, возник вопрос оптимизации сайта, чтобы удовлетворить требования поисковых систем.
Энтузиазма добавили, появившиеся относительно недавно у гугла, так называемые Core Web Vitals.
Кто не в курсе это пачка технических показателей качества сайта, которые скоро будут включены в алгоритм ранжирования и все тормознутые сайты из-за них, типа, покатятся вниз.
Ну в общем, встала задача оптимизировать картинки, а также сделать так, чтобы не пришлось переписывать кучу html кода, чтобы эти картинки туда вставить.
[Расширяем miniShop2] Быстрая смена статуса заказа через контекстное меню

Заказчика запарило для смены статуса лазать в полное редактирование заказа, попросил сделать что-то быстрое и простое. На скриншоте выше конечный результат. Чтобы получить такой же, файлы из этого репозитория закиньте себе в папку /assets/ и создайте плагин, который описан в конце статьи. Однако, я настоятельно рекомендую почитать статью, чтобы понимать принцип расширения всего этого дела.
Поле стоимость доставки значение "Бесплатно" и "Индвидуальный рассчет"
Появилась еще одна задача с которой я хочу с Вами поделиться.
Две задачи:
1. Не нравиться значение доставки 0 руб хочется заменить на Бесплатно
2. Через настойки MS2 адмистратору сайта устанавливать значение стоимости доставки «Индивидуальный рассчет.
Для того что бы это реализовать нам нужно выполнить все действия расписанные в статье Стоимость доставки отдельной строкой в оформление заказа MS2
Две задачи:
1. Не нравиться значение доставки 0 руб хочется заменить на Бесплатно
2. Через настойки MS2 адмистратору сайта устанавливать значение стоимости доставки «Индивидуальный рассчет.
Для того что бы это реализовать нам нужно выполнить все действия расписанные в статье Стоимость доставки отдельной строкой в оформление заказа MS2
