Костромин Игорь
С нами с 10 июля 2017; Место в рейтинге пользователей: #433Кешируем mFilter2
Как кол-во товаров на сайте переваливает какую-то границу, то mFilter2 начинает жестко тупить. Переодически мне приходиться бороться с этой проблемой. В итоге изучения mFilter2 выработал пару решений.
Оптимизации и тонкости работы с БД для больших магазинов на 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 или добавление полей в ms2_products через компонент [msAddField]
Все давно уже познакомились с методом добавления полей через плагины который написал Василий еще в каком то 17 или 2018 году, может раньше…
Давно уже написал класс для управления полями через мой компонент который так и не представился миру msCml (синхронизация 1С с характеристикам msOptionsPrice2).
На этих выходных все таки дошли руки и собрал таки компонент msAddField (пока только на github, для самых маленьких))))): там же ссылка на яндекс диск)
Давно уже написал класс для управления полями через мой компонент который так и не представился миру msCml (синхронизация 1С с характеристикам msOptionsPrice2).
На этих выходных все таки дошли руки и собрал таки компонент msAddField (пока только на github, для самых маленьких))))): там же ссылка на яндекс диск)
[FAQ] Делаем сниппет-обёртку
Данное руководство предназначено в первую очередь для разработчиков, только начинающих знакомиться с MODX. При разработке сайта они как правило используют уже готовые решения. И часто так случается, что такое решение нужно подогнать под текущую задачу. Самая первая мысль, которая приходит им в голову — изменить тот или иной сниппет. Ведь именно сниппеты отвечают за логику работы. Ну ещё плагины, но новички обычно в них не лезут.
Совсем зелёный разработчик лезет в исходный сниппет и творит там своё колдовство. И безумно довольный выкатывает своё творение заказчику, раздуваясь от своего величия.
Но более осторожный юнец сначала зайдет в сообщество, чтобы поинтересоваться, нет ли такого же решения, но с перламутровыми пуговицами. И случайным образом узнаёт, что править исходный код ни в коем случае нельзя, потому что следующее обновление затрёт все изменения, и что есть достаточно простой способ решить задачу кастомизации. Это сниппет-обёртка.
Совсем зелёный разработчик лезет в исходный сниппет и творит там своё колдовство. И безумно довольный выкатывает своё творение заказчику, раздуваясь от своего величия.
Но более осторожный юнец сначала зайдет в сообщество, чтобы поинтересоваться, нет ли такого же решения, но с перламутровыми пуговицами. И случайным образом узнаёт, что править исходный код ни в коем случае нельзя, потому что следующее обновление затрёт все изменения, и что есть достаточно простой способ решить задачу кастомизации. Это сниппет-обёртка.
Шпаргалка на все случаи жизни
Полезные ссылки, которые Вам пригодятся в некоторых ситуациях.
Простой(или нет) способ обновить кеш страницы у клиента.
Столкнулся с такой ситуацией: клиент захотел сделать рескин сайта, я всё переверстал, но штука в том, что все картинки закешированы в браузерах у тех, кто уже был на сайте, и если с файлами стилей или яваскриптом я могу сделать style.css?ver=2 с сылкой на стильник, то все картинки во всех шаблонах и чанках так не обновишь.
Погуглив немного я понял, что можно либо шаманить с возвращаемыми хедерами, либо для всех изображений менять урл. Первый вариант не очень, потому что тогда картинки будут вообще всегда заново грузиться, а нам надо только при их реальном изменении. Возможно есть какой-то трюк с Last-modified, но я до него недогуглился.
Тогда я решил сделать простой плагин на событие OnWebPagePrerender, который бы перехватывал страницу перед отправкой пользователю и просто менял все урлы для картинок:
Погуглив немного я понял, что можно либо шаманить с возвращаемыми хедерами, либо для всех изображений менять урл. Первый вариант не очень, потому что тогда картинки будут вообще всегда заново грузиться, а нам надо только при их реальном изменении. Возможно есть какой-то трюк с Last-modified, но я до него недогуглился.
Тогда я решил сделать простой плагин на событие OnWebPagePrerender, который бы перехватывал страницу перед отправкой пользователю и просто менял все урлы для картинок:
<?php
if ($modx->event->name == 'OnWebPagePrerender') {
$output = &$modx->resource->_output;
$output = str_replace('.png',".png?ver=" . $modx->getOption('assets_version'),$output);
$output = str_replace('.jpg',".jpg?ver=" . $modx->getOption('assets_version'),$output);
}
Полезные методы xPDOCacheManager
Класс xPDOCacheManager реализует механизм кеширования в MODX. Кеш у нас хранится в файлах, а значит, этот класс может помочь нам в работе с файловой системой.
Чтобы иметь доступ к методам класса xPDOCacheManager, нужно получить экземпляр этого класса. Это делается одной строчкой:
xPDOCacheManager::writeFile
Первый метод поможет нам записывать данные в файл. Работает он очень просто:
Чтобы иметь доступ к методам класса xPDOCacheManager, нужно получить экземпляр этого класса. Это делается одной строчкой:
$cache = $modx->getCacheManager();
xPDOCacheManager::writeFile
Первый метод поможет нам записывать данные в файл. Работает он очень просто:
$cache->writeFile(MODX_BASE_PATH . 'filename.txt', 'Текст');
Revolution 2.6.4 and Prior Two Cricital Vulnerabilities
Не нашел здесь упоминания, тем временем позавчера появилась важная новость о найденных уязвимостях в версии 2.6.4 и необходимости скорейшего обновления
Вольный перевод, оригинал здесь.
Продукт: MODX Revolution
Уровень серьезности: критический
Версии: <= 2.6.4
Тип (ы) уязвимости: Удаленное выполнение / Удаление файлов / каталогов
Дата обнаружения: 11 июля 2018
Дата фиксации: 12 июля 2018
Вольный перевод, оригинал здесь.
Продукт: MODX Revolution
Уровень серьезности: критический
Версии: <= 2.6.4
Тип (ы) уязвимости: Удаленное выполнение / Удаление файлов / каталогов
Дата обнаружения: 11 июля 2018
Дата фиксации: 12 июля 2018
Изменяем форму заказа minishop2
Регистрационные данные на почту клиента, miniShop2
Появилась задача: после заказа клиентом товаров в интернет-магазине, реализованном на miniShop2, высылать регистрационные данные (логин/пароль) на указанную почту клиента. Из коробки почему то такого функционала нет, хотя регистрация проходит. Получается так, что пользователь после оформления заказа даже и не подозревает что только что зарегистрировался на сайте. Как-то это не правильно. Собственно отсюда и появилась такая задача.