0.00
60 читателей, 36 топиков

Анонс серии статей. Создание крупного магазина на основе MODX и NoSQL-базы данных ElasticSearch.

Вступление(ленивым можно пропускать до следующего подзаголовка)

Я человек с не очень богатым опытом создания интернет магазинов: что-то около 10-15 штук. Чаще всего приходилось пользоваться уже готовыми решениями, кои перечислять здесь не буду, дабы не создавать рекламы.
Но вот внезапно возникла одна задача: нужно реализовать магазин с базой в 2-3 млн товаров, в перспективе, может, даже 5. После долгих размышлений было принято решение воспользоваться уже готовым решением — одной платной CMS. Сумма была уплачена, CMS развернули, начали лить туда товары, но тут возникла дилемма: эта CMS работает только с грубой структурой товаров и с ограниченным набором параметров во время загрузки. Стало очевидно, что нам необходимо переписывать загрузчик товаров в базу. Уже была дана отмашка, чтобы я начинал писать, но возникла идея протестировать эту CMS на стрессоустойчивость — посмотреть, как она будет работать на базе с 100 тысячами товаров. CMS себя проявила с худшей стороны, и стало понятно, что пришло время отказываться от нее и что необходимо вообще всё писать своими силами.
Отсюда один из главных выводов по разработке подобных магазинов: НИКОГДА НЕ ПОЛЬЗУЙТЕСЬ ГОТОВЫМИ РЕШЕНИЯМИ!
Вопрос о том, что лучше использовать для разработки подобных проектов, я поднял в уютном чате сообщества MODX в Беларуси. В процессе обсуждения мы пришли к мнению, что необходимо использовать NoSQL-базу для хранения товаров и их параметров. Послом MODX в Беларуси Иваном Климчуком Alroniks было предложено решение, используемое во многих проектах, а именно Redis. Изучив эту систему, я столкнулся с одной из проблем, а именно: отсутствие удобного способа получения данных для фильтра — хотя, возможно, я плохо изучил вопрос. И после этого внезапно мне подсунули под нос такую вещь как ElasticSearch — о том, что это за зверь, я и решил написать цикл статей, в которых будут описаны общие принципы, т.е. чисто PHP и запросы к ElasticSearch, но, возможно, будут и некоторые особенности, т.к. я использовал REVO-ветку.

Краткое описание последующего цикла статей
Я опишу этот цикл с точки зрения использования его для создания Интернет-магазина.
  1. ElasticSearch — формирование базы товаров и общая информация по ElasticSearch (установка, настройка).
    1. Общая архитектура.
    2. Параметры и типы параметров.
    3. Прочее.
  2. Тонкости в формировании и парсинге файлов XML/CSV.
    1. Пример структуры файлов на CSV и ее разбор для записи в ElasticSearch.
    2. Пример структуры файла XML и его разбор для записи в ElasticSearch.
    3. Мои личные наработки для разбора больших файлов.
  3. ElasticSearch — выборка необходимых параметров товара.
    1. Выбираем все параметры для формирования фильтров.
    2. Выбираем необходимые параметры.
    3. Сортировка товаров и прочие обобщённые операции.
  4. Формирование категорий товаров на основе MODX и Wayfinder. Тонкости работы с многоуровневым каталогом.
    1. Пример моего опыта использования Ресурсов для формирования каталога.
    2. Особенности многоуровневого древа документов.
    3. Решение проблем многоуровневого древа.
  5. ElasticSearch — формирование поиска по всей базе.
  6. Хранение заказов на базе ElasticSearch, обновление/удаление. Подведение общего итога.
  7. Возможная статья: Особенность создания гибкого магазина с неограниченным количеством параметров.

p.s. Время написания последующих статей будет варьироваться от 7 до 10 дней, т.к. именно в данный момент происходит сдача в эксплуатацию этого сайта.

Завершен перевод раздела "Contributors Guide" из rtfm

Заметку написал по просьбе Ronef

В момент подготовки очередного релиза MODX Evolution в чате команды завязался разговор о документации и я взял на себя обязательства по переводу раздела «Contributors Guide», где описывается, как работать с репозиториями MODX, какие стратегии ветвления используются и как вообще новому человку включиться в работу сообщества в качестве разработчика.

Переводы документации доступны на сайте сообщества MODX Belarus, а так же на GitHub.

Содержание раздела:

Если вы нашли ошибку или какая-то часть перевода кажется неестественной или плохо читается, дайте мне знать в трекере проекта на GitHub. Вы так же всегда можете сделать форк проекта, склонировать его себе, исправить ошибку и послать мне pull request. Как это сделать — описано в материалах выше.

[REVO] Разработка своего интерактивного компонента (Таблица в админке)


Сегодня я покажу как с использование костыля на быструю руку соорудить табличку в админке для нашего компонента. Кошерный метод разработки описал Василий Наумкин, за что ему большое спасибо.

Для тех, кому на этих курсах пока слишком много информации и он хочет просто пощупать — как оно и где, подойдет мой метод.
Читать дальше →

Разработка своего интерактивного компонента (добавление, редактирование объектов пользователями)

В ходе этого урока мы научимся делать системы учета объектов, добавляемых пользователями. Например, систему учета экзаменационных листов в вузе

Читать дальше →

Документация по EVO, еще 1 попытка сделать все в лучшем виде:)

Прошлая попытка сделать все на движке WIKI в виде wiki.modx.im не увенчалась успехом
сначала было много желающих, а потом как то интерес угас в итоге там почти ничего нет, кроме нескольких полезных документаций (к примеру по сниппету IF)

Сейчас же решили сделать документацию на базе GitHub и DAUX.
Что это даст:
  • GitHub — более прозрачное обновление, видно что когда обновилось
  • DAUX — небольшой скрипт по генерации сайта на базе Markdown файлов
  • Возможность импортировать документацию куда угодно


Читать дальше →

Cheat Sheet - Шпаргалка по Evolution

Надоело подсматривать как что правильно пишется при создании ресурса
потому решил что нужно все собрать в одном месте.
http://cheats.evolution-cms.com

пока наполнил не все, если кто видит ошибки или хочет что то дополнить пишите в комментариях.

Читать дальше →

Урок 1: Создание AJAX запросов, используя MODx API

Задача:
Сдалать отправку данных на сервер получив ответом результат выполнения Ditto с фильтром по данным переданым в _POST

1) Создадим структуру файлов. Наш сниппет назовём mysnip.php

Читать дальше →

[EVO] docBilder - создание документов по данным eForm

Накидал небольшую инструкцию на тему создания документов по данным eForm. До этого была всего 1 статья на подобную тему — эта. Но имхо, с выходом resource.php, а теперь уже новой версии под названием MODxAPI для Evolution данная инструкция становится не совсем актуальной…

Читать дальше →

Быстродействие фронтенда для дизайнеров и разработчиков

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

В статье очень подробно разложено по полочкам как нужно оптимизировать свои страницы для ускорения.

Быстродействие фронтенда для дизайнеров и разработчиков

[EVO] Jot комментарии на сайте

Не так давно сделал сайт используя движок MODX EVO Custom последней версии, и все бы хорошо, но тут возникла маленькая проблема. Почему маленькая — потому что решение данной проблемы многие вебмастера уже знают, но вот для меня начинающего это оказалось проблемой, так как решения найти в интернете не получилось, прошлось обратиться к знающим людям :) вот и решил опубликовать данный топик для таких же начинающих.

Читать дальше →