Друзья, первая версия моего компонента для альтернативного подхода к использованию шаблонизаторов PHP готова. Пакет находится на модерации в modStore. Надеюсь, ребята быстро одобрят. Последние дни занимался документацией, переводами и т.п. Так как свободного времени у меня мало, это дело затянулось. В дальнейшем планирую написать пару статей и снять видео по использованию данного компонента. Задача на ближайшее время — доделать пакет Blade для подключения к ZoomX.

В общем, смотрите, пробуйте, комментируйте. Давайте сделаем MODX более современным.

Update 17.11.2020

1   1803

Комментарии ()

  1. Семён 25 октября 2020, 12:48 # 0
    Уже пробую Ваш компонент, всё работает быстро. Не могу понять только логику обработки 404 ошибок:

    При режиме роутинга = 1, всё понятно, работает настройка MODX error_page, в ней указан ресурс, который будет использован для 404 ошибок, но он показывается с тем шаблоном, который указан в админке, то есть zoomx не перехватывает его, если у ресурса 404 указать пустой шаблон — получим дефолтную браузерную страницу 404
    Получается, что при этом режиме роутинга, нельзя указать свой smarty шаблон?

    При режиме роутинга = 2, я так понимаю, настройка error_page игнорируется, и у меня показывается пустой базовый шаблон base.tpl

    Вопрос: как обрабатывать ошибки 404 при разных режимах роутинга?
    1. Семён 25 октября 2020, 13:06 # 0
      С режимом = 2 я разобрался, не увидел сначала настройку zoomx_default_tpl, в ней указал шаблон 404 страницы и всё заработало как надо.
      Остался вопрос по режиму = 1, как в нём указать свой смарти шаблон для ресурса 404?
      1. Сергей Шлоков 25 октября 2020, 18:18 # 0
        В режиме STRICT также нужно указать в настройке «error_page» id страницы ошибки. И у этой страницы или заморозить URI со значением 404 (чтобы соответствовало роуту), или создать роут с таким же URI как у страницы ошибки.

        Получается, что при этом режиме роутинга, нельзя указать свой smarty шаблон?
        В режиме MIXED никак нельзя указать Smarty шаблон. В этом и смысл режима.

        Настройка zoomx_default_tpl нужна только в том случае, если не найден роут и некуда перенаправить запрос — не найдена страница ошибки. Должно срабатывать крайне редко. Ибо часто указывается стартовая страница.
    2. Vladimir 26 октября 2020, 10:34 # 0
      вот же, вроде на все везде подписан, а пропустил! ))
      1. Сергей Шлоков 26 октября 2020, 10:42 # 0
        Предположу, что выходные прошли хорошо;)
        1. Vladimir 26 октября 2020, 10:46 # +1
          И это правда!
          Хотя не со стаканом в руке, но зато с паяльником!!!
          Так. Загрузил ZoomX. Ща позырю.
          1. Сергей Шлоков 26 октября 2020, 22:02 # 0
            А я на выходных сварку осваивал. Паяльник освоил ещё в детстве в электро-техническом кружке. Там же и платы травили.:r
            1. Vladimir 26 октября 2020, 22:09 # 0
              видимо, паяльник осваивали в одно и тоже время)) Правда, я без кружков, у меня дедушка шефствовал надо мной («Возьмем немного элекричества из розетки, говорит дедушка заряжая конденсатор, вот, теперь его можно пощупать… Ну, как? Видишь, мы вязли очень мало, а бъёт ощутимо!»
              1. Сергей Шлоков 26 октября 2020, 22:26 # +1
                Золотые времена!

                Где-то читал, что в случае апокалипсиса выживет 10% специалистов, которые не дадут вернуться человечеству в первобытный строй. Думаю, ещё 10 лет, и специалистами будут считаться менеджеры и блогеры. Кто из современных детей разбирал аккумулятор и плавил свинец?:(
      2. Vladimir 28 октября 2020, 18:30 # +1
        Просто наблюдение: поставил на готовый проект (2.8.1, на всякий случай, упомяну версию), но решил глянуть как удаляется, а удалить пакет ZoomX не получилось, только откат назад из резервной копии.
        1. Сергей Шлоков 28 октября 2020, 20:53 # +1
          Поставил на тестовый сайт. Деинсталяция прошла нормально, но кэш не очистился, что вызывало ошибку 500. Удалил пакет, кэш очистился и всё заработало. Похоже менеджер пакетов глючит. Я сегодня пробовал ставить Fred. Менеджер не смог поставить зависимости, выдавал ошибки.

          Будем ковырять почему кэш не чистится. Спасибо!

          П.С. Тебе надо было принудительно удалить пакет. Или просто очистить кэш.
          1. Сергей Шлоков 31 октября 2020, 16:33 # +1
            Выяснил, баг менеджера. Если у плагина есть событие OnCacheUpdate, то кранты. MODX пытается вызывать уже удалённый плагин, возникает ошибка, которая корректно не обрабатывается.:w Придётся костыль делать до багфикса MODX.:(
          2. shock 18 ноября 2020, 15:33 # +2
            Спасибо Сергей за ваши труды!
            Видимо MODX не такой уж и отсталый движок как пишут некоторые:)
            Гибкость и вложенный труд в компоненты дают второе дыхание.

            Собственно вопрос, Сергей, не увидел в документации один нюанс: шаблоны можно создавать только с расширением tpl или возможно с html. Такое желательно, потому что использую препроцессор PUG.
            Что скажите?
            1. Сергей Шлоков 18 ноября 2020, 16:15 # 0
              Смарти пофиг на расширение. Ему нужен только контент. А вот Блейду не пофиг.
            2. Sergey Lebedev 18 декабря 2020, 13:36 # 0
              Сергей, спасибо за компонент. Хочу у вас поинтересоваться, как у опытного человека в modx.
              Я сейчас выбираю между modx и evolution cms. Интересно ваше мнение, о ней, преимущества и недостатки в сравнении с modx. Чем она не нравится, почему не перешли на неё?
              Ведь там уже есть то, что вы реализовали в zoomx — views на блейде + ещё и контроллеры.
              Кажется, что разработчики идут по тому пути, по котором вы хотели бы, чтобы шёл modx.
              И так как все это не в виде дополнения, а в виде ядра от разработчиков evo, то предполагаю, обладает бОльшими возможностями.
              1. Сергей Шлоков 19 декабря 2020, 06:11 # 0
                Если бы я занимался сайтостоительством, то может быть и обратил бы внимание на Evolution для простых сайтов. Но мне интересно заниматься именно системой. Я уже выбрал (6 лет назад) MODX Revolution, хорошо знаю её изнутри, знаю её возможности и недостатки, у меня для неё много компонентов. Зачем мне заново погружаться в дебри новой системы, тем более, что она ещё пилится и пользователей у неё в разы меньше чем у Рево — только СНГ пространство. С поддержкой и документацией вопрос тоже пока открытый. Ребята сделали Evo всё-таки больше для себя — это их инструмент для создания сайтов. И они большие молодцы. Но всё же они никогда не сравнятся с экосистемой MODX Revolution — большое международное сообщество, куча маркетплейсов, хостинги, огромное активное сообщество в рунете. modStore.pro позволяет разработчику монетизировать свои разработки, modhost.pro легко развернуть сайт на MODX Revo.

                Вот моя позиция. А что выбрать решать Вам!

                Ну и напоследок. Я сайты на MODX Revolution не делаю. Я делаю компоненты для него. Поэтому мне хочется, чтобы MODX развивался, и мне и дальше было чем занять своё свободное время. Хотя я могу писать компоненты и для Laravel. Но MODX всё-таки роднее:)
              2. Sergey Lebedev 19 декабря 2020, 12:11 # 0
                Спасибо за ответ, Сергей!
                Если не секрет, вам удаётся зарабатывать на компонентах для модкс, как основной заработок или это скорее хобби в свободное время от работы?
                Почему спрашиваю? Потом что, мне тоже нравится делать что-то более сложное и интересное по программированию, но приходится делать то, что продаётся и что не очень интересно — обычные сайты.
                1. Сергей Шлоков 19 декабря 2020, 13:29 # 0
                  У меня нет такой цели. Для меня это хобби.

                  Если будете создавать востребованнные компоненты, то можно обеспечить небольшую прибавку к доходам в районе 20 тысяч. Но я бы на это не ставил. Это чисто приятный бонус, а не основной доход. Но может Вы предложите что-то такое, что и на квартиру хватит;)
                  1. Sergey Lebedev 19 декабря 2020, 16:01 # 0
                    Сергей, а какой ваш основной вид профессиональной деятельности? Просто интересно)
                    1. Сергей Шлоков 19 декабря 2020, 20:02 # 0
                      Таксист:r
                      1. Sergey Lebedev 19 декабря 2020, 21:10 # 0
                        Не верю)) д
                  2. Эдуард 10 апреля 2021, 20:33 # 0
                    Попробовал установить, несколько раз пересмотрел видео. Не видит шаблона, выдает 404, если установлен режим 2, либо изначальный от modx, если установлен режим 1. Различные эксперименты с роутингом не помогли.
                    1. Сергей Шлоков 10 апреля 2021, 20:53 # 0
                      Роуты должны совпадать с uri документом (не с алиасом, а именно с uri, т.е. с суффиком). Самая частая ошибка — слэш в начале роута.
                      1. Эдуард 12 апреля 2021, 21:41 # 0
                        Все таки не работает у меня. По поводу url. Не работает даже базовый url.
                        $router->get('/', function() use ($modx) {
                            return viewx('index.tpl');
                        });
                        и такой тоже
                        $router->get('about', function() use ($modx) {
                            return viewx('index.tpl');
                        });
                        При этом если удалить zoomX, то все работает нормально и ЧПУ работают корректно тоже. Но если установить и даже поставить режим роутинга 0. Отображается только главная страница независимо от url в адресной строке. Может надо что то в .htaccess поменять (у меня просто базовые настройки)? Но с другой стороны ЧПУ же работают без приложения.
                        1. Сергей Шлоков 13 апреля 2021, 13:06 # 0
                          Проверьте журнал ошибок. Где-то что-то нарушено.
                          1. Эдуард 13 апреля 2021, 19:35 # 0
                            Да ошибки есть, сначала были ошибки копирования в файлы из приложения zoomX, хотя я использую самую обычную установку modx. Затем а сменил в установке права с 755 на 775. После этого ошибок копирования не было, но есть такая ошибка
                            (ERROR in xPDO::getService @ /Applications/MAMP/htdocs/zoomX/core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
                            И да, по прежнему при установке компонента перестают работать переходы, а если поставить режим 2, то ни только выдает 404
                            1. Сергей Шлоков 13 апреля 2021, 20:03 # 0
                              Мне сложно понять причину. Что-то Вы делаете не так. Вот попробовал на тестовом сайте. Поставил ZoomX, раскомментировал роут, открыл главную страницу. Всё работает.

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

                    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.