Предложения по MODX

Коли уж так случилось, что MODX активно взялись совершенствовать, предлагаю озвучить предложения и пожелания для повышения функциональности и гибкости. Я уже давно для себя отметил несколько моментов, которые упростили бы разработку. Давайте пробежимся по ним.

Подключение скриптов и стилей

Тут нужно сделать достаточно прилично. Для начала я бы предложил заменить свойство modX::loadedjscripts на класс репозитория, у которого есть методы add, delete, has и т.д.

Следом добавить событие OnRegisterAssets, которое вызывалось бы сразу после парсинга и перед регистрацией скриптов. Т.е. после события OnParseDocument и перед событием OnWebPagePrerender. Это дает разработчику возможность управлять подключенными скриптами и стилями — проверить, добавить, удалить и т.п. Или как вариант добавлять ассеты после события OnWebPagePrerender. Тогда новое событие не нужно.

Дальше я бы поправил логику добавления скриптов. Сейчас если в контенте нет тегов head или body, то и скрипты не подключаются. Мне кажется, что было бы лучше добавлять ассеты в начало контента, если нет тега head, и в конец контента, если нет тега body.

Автопубликация ресурсов

У меня, конечно, не очень большой опыт по разработке сайтов, но мне кажется, что с автопубликацией сильно перемудрили. При каждой загрузке страницы запускается целый блок проверок. Может просто изменить логику — считать опубликованными не только те, у которых стоит галка «Опубликован», но и те, у которых дата публикации меньше текущей. Это значительно упрощает логику. А ещё +1 к оптимизации.

Метод modX::getResponse()

Требует рефакторинга. Вообще странно в ответ на getResponse получать TRUE или FALSE. Я понимаю, что никто в него не лазает. Да и я то в него заглянул, когда пытался подменить класс, позволяющий изменить логику формирования ответа — убирал стандартный парсер и запускал только феном.

Это только то, что всплыло в памяти. Вспомню ещё, добавлю. Думаю, найдутся ещё предложения. Выкладывайте. Раз уж Василий попал в команду главных разработчиков MODX, то становится проще продвинуть наши пожелания.

Update 02.04.2018. Ещё вспомнил. Было бы неплохо в методе modX::addEventListener() разрешить указывать не только id плагина, но и замыкание. Т.е. не нужно создавать плагин.
// Сейчас так
$modx->addEventListener($event, $pluginId)
// Разрешить так
$modx->addEventListener($event, function(){...})
Это во мне программист так говорит. )
Сергей Шлоков
01 апреля 2018, 09:07
modx.pro
1 734
+9
Поблагодарить автора Отправить деньги

Комментарии: 58

