MODX Revolution

В 2009 году MODX был выпущен как Evolution и Revolution . Evolution был создан и поддерживался на оригинальной кодовой базе, в то время как Revolution был полностью переписан. Эта статья основана на Revolution.

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

Ключевые выводы

  • MODX — это гибко настраиваемая CMS, идеально подходящая для разработчиков, предпочитающих создавать собственные дизайны и структуры, предлагающая надежные функции безопасности.
  • В отличие от более удобных для пользователя платформ, таких как WordPress, MODX больше подходит для тех, кто обладает техническими навыками в PHP и HTML, функционируя скорее как фреймворк управления контентом (CMF), чем как простая CMS.
  • Платформа поддерживает различные типы серверов и баз данных, использует мощную систему тегов для управления контентом и обеспечивает обширную настройку бэкэнда через интерфейс менеджера.
  • MODX — это проект с открытым исходным кодом и сильным сообществом, предлагающим обширную документацию, форумы и профессиональную поддержку, что делает его надежным выбором для долгосрочных проектов.
  • Несмотря на свои преимущества, MODX требует серьезного обучения, а его кодовая база несколько устарела, что может представлять сложность для некоторых разработчиков, привыкших к более современным средам разработки.

Мы встречались?

Если вы никогда раньше не слышали о MODX, просто поймите, что это долгоживущий и довольно мощный движок, который часто сравнивают с такими, как Joomla и Drupal. Некоторые также сравнивают его с WordPress, но это не одно и то же. WordPress предназначен для использования из коробки нетехническими людьми. Фактически, некоторые описывают MODX как лучшую CMS, которую вы никогда не использовали .

В целом я бы охарактеризовал MODX как фреймворк для разработчиков , а не как готовый конструктор сайтов point-n-click. MODX не будет лучшим выбором CMS для человека без навыков PHP или HTML. Нет конструкторов меню или списков модулей, которые можно перетаскивать в предопределенные позиции темы.

MODX может быть лучше описан как CMF (контент-менеджмент-фреймворк), чем CMS. Вы можете использовать только API для управления конечными точками и скриптами без страниц или постов вообще, если хотите.

Копаем глубже

MODX, как и многие популярные фреймворки, построен на PHP. Он может работать на популярных серверах, таких как Apache, IIS, Lighttpd и nginx. Его база данных по выбору — MySQL, и он использует xPDO в качестве ORB (объектно-реляционного моста). xPDO построен непосредственно на PDO и использует шаблон стиля активной записи для доступа к базе данных. Его можно сравнить, например, с Doctrine или Propel.

Менеджер создан с помощью ExtJS, шаблонов Smarty и собственного API MODX. Редактирование самого менеджера и его панелей управления, меню и других функций — это возможность, встроенная прямо в пользовательский интерфейс. У вас есть точный контроль над всем в менеджере, что касается того, к чему вы хотите предоставить доступ своим клиентам.

Пользовательские меню и очень детальные ACL (списки контроля доступа) дополняют ваши внутренние опции. Безопасность, вероятно, одна из главных функций, которые поклонники MODX любят в нем, хотя полное ее понимание требует значительной кривой обучения.

MODX сам по себе поддерживается LLC , которая является MODX, LLC. Они предлагают другие продукты, такие как облачный хостинг и консалтинговые услуги. MODX не является SGP (проектом какого-то парня); он имеет немного большую выносливость, чем некоторые другие современные CMS, которые просто появились, созданы одним человеком, управляются в свободное время. Вы можете быть уверены, что если вы выберете MODX для своих проектов, он не исчезнет в ближайшее время, и хорошая поддержка доступна.

Образование и документация

MODX хорошо документирован, включая видео , книги и стандартные форумы сообщества . Форумы, кстати, построены на самом MODX, с использованием свободно доступных дополнений, и вы можете найти темы, которым более 10 лет, которые все еще живы.

Установка

В настоящее время MODX устанавливается только путем загрузки ZIP-архива и распаковки его в веб-папку.

Скачать MODX

Что касается обновлений, то в основном продукте нет самообновляющегося. Однако есть дополнение, которое делает обновление за вас так же легко. Все дополнения можно обновить через менеджера.

Проект управляется на GitHub , который всегда будет содержать последние снимки проекта. Вы можете установить его таким образом, но загрузка с основного сайта является предпочтительным и обычным методом.

Почему это круто

