Начало разработки — за пределами MODX. Вёрстка (БЭМ) шаблонов, чанков и страниц в Sublime Text 3 с использованием Gulp-задач для автокомпиляции с использованием пре- и постпроцессоров (ускоряют разработку в 4-5 раз), зависимости: bower, для UI-тестов адаптивности: BrowserSync. Минификация стилей и скриптов на клиенте (прекратите вешать эту задачу на MinifyX/сервер!). Кодстайл: CSScomb и JSCS + JSLint. В дальнейшем можно настроить автоматическую выгрузку по SFTP скомпилированных файлов прямо на сервер. Шаблонизация на клиенте легко настраивается с помощью gulp-rigger, gulp-file-include или gulp-include-source. За счет вотчеров скорость просто реактивная. Особенно удобно, если монитора два и больше — в одном мониторе код проекта, в остальных — мгновенный результат (страница обновляется быстрее, чем я успеваю перевести взгляд с одного монитора на другой или переключиться на новый раб. стол).
Инициализация сервера: ansible, установка MODX: Gitify, импорт настроек: Teleport. Импорт уже подготовленных чанков, tpl-ек занимает минуты, нет необходимости заниматься «клавадрочерством» с Ctrl+Tab (переключиться на фронтенд-вкладку), Ctrl/Cmd+R (обновить страницу), чтобы просмотреть результат — всё уже оттестированно на этапе вёрстки. Остаётся только настроить магию сниппетов и оформить Custom Forms. Дальше — оверлокинг с XDebug, debugParser, BloodLine и Chrome DevTools.
Грузим свой почтовый класс раньше всех:
А в классе extraMail добавляем свою обработку:
По идее должно как-то так быть
Касаемо эластика, да его можно использовать, только сейчас он стал прожорлив и ему нужно минимум 32гб оперативки, ну для 5млн товаров возможно и 64гб нужно.
Но если у Вас будет такая машина и всё ограничится примерно 5млн, то имеет смысл сделать одну таблицу в которую прописать все параметры, при этом задать тип ENUM для параметров цвет, размер и т.п.
У нас на одном проекте поиск по 20млн товаров с прописанными ключами работал меньше чем за секунду. Правда не было необходимости строить фильтры на лету, возможно имеет смысл кэшировать фильтры до обновления товаров. Там сервер был вот с такими характеристиками, если я правильно помню: image.prntscr.com/image/mdWNvaXmRFCKQNoPjWQXcg.png
Хотя эластик это сразу готовая система поиска для сайта, так же благодаря Terms из эластика будут фильтры готовы прям из запроса.
Создал новый тип содержимого (contenttype) с пустым расширением файла (без .html) и указал
Cache-Control: max-age=3600, must-revalidate
на вкладке
и кеширование в браузере можно выставить нужное.
Кстати, можно сделать еще круче — без редиректа, а просто подставляя нужную директорию, вот так:
Fi1osof·Можете с этим кодом к консоли поиграться.
location ~* ^/assets/images/products/\d+/\d+x\d+/ { access_log off; expires 10d; break; } location ~* ^/assets/images/products/\d+/ { deny all; }Наверное, можно и как-то красивее написать, но я не придумал.Теперь никто не откроет полноразмерные картинки, и ты можешь отдавать их через PHP покупателям.
Инициализация сервера: ansible, установка MODX: Gitify, импорт настроек: Teleport. Импорт уже подготовленных чанков, tpl-ек занимает минуты, нет необходимости заниматься «клавадрочерством» с Ctrl+Tab (переключиться на фронтенд-вкладку), Ctrl/Cmd+R (обновить страницу), чтобы просмотреть результат — всё уже оттестированно на этапе вёрстки. Остаётся только настроить магию сниппетов и оформить Custom Forms. Дальше — оверлокинг с XDebug, debugParser, BloodLine и Chrome DevTools.