Выложил обновлённую версию ZoomX, в которой добавлена пара фич и исправлены некоторые моменты:
- Управление доступностью объекта
- Исправлен баг с деинсталяцией пакета.
- Добавлен модификатор
- Небольшой рефакторинг и оптимизация.
Сейчас готовлю пару видео по использованию данного компонента.
- Управление доступностью объекта
$modx в шаблонах.- Исправлен баг с деинсталяцией пакета.
- Добавлен модификатор
modx для отдельного парсинга тегов MODX.- Небольшой рефакторинг и оптимизация.
Сейчас готовлю пару видео по использованию данного компонента.
Первое видео из планируемой серии скринкастов про компонент ZoomX. Знакомство начинается с установки и обзора основных фич. В следующих видео разберём работу с файловыми чанками и сниппетами. А также расширение функциональности Smarty с помощью собственных плагинов.
https://youtu.be/UCv1mvOmrRU
https://youtu.be/UCv1mvOmrRU
YouTube
ZoomX. Краткий обзор основных возможностей.
Данный компонент реализует идею максимально полного отказа от встроенного шаблонизатора MODX. Таким образом, мы выбрасываем многократный парсинг контента, элементы, хранящиеся в БД, плейсхолдеры с точками и плюсами и добавляем любой современный быстрый мощный…
Друзья! Есть вопрос. Сейчас логика работы MODX требует обязательного наличия ресурса. Если вы запрашиваете несуществующий ресурс, то MODX всё равно вернёт ресурс, указанный для такого случая (настройка
В компоненте ZoomX я следовал такой же логике. Собственно вопрос - а насколько данная логика обязательна? Может было бы удобно, если бы вы сами решали, нужен ресурс или нет?
Поясню. Например, вы указали роут
Тут надо понимать, что тогда измениться вся логика подготовки ответа. Не будет проверки прав доступа к ресурсу (ведь ресурса нет), не будет стандартного кэширования ресурса, не будет всей последовательности событий (OnWebPageInit, OnLoadWebDocument и т.д.). А значит не будут работать и плагины на эти события. Хотя их можно запустить самосстоятельно. Не будет тегов ресурса (
В общем, нужно ваше мнение. Нужна такая возможность и как её лучше сделать? Может включать через специальную системную настройку? Или я переморочился?
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/
https://modzone.ru/blog/2020/12/06/error-caching-lexicon-topic/
modzone.ru
Ошибки кэширования лексиконов | Зона разработки
ZoomX. Встроенный функционал API. Анонс.
В новой версии добавлен функционал управления API. Теперь не нужно создавать отдельный файл для API запросов. Работаем как обычно - с формы отправляем ajax запрос с относительным URL. Все запросы используют стандартную точку входа
В новой версии добавлен функционал управления 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/
https://modzone.ru/blog/2021/01/20/comparison-of-template-engines/
modzone.ru
Сравнение шаблонизаторов | Зона разработки
Наконец закончил тестировать новую версию ZoomX. Работы было сделано много. Тестировать уже непросто. Надо переходить на Codeception. Выступил в качестве подопытного кролика - установил на свой сайт и перевёл главную страницу на Smarty. В скорости прирост на уровне погрешности. Но у меня там и нет ничего сложного - один вызов сниппета. А вот с вёрсткой дела повеселее - верстать в PHPStorm быстрее и приятнее. Плюс отличная поддержка Smarty с подсказками и валидацией синтаксиса.
Аякс запросы теперь идут на обычный index.php - написал нужный роут и сразу всё работает. Теперь смело можно переходить на RESTful API. В общем, PHP разработчикам, имеющим опыт работы с фреймворками, понравится. Хватит завидовать Evolution 2/3. Осталось самое сложное - ДОКУМЕНТАЦИЯ 😀
Аякс запросы теперь идут на обычный 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/blog/2021/02/04/zoomx-2.0-controllers-resful-api/
modzone.ru
[ZoomX] Контроллеры, RESTful API | Зона разработки
Обновил документацию. Следующий этап - наглядная демонстрация возможностей.
https://modzone.ru/documentation/zoomx.html
https://modzone.ru/documentation/zoomx.html
По мотивам комментариев...
В мире PHP шаблонизаторов нет понятия файловых элементов. Это наследство MODX. Его разработчики под давлением общественности в свое время ввели понятие статических элементов. А мы в RU сообществе придумали другой костыль на основе Fenom. Но и то и другое - костыли. В PHP шаблонизаторах место сниппетов занимают сервисы. Сниппет - это говоря откровенно, архаизм. В своё время это было интересным решением, но сейчас разработка пошла по другому пути развития. Появились паттерны, общие стандарты. Нельзя застаиваться в прошлом.
Мы же все понимаем, что ExtJs 3.4 - это что-то из предыдущей жизни. Так вот и чанки со сниппетами - это тоже самое. В современном мире разработки чанки - это подшаблоны, а сниппеты - это сервисы. Развиваясь в этой парадигме вы расширяете себе поле собственной полезности. Людям, окунувшимся в мир современной разработки, уже не хочется загонять себя в узкие рамки правил MODX. Ланец, Наумкин, But1head, Киреев, Воеводский, Кузнецов, Лукьяненко и многие другие из списка разработчиков modx.pro.
ZoomX - это попытка дать таким людям возможность остаться и использовать современные методы разработки. Мы много говорили о MODX3. Многие ещё не оставили надежду. Я уже давно не верю, что он когда-нибудь выйдет. Поэтому делаю свой вклад в его развитие по своему.
В мире 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
Если пользователь обращается к странице, на доступ к которой у него нет прав, 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
Wikipedia
Список кодов состояния HTTP
статья-список в проекте Викимедиа
Middlewares 1.1.1-pl.
В новой версии исправлена ошибка, возникающая при обновлении сайта.
В новой версии исправлена ошибка, возникающая при обновлении сайта.
ZoomX 2.1. Настоящие виртуальный страницы
https://modzone.ru/blog/2021/02/26/zoomx-2.1-disable-resource-autoloading/
https://modzone.ru/blog/2021/02/26/zoomx-2.1-disable-resource-autoloading/
modzone.ru
ZoomX 2.1. Виртуальные страницы | Зона разработки
ZoomX 2.1.1. Исправлены некоторые баги, в том числе в RESTful API механизме.