modZone.ru
139 subscribers
15 photos
3 files
57 links
Канал сайта modZone.ru
Download Telegram
Первое видео из планируемой серии скринкастов про компонент ZoomX. Знакомство начинается с установки и обзора основных фич. В следующих видео разберём работу с файловыми чанками и сниппетами. А также расширение функциональности Smarty с помощью собственных плагинов.

https://youtu.be/UCv1mvOmrRU
Друзья! Есть вопрос. Сейчас логика работы MODX требует обязательного наличия ресурса. Если вы запрашиваете несуществующий ресурс, то MODX всё равно вернёт ресурс, указанный для такого случая (настройка error_page). Для случаев, когда нужно настроить собственный роутинг (например, для профиля пользователей) используют событие OnPageNotFound, в котором форвардят на нужный ресурс.

В компоненте ZoomX я следовал такой же логике. Собственно вопрос - а насколько данная логика обязательна? Может было бы удобно, если бы вы сами решали, нужен ресурс или нет?

Поясню. Например, вы указали роут users/{id} и указали шаблон для вывода. Ресурса с таким URI не существует. Но вместо вывода страницы 404 вы получите указанный шаблон.

Тут надо понимать, что тогда измениться вся логика подготовки ответа. Не будет проверки прав доступа к ресурсу (ведь ресурса нет), не будет стандартного кэширования ресурса, не будет всей последовательности событий (OnWebPageInit, OnLoadWebDocument и т.д.). А значит не будут работать и плагины на эти события. Хотя их можно запустить самосстоятельно. Не будет тегов ресурса ([[*pagetitle]]). Но может это в каких-то случаях (когда нужно просто вывести контент шаблона) и не нужно? В новой версии ZoomX так будет работать с JSON запросами и ответами.

В общем, нужно ваше мнение. Нужна такая возможность и как её лучше сделать? Может включать через специальную системную настройку? Или я переморочился?
Абсолютно каждый разработчик, использующий MODX, периодически встречает в журнале ошибок записи в стиле «Error caching lexicon topic lexicon/ru/core/default», сигнализирующие об ошибке кэширования того или иного топика лексикона. Некоторых разработчиков эти ошибки беспокоят. Вопросы об этом можно найти в разных сообществах MODX. Есть даже обсуждение данного вопроса на GitHub.

https://modzone.ru/blog/2020/12/06/error-caching-lexicon-topic/
ZoomX. Встроенный функционал API. Анонс.

В новой версии добавлен функционал управления API. Теперь не нужно создавать отдельный файл для API запросов. Работаем как обычно - с формы отправляем ajax запрос с относительным URL. Все запросы используют стандартную точку входа index.php в корне сайта. Для API запросов нужно просто указать заголовок ACCEPT со значением "application/json". Управление запросами в роутах. Подробности после выпуска версии.
Ещё в новой версии ZoomX можно будет писать привычные теги MODX.
{'*pagetitle'}
{'%lexicon_entry'}
{'~5'}
{'$chunk'}

И привычней и короче.
Парни, нужно ваше экспертное мнение по webpack. В чем принципиальное преимущество js сборщиков по сравнению, скажем, с php реализациями?
Небольшой субъективный анализ текущих шаблонизаторов, доступных в данный момент для использования в MODX.

https://modzone.ru/blog/2021/01/20/comparison-of-template-engines/
Наконец закончил тестировать новую версию ZoomX. Работы было сделано много. Тестировать уже непросто. Надо переходить на Codeception. Выступил в качестве подопытного кролика - установил на свой сайт и перевёл главную страницу на Smarty. В скорости прирост на уровне погрешности. Но у меня там и нет ничего сложного - один вызов сниппета. А вот с вёрсткой дела повеселее - верстать в PHPStorm быстрее и приятнее. Плюс отличная поддержка Smarty с подсказками и валидацией синтаксиса.

Аякс запросы теперь идут на обычный index.php - написал нужный роут и сразу всё работает. Теперь смело можно переходить на RESTful API. В общем, PHP разработчикам, имеющим опыт работы с фреймворками, понравится. Хватит завидовать Evolution 2/3. Осталось самое сложное - ДОКУМЕНТАЦИЯ 😀
Заметка с коротким описанием функционала, добавленного в новой мажорной версии ZoomX.

https://modzone.ru/blog/2021/02/04/zoomx-2.0-controllers-resful-api/
Обновил документацию. Следующий этап - наглядная демонстрация возможностей.

https://modzone.ru/documentation/zoomx.html
По мотивам комментариев...
В мире PHP шаблонизаторов нет понятия файловых элементов. Это наследство MODX. Его разработчики под давлением общественности в свое время ввели понятие статических элементов. А мы в RU сообществе придумали другой костыль на основе Fenom. Но и то и другое - костыли. В PHP шаблонизаторах место сниппетов занимают сервисы. Сниппет - это говоря откровенно, архаизм. В своё время это было интересным решением, но сейчас разработка пошла по другому пути развития. Появились паттерны, общие стандарты. Нельзя застаиваться в прошлом.

Мы же все понимаем, что ExtJs 3.4 - это что-то из предыдущей жизни. Так вот и чанки со сниппетами - это тоже самое. В современном мире разработки чанки - это подшаблоны, а сниппеты - это сервисы. Развиваясь в этой парадигме вы расширяете себе поле собственной полезности. Людям, окунувшимся в мир современной разработки, уже не хочется загонять себя в узкие рамки правил MODX. Ланец, Наумкин, But1head, Киреев, Воеводский, Кузнецов, Лукьяненко и многие другие из списка разработчиков modx.pro.

ZoomX - это попытка дать таким людям возможность остаться и использовать современные методы разработки. Мы много говорили о MODX3. Многие ещё не оставили надежду. Я уже давно не верю, что он когда-нибудь выйдет. Поэтому делаю свой вклад в его развитие по своему.
Кто-нибудь хоть раз пользовался функционалом прав доступа из компонента AdminTools?
В рамках создания набора инструментов для ZoomX интересен такой вопрос - кто-нибудь использует меню с динамическим наполнением? Т.е. чтобы в меню (главном, боковом и т.д.) появлялись элементы, которые добавляются в процессе жизни сайта. Или один раз настроили и всё?
Оказалось, что никакой надобности писать отдельную библиотеку взамен pdoTools нет. В modHelpers есть практически весь необходимый функционал.
Кроме альтернативной шаблонизации ZoomX добавляет полноценную поддержку RESTful API. И вы сами можете выбирать, что использовать - только шаблонизацию, только RESTful API или и то и другое.
Информация для информирования.

Если пользователь обращается к странице, на доступ к которой у него нет прав, MODX выдаст ошибку 401 Unauthorized. Но мы с вами продвинутые разработчики и знаем, что код HTTP 401 требует аутентификации пользователя. Т.е. говоря по-русски, нужно залогиниться. А вот, чтобы указать на отсутствие прав доступа, предусмотрен код 403. В ZoomX этот момент исправлен.

https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP#401
Middlewares 1.1.1-pl.

В новой версии исправлена ошибка, возникающая при обновлении сайта.
ZoomX 2.1.1. Исправлены некоторые баги, в том числе в RESTful API механизме.
Логирование пользовательских сообщений в отдельном журнале

https://modzone.ru/blog/2021/03/05/custom-logging/