MODX — это что-то вроде CMS для продвинутых пользователей. Из коробки вы получаете пустой шаблон для разработки и сотни настроек для изменения того, как все работает. Нет никаких мастеров, перетаскивателей, конструкторов меню, организаторов виджетов, настроек шаблонов, странных структур принудительной иерархии файловой системы или магических функций, которые можно везде разбрасывать.

Несколько лет назад я искал CMS, чтобы конвертировать старые, вручную написанные сайты в CMS. Ничто из того, что я нашел, не сделало это очень простым без множества настроек и изучения сложных структур шаблонов. Когда я установил MODX, там была эта ссылка на BaseTemplate ; я вставил туда свой HTML, и он просто заработал, без суеты и беспорядка, как говорится, и ничего не сломалось.

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

Если вы хотите разработать многоязычные, многосайтовые веб-сайты с отдельным платным контентом и индивидуальным менеджером для ваших клиентов, то вы поймете, на что способен MODX!

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

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

Сборка веб-страницы

MODX использует стек частей для сборки веб-страницы. Он использует то, что называется Шаблонами, Сниппетами, Фрагментами, Переменными шаблонов и собственной системой тегов шаблонов. Все это называется Элементами :

Дерево элементов

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

Рабочий процесс MODX включает кодирование ваших HTML-шаблонов и разбор повторно используемого HTML в Chunks и повторно используемого динамического PHP-материала в Snippets . Вы также можете настроить любые пользовательские поля, необходимые для этого шаблона. Затем вы создаете Resource , назначаете его шаблону, заполняете поля, и Боб ваш дядя!

Ресурс  это базовое определение конечной точки; это что-то, что находится по URL. Вы можете назвать ресурсы страницами , но они могут использоваться для гораздо большего. Вы можете установить фактический тип содержимого ресурса, чтобы он был чем-то отличным от HTML, например, PDF или двоичными данными. Затем вы можете установить, что содержимое будет либо загружаться из браузера, либо отображаться напрямую. Ресурс может даже просто указывать на файл или ссылаться на внешнюю страницу или использоваться как символическая ссылка на другой контент на сайте.

Шаблон — это рамка, вокруг которой будет отображаться ваш ресурс. Всем ресурсам назначается шаблон.

Чанк  это повторно используемый HTML или JS или что-то еще, что вам нужно, но не PHP.

Сниппеты могут содержать PHP. Они имеют доступ к ядру MODX и всем его объектам.

Сниппет может вызывать фрагмент, фрагмент может вызывать фрагмент, шаблоны могут вызывать и то, и другое, и ресурсы тоже. На самом деле они — 4 всадника и могут в значительной степени собрать любой мыслимый контент, необходимый для поддержания чертовски хорошего разделения интересов.

Плагин может расширить ядро , подключившись к одному или нескольким событиям.

Переменная шаблона — это любые пользовательские данные, которые могут понадобиться шаблону и для которых ресурс может задать. Например, обычно есть телевизор для пользовательского изображения, например, баннера страницы, но затем каждый ресурс может назначить другое изображение для показа шаблону. Они будут похожи на пользовательские поля в WordPress, но более мощные.

Вы можете организовать любой из этих элементов, используя Категории . Обязательно используйте категории, чтобы ваши фрагменты и сниппеты не выходили из-под контроля и не загромождались!

Все это аккуратно спрятано в простом дереве, которое вы только что видели.

Краткий обзор менеджера

Менеджер создан с помощью ExtJS. С этим связаны интересные возможности перетаскивания, настройки форм, динамические таблицы, контекстные меню правой кнопкой мыши и многое другое.

Вы можете щелкнуть правой кнопкой мыши по ресурсам, чтобы получить доступ к различным опциям, включая «Быстрое редактирование », что позволит вам редактировать ресурс во всплывающем окне, оставляя под ним открытым другой ресурс.

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

Системные настройки основаны на пространствах имен . Вы даже можете создать пространство имен для себя и придумать произвольные настройки, которые вы можете использовать в другом месте вашего приложения. Я делал глупости, например, создавал пространство имен компании и настройки, такие как основной телефон компании , чтобы я мог использовать тот же номер через сайт. Затем, если номер изменится, он изменится только в одном месте. Я даю пользователям доступ к изменению этих настроек.

В целом, разобраться в менеджере несложно, несмотря на наличие расширенных функций.

Панель управления по умолчанию

Контексты

Дерево ресурсов

Обратите внимание на текст Website на изображении выше. Это Context , который по сути означает контекст, в котором находятся посетители, когда они просматривают ваш веб-сайт. Когда вы вошли в менеджер, вы фактически являетесь частью контекста Mgr . Разные контексты могут иметь совершенно разные деревья ресурсов, разрешения пользователей, элементы управления доступом, язык — все девять ярдов. Контекст Mgr по умолчанию скрыт из дерева.

