Петропавловский Артем
С нами с 19 июня 2015; Место в рейтинге пользователей: #519Давайте пофильтруем данные с помощью микросервиса
Драма по поводу хорош или плох mSearch2 не утихает. Многие пользователи системы видят ее исключительно в монолитом виде что очень сильно ограничивает кейс системы. Причем любой.
Давайте представим что у вас есть интернет-магазин на MODX + miniShop2 с очень большим кол-вом товаров и каким-никаким хайлоадом :)
Использование встроенных фильтров в mSearch вас немного ограничивает. Как минимум тем, что не кеширует результат.
Предлагаю припилить к нашему любимому MODX небольшой микросервис на Laravel который будет фильтровать данные по входному запросу, а также отдавать нам список айдишников которые подходят под выборку.
Давайте представим что у вас есть интернет-магазин на MODX + miniShop2 с очень большим кол-вом товаров и каким-никаким хайлоадом :)
Использование встроенных фильтров в mSearch вас немного ограничивает. Как минимум тем, что не кеширует результат.
Предлагаю припилить к нашему любимому MODX небольшой микросервис на Laravel который будет фильтровать данные по входному запросу, а также отдавать нам список айдишников которые подходят под выборку.
Кешируем 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.
Hybridauth. Google не отдает email
Собственно, Google не отдает email
Ключ выглядит так
{«keys»:{«id»:«ID»,«secret»:«secret»},«scope»:«profile www.googleapis.com/auth/plus.profile.emails.read»}
Версия HybridAuth 3.0.0
Ключ выглядит так
{«keys»:{«id»:«ID»,«secret»:«secret»},«scope»:«profile www.googleapis.com/auth/plus.profile.emails.read»}
Версия HybridAuth 3.0.0
Сборка элементов сайта в компонент (пакет), пошаговая инструкция
Привет, давно не виделись :)
Я в прошлой заметке, когда писал об уходе, обещал опубликовать свои черновики, так что выполняю обещание и сегодня рассмотрим пример с разработкой отдельных страниц сайта и сборкой их в компонент (или транспортный пакет), которые можно затем установить через обычный пакетный менеджер. Я буду все показывать на реальном случае, который я недавно закончил.
Итак, сначала описание задачи, которая стояла. Был сайт, на котором нужно было реализовать обновленный раздел с готовыми решениями. Был представлен новый дизайн с версткой, были описаны требования к некоторым аспектам работы этих новых страниц. В частности, автоматический расчет цены товаров с конвертация валют, автоматический расчет цены монтажа в зависимости от количества оборудования и прочее. Но не суть, задача была безболезненно все делать локально, пока основной сайт работает и выкладывать решение или по частям или сразу, в виде готового пакета.
Какие-то отдельные подзадачи я все же сделал руками, так как это было просто быстрее и проще. Например, нужно было в некоторых шаблонах (уже существующего сайта) добавить вызов нового снипета или настроить формы редактирования ресурса под клиента. Эти манипуляции были сделаны прямо на боевом сайте. Повторюсь, потому что так быстрее и проще и не влияет на остальной процесс. По методологии LEAN.
Вводная закончилась. Продолжаем внутри заметки.
Я в прошлой заметке, когда писал об уходе, обещал опубликовать свои черновики, так что выполняю обещание и сегодня рассмотрим пример с разработкой отдельных страниц сайта и сборкой их в компонент (или транспортный пакет), которые можно затем установить через обычный пакетный менеджер. Я буду все показывать на реальном случае, который я недавно закончил.
Итак, сначала описание задачи, которая стояла. Был сайт, на котором нужно было реализовать обновленный раздел с готовыми решениями. Был представлен новый дизайн с версткой, были описаны требования к некоторым аспектам работы этих новых страниц. В частности, автоматический расчет цены товаров с конвертация валют, автоматический расчет цены монтажа в зависимости от количества оборудования и прочее. Но не суть, задача была безболезненно все делать локально, пока основной сайт работает и выкладывать решение или по частям или сразу, в виде готового пакета.
Какие-то отдельные подзадачи я все же сделал руками, так как это было просто быстрее и проще. Например, нужно было в некоторых шаблонах (уже существующего сайта) добавить вызов нового снипета или настроить формы редактирования ресурса под клиента. Эти манипуляции были сделаны прямо на боевом сайте. Повторюсь, потому что так быстрее и проще и не влияет на остальной процесс. По методологии LEAN.
Вводная закончилась. Продолжаем внутри заметки.
Curl клиент modx
Встроенный curl клиент для отправки запросов на сторонние сервисы (RESTful и другие).
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get('GET запрос');
или
$response = $client->post('POST запрос');
// Обработка полученных данных в json или xml формате и преобразование их в массив
$array = $response->process();
В заметке перечислены способы работы с клиентомЗапрос через XPDO к тв параметрам с использование having
Запрос на XPDO для выборки ресурсов у которых совпадают значения тв параметров.
Функция having посчитает количество совпадений по групперуемому полю contentid
Функция having посчитает количество совпадений по групперуемому полю contentid
Вывод всех опций minishop2 и автоматическое их добавление в словарь одной кнопкой.
Всем привет, как всегда возникла задача максимально упростить и автоматизировать рутинные процессы в MODX. Будем делать автоматическое добавление опций в словарь и автоматически подтягивать список опций, куда вам угодно будет.
[mFilter2] Вывод товаров со смежными значениями
Небольшая заготовка из вчерашнего рукоделия.
Имеем сайт с подбором товаров по характеристикам, реализованным на mFilter2.
Один из параметров «Мощность активная» выглядит так (увеличение по клику):
Как видно, есть большое разнообразие товаров с близкими значениями мощностей, но общее количество товаров не столь велико.
Это приводит к тому, что когда посетитель выбирает, к примеру, мощность 10 кВт, то он видит 1 товар в результатах подбора. А специфика продукции такова, что логично предложить пользователю аналогичные изделия как с чуть меньшей мощностью, например 9 кВт, так и с большей, до 12-15 кВт.
Нет, конечно можно сказать, что пусть нащелкает нужные цифры в подборе, но всегда есть «но». На страницу «Товары с мощностью 10 кВт» (где уже стоит галочка в фильтре) пользователь приходит из поисковых систем, фильтра он не видел и не нажимал. Если на странице будет 1 товар, пользователь может быстро уйти, решив, что мы предлагаем крайне скудный ассортимент, так и не увидев, что есть фильтр.
В общем, небольшая зарисовка на тему того, как при выборе в фильтре параметра со значением 10, показать все товары в диапазоне -x%....+y%.
Имеем сайт с подбором товаров по характеристикам, реализованным на mFilter2.
Один из параметров «Мощность активная» выглядит так (увеличение по клику):
Как видно, есть большое разнообразие товаров с близкими значениями мощностей, но общее количество товаров не столь велико.
Это приводит к тому, что когда посетитель выбирает, к примеру, мощность 10 кВт, то он видит 1 товар в результатах подбора. А специфика продукции такова, что логично предложить пользователю аналогичные изделия как с чуть меньшей мощностью, например 9 кВт, так и с большей, до 12-15 кВт.
Нет, конечно можно сказать, что пусть нащелкает нужные цифры в подборе, но всегда есть «но». На страницу «Товары с мощностью 10 кВт» (где уже стоит галочка в фильтре) пользователь приходит из поисковых систем, фильтра он не видел и не нажимал. Если на странице будет 1 товар, пользователь может быстро уйти, решив, что мы предлагаем крайне скудный ассортимент, так и не увидев, что есть фильтр.
В общем, небольшая зарисовка на тему того, как при выборе в фильтре параметра со значением 10, показать все товары в диапазоне -x%....+y%.