Павел Гвоздь
01 апреля 2018, 13:48
+2
Думаю, самый ожидаемый ответ на все пожелания — modx.pro/news/14903/#comment-95329
    Сергей Шлоков
    01 апреля 2018, 14:05
    +2
    Это же не багфиксы. Эти предложения нужно для начала обсудить.
    Stan Ezersky
    01 апреля 2018, 15:07
    0
    Ну тут действительно по вопросам ядра нет смысла что-то расписывать, разве что обсудить. Может кто и возьмётся за написание PR'ов
      Иван Климчук
      02 апреля 2018, 22:23
      +2
      Можно написать простой прототип решения, чтобы было о чем общаться предметно, а уже потом его развить. Так то у команды есть свой план, остальные вольны делать что хочется. Я например пилю поддержку postgres (не самая простая задачка), кому интересно: github.com/modxcms/xpdo/pull/136/files
        Сергей Шлоков
        02 апреля 2018, 23:00
        0
        Ну Postgres для MODX наверно великоват будет. Вообще в рекомендациях указана MariaDB.

        П.С. Вот интересно, если бы у Майкла Видениуса было больше детей, сколько бы SQL серверов он написал? У него 2 девочки по имени My и Maria (MySQL и MariaDB).
          Иван Климчук
          02 апреля 2018, 23:05
          0
          MariaDB, как и Percona (и mysql) — это одно семейство, причем практически взаимозаменяемое (если использовать общий стандарт, а не фичи отдельных движков). Postgres не великоват, но в 21 веке не иметь поддержки pgsql — форменный бардак. Правда иногда случаются и «веселые» вещи, когда нужно поддерживать обе ветки (это я про свой рабочий OS проект).
      Олег
      02 апреля 2018, 10:37
      -4
      Чего больше всего не хватает в modx так это унифицированного интерфейса для прикрутки платежных систем. Minishop и модули к нему не в счет. К примеру я бы сделал модули платежей к tickets, для платного размещения постов, например при построении сайта объявлений. Да и в целом это должно не зависеть от модулей. А сейчас как я вижу, такой интерфейс есть только у minishop
        Sem
        Sem
        02 апреля 2018, 10:48
        +1
        Слишком частный случай, чтобы реализовывать это в универсальной CMS из коробки.
        miniShop2 на то и был создан, чтобы добавить коммерческий функционал в систему и дальше расширять её как душе угодно.
        Данный топик скорее предполагает обсуждение и предложение идей общих для движка в целом.
          Олег
          02 апреля 2018, 12:29
          0
          В том то и дело, что интерфейса как такового нет вовсе, модуль на бронирование комнат с онлайн оплатой, базируется на интерфейсах minishop2. Разве это норма, разве это частное решение.
            Павел Гвоздь
            02 апреля 2018, 14:02
            +1
            Относительно базового функционала фреймворка, да, частное. То, что вы хотите, реализуется отдельным компонентом.
        Misha Bulic
        02 апреля 2018, 11:01
        +2
        Если сравнивать с вордпрессом, то здесь не хватает работы с изображениями.
        Можно сделать всё как там. Загрузка изображений к записи, медиабиблиотека и прочее.
          Павел Гвоздь
          02 апреля 2018, 14:02
          +1
          А ТВ с типом «Изображение»?
            Misha Bulic
            02 апреля 2018, 14:12
            +1
            Тв с типом «Изображение» надо добавить в поля, присвоить к шаблону, драг-дроп не работает(вроде). А если надо несколько изображений? Простенькая галерея? Как быстро найти изображение от другой записи? Медиабиблиотека для всех загруженных файлов.
            Это в большей степени относиться к текстовым редакторам. Естественно для шаблона так и останутся тв поля.
              Pavel Zarubin
              02 апреля 2018, 17:59
              0
              Большую часть хотелок вами описанных покрывает image+
              Бонусом он содержит еще и редактор изображения прямо в админке после загрузки
                Misha Bulic
                02 апреля 2018, 18:09
                0
                Общую библиотеку медиа он не даёт. Опять же это доп поле, если мне нужно в одной записи 2 картинки вставить в текст, а в другой 10.
                В какой то ветке читал, что хотят редактор текста какой то стандартный по умолчанию добавить, вот к нему библиотеку медиа было бы как раз замечательно.
                  Pavel Zarubin
                  02 апреля 2018, 18:14
                  0
                  если мне нужно в одной записи 2 картинки вставить в текст, а в другой 10
                  Используй MIGX и подключи туда это доп. поле. А на счет медиа библиотеки не знаю что мешает сделать источник файлов на какую то одну папку и как раз при открытии файлового менеджера менеджер будет видеть все фотографии в этой папке, другое дело что все превью каждый раз генерируются заново, это не хило так бьет по нагрузке, а некоторые хостинги вообще банят за ДДОС
                    Misha Bulic
                    02 апреля 2018, 18:18
                    0
                    Вот именно, подключи мигикс, настрой и прочее.
                    А хочется из коробки простое, готовое решение для добавления картинок в контент.
                      Pavel Zarubin
                      02 апреля 2018, 18:22
                      +1
                      Так и modx не совсем CMS, раньше modx позиционировал себя как CMF, но видимо понятие CMF никому не было понятно, по этому поменяли на CMS.
                      В том то и прелесть MODX'a что можно делать так, как тебе нужно и не уткаться в постоянные ограничения. К примеру один мой клиент с новостным сайтом наоборот прется от файловой структуры, они аккуратно кладут по папочкам все фотографии, фотографии с путином в папочку — putin, корабли в корабли и т.д.
                      Всем не угодить делая ограничения, а вот развязав руки — можно
                        Misha Bulic
                        02 апреля 2018, 18:27
                        0
                        Вы правы, MODX как раз для этого и сделан, но моё предложение никак не отменяет вашего подхода. Просто это базовый функционал, который используется на 90% сайтов. И хотелось бы его видеть при установке системы.
                          Sphinx
                          03 апреля 2018, 23:49
                          0
                          Это на ваших 90% сайтах используется, а на моих 100% не используется и не будет, пока обязаловом не введут.
                          Сейчас можно сделать, как душа желает. А для вашего способа подойдет отдельный плагин, сниппет и т.п., т.е. все то что расширяет базовый функционал.
                        Pavel Zarubin
                        02 апреля 2018, 18:24
                        +1
                        подключи мигикс, настрой и прочее.
                        Самое главное, что это делается в два клика и 10 минут, а вот представь сколько придется потратить времени чтобы обойти медиатеку и вернуть файловую структуру? Явно не 10 минут
                          Pavel Zarubin
                          02 апреля 2018, 18:45
                          +3
                          Философия MODX изначально была и есть в модульной структуре, и именно это реализовано я считаю отлично, по умолчанию даже редактор кода не идет в коробке так то. Что происходит с wordpress'ом от десятка плагинов? Wordpress начинает дико лагать от админки до фронта, что происходит с modx? А ничего не происходит т.к. он изначально делался по типу «нужен такой функционал которого не хватает? Напиши его или установи готовое решение»
                          Реализовать медиатеку как в wordpress'е модулем не сильно сложно, было бы кому и было бы зачем.
                          На данный момент главная проблема modx'a в том, что отсутствует адекватная документация для разработчиков, если ты хочешь реализовать свой тип тв, то тебе не в доки надо лезть, а читать либо исходники других дополнений, либо исходники modx. А была бы нормальная документация с описанием как и что взаимодействует между собой там бы уже и ленивые разработчики разного качества подтянулись бы. А то многие ответы на вопросы до сих пор приходится вычитывать в вопросах на mpdxpro, а в англоязычном сегменте они вообще не выбиваются
                          Именно по этому мы кстати можем наблюдать феномен на modxpro что если кто-то постит хоть чуть-чуть адекватный и полезный простой и очевидный кусок кода по расширению стандартного функционала эта заметка сразу набирает с десяток избранного, потому что новые разработчики собирают информацию по крупинкам и каждый объясненный кусок кода — как глоток свежего воздуха.
                          Я собственно сам собирал так информацию и до сих пор собираю и/или пользуюсь уже написанными статьями.
                          Чтобы не быть голословным попробуйте загуглить на английском как добавить поля пользователя в modx, чтобы они не в json хранились а адекватно и в таблице выводились, не думаю что вам даже упоминание такого вопроса встретится. По этому функционал расширения огромен и прост, но вот описать его в доках никто совершенно не спешит
                          Посмотрите доку vuejs, посмотрите доку пресловутого октября, да там есть ответы на любые вопросы и никто не пишет статьи о том, как расширить профиль пользователя, просто потому, что незачем об этом писать, в доках все написано
                          Уф, что-то меня понесло, простите за огромную пелену текста
                Константин
                02 апреля 2018, 17:36
                0
                Очень дельное предложение! Очень удобно в текстовом редакторе вордпресс добавлять изображения в текст. В Modx этого очень не хватает.
                  Stan Ezersky
                  03 апреля 2018, 09:30
                  +1
                  Так поставьте CKeditor или аналогичный и добавляйте, в чём проблема?:)
                Pavel Zarubin
                02 апреля 2018, 18:01
                +2
                Отпишусь и я:
                Очень хотелось бы доработать модуль личных сообщений в modx, а то у него даже событий нет. Ну или хотя бы не выпиливать его. Очень часто используется когда делаешь проект с социальным функционалом
                  Иван Климчук
                  02 апреля 2018, 22:27
                  0
                  Он (модуль сообщений) будет выпилен как раз в угоду тому, чтобы запилить нормальные сообщения в виде отдельного компонента, который можно обновлять и дорабатывать и обновлять независимо от самого MODX.
                    Alexander V
                    03 апреля 2018, 01:16
                    0
                    До сих пор не запилили. И поводов особо не видно.
                      Иван Климчук
                      03 апреля 2018, 10:29
                      +2
                      У меня в планах сразу после postgres. Желающие помочь (описать, что должно быть в компоненте сообщений обязательно, что хотелось бы и т.д.) — you're welcome!
                        Stan Ezersky
                        03 апреля 2018, 11:35
                        0
                        Так Modstore спонсирует разработки, напишите им и в вперёд!:)
                          Иван Климчук
                          03 апреля 2018, 11:49
                          0
                          Вопрос не в помощи, я могу и так написать, вопрос в пожеланиях по функция, что в нем должно быть.
                          Alexander V
                          03 апреля 2018, 12:53
                          0
                          У меня в планах сразу после postgres.
                          Не перебор?
                            Иван Климчук
                            03 апреля 2018, 12:55
                            0
                            Вы о чем?
                              Alexander V
                              03 апреля 2018, 12:58
                              0
                              О Postgres
                                Иван Климчук
                                03 апреля 2018, 12:59
                                0
                                А почему это перебор?
                                  Alexander V
                                  03 апреля 2018, 13:06
                                  0
                                  1. не на всех хостингах есть
                                  2. не все умеют с posgres работать
                                  Недавно переносил Yii2 с posgres у провайдера Jino. Не понятно, что они там намудрили в своих конфигурациях, но подключиться так и не смог. В итоге проще было настроить VDS.
                                    Alexander V
                                    03 апреля 2018, 13:08
                                    0
                                    Справедливости ради, надо отметить, Jino весь такой, через одно место замороченный.
                                      Иван Климчук
                                      03 апреля 2018, 13:23
                                      0
                                      Таки SQLSRV который сейчас поддерживается, но используется еще реже, чем postgres, то у последнего больше прав. Касательно хостинга, он тоже бывает разный и не исключено, что есть клиенты, у которых сервисы построены на pgsql, но создать простой сайт рядом они не могут, потому что нужно ставить еще и mysql.
                                        Alexander V
                                        03 апреля 2018, 13:29
                                        0
                                        Я говорю о массовом применении. 99% это MySQL и обычный шаред.
                                        Иван Климчук
                                        03 апреля 2018, 14:23
                                        +1
                                        Далеко не 99%, а узость применения только на MySQL как раз и не дает использовать MODX шире, хотя возможности и запросы есть.
                                        Руслан Алеев
                                        03 апреля 2018, 14:17
                                        0
                                        Здравствуйте, Иван, спасибо за ваш вклад в MODX 3, приятно осознавать, что проект оживает!
                                        Вопрос/предложение: почему в админке MODX Revo ссылки на чанки и другие элементы в дереве странно генерятся, их нельзя открыть колесом мыши (ссылки, как я понимаю, скриптовые). Будет ли такое в MODX 3 или возможно это исправить, есть в планах?
                                        Спасибо за ответ!
                                        Василий Столейков
                                        03 апреля 2018, 14:24
                                        +1
                                        Ctrl+клик
                                        Иван Климчук
                                        03 апреля 2018, 14:25
                                        0
                                        В любом динамическом дерево ссылки быдут скриптовыми. Но насколько я помню, этот момент исправляли и открыть средней кнопкой в новом окне можно (могу ошибаться, у меня нет колеса на мыши, потому не пользуюсь).
                                        Руслан Алеев
                                        03 апреля 2018, 14:32
                                        0
                                        Нет, не исправили, в каждой версии первым делом проверяю, пока не работает :) Где-то читал, что это в google chrome что-то поменяли.
                                        Надеемся, будет в MODX 3 работать.
                                        Ctrl + клик, конечно, работает, но это уже усложнение.
                                        Иван Климчук
                                        03 апреля 2018, 14:34
                                        0
                                        Если это поменяли в google chrome, то работать не будет и в 10 версии. Выше головы то не прыгнешь. Вообще хорошо бы написать issue на эту тему на github — github.com/modxcms/revolution/issues/new, чтобы не потерялось.
                                        Руслан Алеев
                                        03 апреля 2018, 14:50
                                        0
                                        Вроде решение есть и внедрено github.com/modxcms/revolution/pull/13103 но так и не работает, по-моему, или я чего-то не понимаю.
                                        Иван Климчук
                                        03 апреля 2018, 14:56
                                        0
                                        Проверьте настройки мыши у себя в системе, может кнопка переопределена и какой-то другой код возвращает или может плагин какой стоит. Тут вариантов может быть много, наверняка сказать сложно.
                                        Руслан Алеев
                                        03 апреля 2018, 15:09
                                        0
                                        Спасибо, проверю обязательно, но, по-моему, я проверял на разных мышах и разных машинах — не работает.
                                        В любом случае, спасибо за помощь. Вы, если время будет, посмотрите тоже, возможно issue все-таки некорректное.
                                        Заранее спасибо.
                                        Руслан Алеев
                                        15 апреля 2018, 14:16
                                        1
                                        +2
                                        Здравствуйте, Иван, давеча мы обсуждали дополнительный функционал и об ненужности внедрения излишнего функционала в MODX3, однако я имел в виду то, что есть популярные компоненты, которые не «усложняют», а скорее «исправляют» MODX, к примеру, есть дополнение «AutoTemplate» которое при создании нового ресурса ставит ему шаблон как у его соседних ресурсов (если таковых нет, то шаблон родителя) — крайне логичное поведение по-моему.
                                        Я думаю, все же стоит оценить самые скачиваемые дополнения и, возможно, внедрить какие-либо полезные функции в MODX3.

                                        Персональный список таких дополнений, которых, по-моему, не хватает:
                                        — AutoTemplate — о нем выше;
                                        — filetranslit — транслитерация загружаемых файлов, есть транслитерация псевдонимов, почему не быть и файлам;
                                        — UpgradeMODX — обновление MODX;
                                        — hideSource — скрытие медиа-источников файлов из дерева;
                                        — minifyHTML — удаление лишних табов и пробелов при генерации шаблона в браузере;
                                        — MinifyX (Возможно) — объединение и сжатие js и css.

                                        Еще хотелка — возможность создавать конфиги настроек, например, для пакетной загрузки компонентов — один раз загрузил нужные компоненты, экспортировал конфиг на будущее и в будущем загружаешь конфиг и дополнения ставятся сразу толпой :) для системных настроек тоже такую возможность внедрить бы (опять же функционал такой в MODX уже есть, но работает в «Политиках доступа»).

                                        Я понимаю про концепцию MODX как CMF и про излишний функционал, но, повторюсь, некоторые компоненты логичны и жаль, что их нет из коробки. К примеру, виджет обновления MODX в 3 версию внедряют (по скринам хотя бы :) ).

                                        Надеюсь, вы прислушаетесь к комментариям, и MODX воспылает новыми красками! Спасибо за ваш труд!

                                        p.s. Стоит помимо популярных и скачиваемых дополнений также оценить и рынок конкурентов из популярных CMS/CMF.
                                        Иван Климчук
                                        15 апреля 2018, 21:55
                                        +3
                                        Нет, не стоит. Вернее какие-то моменты не мешало бы, да, вроде того же обновления. Но AutoTemplate — частный случай, что делать, если мне нужно наоборот? Ставить AntiAutoTemplate? filetranslit вероятно, хотя тоже спорно.
                                        minifyHTML, minifyx — однозначно мимо, потому что это не ворпрес, где все уже сделали за тебя, сиди пиши свои мнения на весь мир. Кто-то может вообще все собирать с помощью gulp/grunt/webpack, зачем ему тянуть вместе с системой подделие, которое уже пару лет как не поддерживается нормально (движок минификации на php в minifyx).
                                        Установка пакетов за раз вероятно будет когда-то, но там есть свои ньюансы. Но уже сейчас это можно делать с помощью gitify.
                                        В будущих версиях MODX планируется удалить еще больше вещей, которые не являются остро необходимыми для ядра. Сейчас кодовая база самого MODX слишком большая и поддерживать ее в рабочем состоянии довольно затратная задача, при том, что энтузиастов помогать в этом как-то нет. Если все эти хотелки внедрять в ядро, это увеличивает энтропию, а как следствие больше ошибок, больше граничных случаев, запросов от пользователей и прочее, что делает разработку самой системы очень медленно, да и мелкую фичу можно ждать полгода, потому что кроме нее еще десяток крупных, а релизить MODX только ради мелочи — очень затратно. Все же я придерживаюсь принципов бережливого производства, так как они самые адекватные и понятные всем.
                                        Вынесение пользовательких функций в отдельные дополнения выгодно по многим пунктам: даст возможность более плотно работать над ядром системы и быстрее выпускать по настоящему стоящие релизы, не отвлекаясь на поддержку пользовательских функций; отдельные дополнения можно релизить независимо и выпускать патчи и новые возможности намного быстрее, чем релизы ядра; легче привлечь людей в качестве мейнтейнеров на отдельные дополнения, которые будут заниматься только ими и активно их развивать (т.е. делегация полномочий). Надеюсь моих доводов достаточно для понимания текущей ситуации.
                                        Руслан Алеев
                                        15 апреля 2018, 22:32
                                        0
                                        Да, комментарии понятны. «Делегация полномочий» — подход грамотный, но и не всегда полезный. «поддерживать ее в рабочем состоянии довольно затратная задача, при том, что энтузиастов помогать в этом как-то нет.» — нет энтузиастов в виду того, что порог вхождения большой, а большой он и в том числе из-за того, что функционал делегирован. Помню, при первом знакомстве с MODX после попсовых CMS я не мог понять как меню вывести, я даже не знал откуда можно скачать дополнения (на тот момент MODX ставился без шаблона с полезными ссылками, просто белый экран, что смущало) :) Ну это к слову…
                                        Возможно, кстати, стоит расширить базовый шаблон, который ставится с MODX и там указывать популярные дополнения, которые помогут новичкам освоиться на старте (редакторы, меню, ресурсы, формы) или виджет популярных дополнений, чтобы в админке был предустановлен.
                                        Система же качественная, но неприветливая уж.
                                        Иван Климчук
                                        15 апреля 2018, 22:58
                                        +1
                                        Да, я это не дописал в первом комментарии. Это пока не принято официально, но было мое предложение во время обсуждения, чтобы сделать системные дополнения (типа автообновление, редактор картинок, система сообщений и прочие) предустановленными при установке самого MODX (не так как в Evo, когда идут вместе в архиве, а именно через API установщика). Так же этот список должен быть конфигурируемым, чтобы его можно было переопределить в момент установки (положить свой файл с конфигом, например). Меня потом дополнили, что в случае ошибок с сетью или когда установка делается offline без доступа к репозиторию, выводить сообщение о невозможности установить дополнения и пропуску этого шага.
                                        Руслан Алеев
                                        15 апреля 2018, 23:30
                                        0
                                        Здорово! Было бы круто, если внедрите в итоге, огонь. Ну и виджет дополнений стоит сделать, тем более, что там есть менее полезные виджеты, типа «погода» (судя по скринам).
                                        Спасибо, Иван, за информацию.
                            Pavel Zarubin
                            03 апреля 2018, 14:25
                            +2
                            Меня лично все устраивало и в старых сообщениях, очень понятная и простая модель, не хватало разве что уведомления о новых сообщениях при входе в админку и событий стандартных по типу до сохранения/после сохранения, также было бы круто добавить в найстройки настройку класса-обработчика
                      Вася
                      03 апреля 2018, 21:58
                      +3
                      Мечтаю о таком редакторе в modx imperavi.com/redactor/ даже бы скинулся на покупку лицензии
                        Stan Ezersky
                        03 апреля 2018, 22:01
                        0
                        Лицензия на 1 сайт. Как понять скинулся бы?
                          Вася
                          03 апреля 2018, 22:03
                          0
                          OEM
                          Неограниченные домены и поддомены
                          Неограниченные разработчики
                          Использование в коммерческих продуктах
                          Интеграция с загружаемыми продуктами
                          Интеграция с продуктами SaaS
                          Интеграция с продуктами с открытым исходным кодом

                          Насколько знаю сообщество разработчиков Yii купили такую лицензию и это позволяет пользоваться редактором в Yii проектах
                           PS    могу ошибаться
                          Владимир Дремучий
                          06 апреля 2018, 09:39
                          0
                          Разве не он? www.modmore.com/redactor/
                            Иван Климчук
                            15 апреля 2018, 21:43
                            +1
                            Пользуйтесь, зачем мечтать? www.modmore.com/redactor/
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                            58