Думайте о контексте как о совершенно другом веб-сайте; даже продвинутые сайты могут редко использовать преимущества создания дополнительных контекстов. Одним из распространенных вариантов использования контекста было бы создание типа сайта только для участников в пределах основного веб-сайта для аутентифицированных пользователей. Все, что вам нужно было бы сделать, это не разрешать публичный (гостевой) доступ к контексту, среди прочего.

Я также видел контексты, используемые просто для организации похожих ресурсов, таких как набор статических файлов, или при обслуживании не-HTML типов контента. Используйте их, как вам нравится! Одно предостережение заключается в том, что если пользователь вошел в один контекст, это не означает, что у него есть доступ ко всем из них. Если бы вам нужен был тип единого входа для всех контекстов, потребовалась бы дополнительная разработка.

Контекст может использоваться (без обеспечения безопасности) для простого разделения областей сайта, таких как доска объявлений, блог или магазин. Некоторые используют его для альтернативного контента для разных языков. Это одна из относительно скрытых мощных функций MODX, которую многие даже не замечают или не используют!

Шаблоны и теги

Я упоминал, что MODX имеет встроенную систему тегов шаблонов. Вот как это работает, вкратце.

Каждый тег начинается и заканчивается двойными скобками [[ ... ]].

Символ используется для обозначения того, вызываете ли вы фрагмент, поле ресурса или системные настройки и т. д. Это:

  • [[*...]]: Звездочка извлекает поля ресурсов. То есть, определенные данные, введенные для текущего ресурса, такие как заголовок страницы или даже основное содержимое. Она также ищет переменные шаблона.
  • [[++...]]: Это поиск системной настройки, например site_url , или пользовательской настройки, например company_phone1, если вы ее создали.
  • [[+...]]: Это заполнитель.
  • [[~##]]: генерирует URL-адрес ресурса по его идентификатору, например [[~32]].
  • [[$...]]: Это извлекает HTML из фрагмента.
  • [[...]]: Никакой символ не будет вызывать фрагмент.
  • [[%...]]: Вытягивает языковую строку.
  • [[-...]]: Комментарий MODX.
  • [[!...]]: восклицательный знак сообщает MODX не кэшировать вывод тега; используйте его в сочетании с предыдущими символами. Если вы вызвали, [[!$SomeChunk]]то вывод будет анализироваться каждый раз, а не извлекаться из кэша. Иногда кэширование может вас укусить! Узнайте об этом здесь . Я уже говорил, что в MODX встроен мощный кэш?

Параметры тега

Теги могут использовать параметры и фильтры для настройки своего вывода. Например, вы можете добавить некоторые параметры в автоматически сгенерированный URL следующим образом:

<a href="[[~17? &section=`food` &sort=`asc`]]">Here</a>

Как вы можете видеть, синтаксис использования параметров не отличается от параметров в обычной строке запроса URL. Вопросительный знак обозначает начало списка параметров, и каждый параметр начинается с &и помещает значение в обратные кавычки .

Результатом вышесказанного будет:

<a href="yourpage?section=food&sort=asc">Here</a>

Фрагмент может получать дополнительные данные при вызове аналогичным образом:

[[!MyCustomSnippet? &input=`something tasty`]]

MyCustomSnippetЗдесь вызывается фрагмент с именем и задаются дополнительные данные с именем input, со значением something tasty. В PHP вы бы получили автоматически созданную переменную с именем $input, к которой вы можете получить доступ в фрагменте.

Теги могут быть вложены друг в друга. Очень распространенный тег:

<a href="[[~[[*id]]]]">Link to this page</a>

[[*id]]В теге ссылки есть поле ресурса [[~#]]. Внутренние теги анализируются раньше внешних.

В другом случае, когда вы вызываете фрагмент HTML и передаете ему некоторые динамические данные, извлеченные из фрагмента, это может выглядеть так:

[[$AChunk? &data=`[[!GetTheData]]`]]

Тег фрагмента отправляет данные в фрагмент, но использует фрагмент, чтобы выяснить, что это за данные на самом деле .

Поскольку указанный выше тег вызывает фрагмент, который является только HTML, как он считывает значения данных ? Они автоматически доступны с тегом-заполнителем, например:

<h2>A title</h2>
<p>[[+data]]</p>

Чаще всего в таких фрагментах используются заполнители.

Выходные фильтры

Теги принимают не только параметры; они также могут использовать выходные фильтры . Фильтры запускают код постобработки выходных данных. Несколько фильтров можно объединить в цепочку. Самым простым примером будет изменение регистра строки.

[[SomeSnippet:ucase]]

Фильтр начинается с двоеточия; он должен стоять перед вашими параметрами. Вот несколько связанных фильтров:

[[SomeSnippet:ucase:replace=`this==that`? &param1=`Go big`]]

Здесь результат фрагмента сначала преобразуется в верхний регистр, затем он запускает специальный фильтр замены , чтобы изменить все вхождения this на that . После фильтров перечисляются параметры, начинающиеся, как обычно, с вопросительного знака.

Существует довольно много фильтров по умолчанию, поэтому ознакомьтесь с ними здесь .

Еще круче встроенных фильтров то, что вы можете использовать любой фрагмент в качестве фильтра. Все, что вам нужно сделать, это использовать имя фрагмента в качестве фильтра:

[[$CallingChunk:mySnippet]]

Какой бы HTML ни был отправлен кодом CallingChunk, вы mySnippetможете получить к нему доступ и изменить его так, как вам нравится, используя ваш собственный PHP. Значение $CallingChunkбудет доступно в вашем PHP с $inputпеременной, и вы просто returnотредактируете значение. ( Подробнее см. здесь .)

Фильтры можно использовать для логики с полным потоком if then else .

Если бы этого было недостаточно

Осталось не затронуто множество вопросов: структурирование дерева, обработка повторяющегося контента, доступ к базе данных или создание пользовательских таблиц.

Вы можете категоризировать контент, устанавливать родительские/дочерние отношения, создавать контейнеры, устанавливать даты публикации/снятия с публикации, группировать контент в целях безопасности, создавать плагины для проверки данных, которые могут вводить ваши клиенты.

Список можно продолжать и продолжать. Вы можете редактировать типы контента и данные MIME, расширения страниц (использовать ‘.html’ или нет) или создать корзину Amazon S3 в качестве источника медиа.

Вы можете редактировать в необработанном тексте/HTML по умолчанию или устанавливать дополнения, которые включают TinyMCE, CodeMirror или ACE. Есть редактор для Markdown. И есть даже дополнения для отслеживания изменений или экспорта вашего пользовательского кода для использования на других сайтах MODX или для обмена с другими разработчиками.

У элементов есть свойства, которые похожи на системные настройки, но только для этого элемента, поэтому, если вы создаете потрясающий фрагмент потрясающего PHP-кода, вы можете использовать свойства как способ создания для него настроек по умолчанию, которые пользователи затем могут изменять с помощью собственных наборов свойств.

Шаблонным переменным можно назначать категории, чтобы их можно было группировать при редактировании ресурсов. Очень удобная штука при создании пользовательского контента, который клиенты могут изменять.

Минусы

Кодовая база Revolution устарела и не использует некоторые современные стандарты PSR, такие как автозагрузка и пространства имен, а также не использует Composer для упаковки.

Третья переработка платформы, названная MODX 3, перенесет ядро ​​в современность. Но не позволяйте этому помешать вам попробовать MODX: с возрастом приходит мудрость, и вся платформа MODX вполне способна, зрела, безопасна и расширяема. Однако вы увидите, как разработчики критикуют старые шаблоны кода.

Вторая проблема — использование ExtJS. Этот фреймворк довольно хорош, но проблема в том, что MODX практически застрял на старой версии. Текущий менеджер нельзя обновить, иначе он сломает многие сторонние дополнения.

Будущие версии менеджера, скорее всего, вообще не будут использовать ExtJS или будут привязаны к какой-либо библиотеке.

Помимо этих проблем, единственные проблемы, которые у меня когда-либо были с MODX, связаны с конфигурацией сервера. Это вызвало разговор о том, какие хосты лучше всего подходят для MODX , например, в этой теме форума .

Заключение

Редактировать домашний ресурс

Я много чего здесь рассказал и надеюсь, что мне удалось пробудить в вас интерес и желание попробовать MODX.

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

MODX — превосходный инструмент с довольно простой кривой обучения, если вы разработчик и хотите иметь свободу в разработке дизайна по своему усмотрению.

Поскольку SitePoint никогда толком не освещал MODX, мне интересно, кто его пробовал. Вам он понравился или нет? У вас есть еще вопросы о нем? И хотели бы вы увидеть больше информации о нем? Дайте мне знать в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *