MODx Revolution — начало - Творческая мастерская Игоря Петунина

Опубликовано: 31.10.2017

На предыдущий шаг...

Ну вот движок установлен, что дальше?

Для начала, думаю, следует ознакомиться с его особенностями.

Прежде всего, отметим, что сайт под управлением MODx Revolution будет у нас содержать и показывать в админке контент, организованный в виде "папочек" (раздел ресурсы ), и элементы, этим контентом управляющие, то есть, организующие удобное и красивое представление материалов нашего сайта посетителю. Тоже в виде папок, естественно,  (раздел элементы ), как и раздел файлы, о назначении которого легко догадаться и без объяснений...

Я покажу как работать с сайтом на примерах, но сначала, познакомтесь с сущностью "элементов" конструктора, с которым нам предстоит работать...

Шаблон ( Template ). В MODx Revolution очень сильно развита модель MVC , то есть отделение визуализации от програмной части.  Для всех типичных страниц не надо каждый раз прописывать весь HTML-код в отдельности, достаточно создать один HTML-шаблон, в котором будет присутствовать плейсхолдер , который в момент генерации страницы будет заменен на контент конкретной страницы. Так же в шаблоне могут быть использованы и другие объекты MODx, такие как сниппеты, чанки, TV-параметры и т.п. Дополнительные параметры ( TV или Template Variables ). В шаблоне вызывается . Очень полезная штука. К примеру, в каждом документе у нас есть базовые поля (Заголовок, расширенный заголовок, псевдоним, контент и т.п.). Но мы хотим так же добавить поле, в котором мы будем указывать путь к картинке превью. Вот мы создаем новый TV-параметр, указываем для каких шаблонов он доступен, и в дальнейшем, когда мы будем редактировать документ с таким шаблоном, у нас будет дополнительное поле, с помощью которого мы сможем выбрать картинку для этого документа. А в шаблоне мы просто вставим , и в этом месте будет выводиться значение этого дополнительного параметра. Сниппеты ( Snippets ). В шаблоне вызываются (кэшируемый сниппет) или (некэшируемый сниппет). Данный элемент содержит исполняемый PHP-код (только). Переданные в сниппет параметры будут доступны внутри кода сниппета как PHP-параметры. К примеру вызываем (наклонные ковычки ` используются для более явного опраделения начала и конца строкового значения параметра). Внутри сниппета эти параметры нам будут доступны как $param1 и $param2. 

Рассмотрим простой пример: если вы хотите в  шаблоне, к примеру, выводить текущее время, вы можете создать сниппет date , в нем прописать <?php return date('Y-m-d H:i:s');, а в шаблоне вызвать . В результате при генерации страницы в месте вызова этого сниппета будут выведены дата и время.

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

К примеру у вас во всех шаблонах будет выводиться одно и то же меню. Не нужно в каждом шаблоне прописывать это меню. Достаточно создать свой пользовательский чанк , к примеру mainMenu , прописать в этом чанке код меню, а к нужны шаблонах в месте вывода меню просто прописать чанк . Так же в чанк вы можете прописать не только статический HTML, но и другие объекты MODx. К примеру, для динамического формирования меню вы используете сниппет Wayfinder. Тогда в чанке вы прописываете вызов сниппета с параметрами (если они нужны) &level=2&outerClass=`main`]], а чанк уже вставить в шаблон в виде . В процессе генерации страницы MODx обработает переменную и заменит ее на системную настройку корня сайта, передаст это значение в сниппет Wayfinder, который сгенерирует код меню и вернет этот код в чанк, а конечный код чанка в свою очередь будет выведен в шаблон в место расположения этого чанка.

Все это может показаться довольно сложным, но поверьте - это на самом деле очень удобно, так как вы четко отделяете логику от статики. Вы четко отделяете динамические и статические элементы, и используете их как конструктор, оперируя ими как отдельными сущностями. В результате, когда вам нужно будет что-то поменять, вы не будете ковырять весь движек, а будете редактировать четко отдельный элемент. А за нагрузку не беспокойтесь. В MODx шикарная система кэширования, и раз сгенерировав страницу, в следующий раз при обращении к этой странице большая часть логики уже лежит как статический HTML. Плейсхолдеры ( Placeholders ). В шаблоне вызываются . Плейсхолдеры - это статические переменные шаблонизатора. То есть если мы в шаблоне пропишем , то объявив плейсхолдер date и передав в него какое-либо значение, в момент обработки кода шаблонизатором, плейсхолдер будет заменен на его значение.

Плейсхолдер может быть объявлен двумяспособами: Как мы уже говорили выше, он может быть передан в виде параметра в чанк. Через API MODx в сниппете или плагине: $modx->setPlaceholder($placeholderNname, $value). Системные настройки . В шаблоне вызываются . В качестве системных настроек мы можем перехватить, к примеру, название сайта (), полный адрес сайта (), адрес корня сайта () и т.п., а можем и свои указывать. Все настройки можно увидеть во вкладке Система->Настройки системы.

Системные настройки - отдельная история и будут рассмотрены в отдельной статье. Плагины ( Plugins ). В шаблоне не вызываются никак. Плагины вызываются, срабатывая на определенные события (мы сами указываем на какие, к примеру OnWebPageInit , то есть  в момент инициализации страницы, или OnPageNotFound , то есть в момент, когда страница не найдена).

Конечно плагин можно вызвать и через API MODx, но это не правильно.

Плагины - очень мощный инструмент, позволяющий легко расширить платформу, практически не трогая кода самой платформы. К примеру, я хочу добавить свой модуль к системе. Создаем плагин, называем его как хотим, назначаем ему выполнение в момент иинициализации страницы. В плагине прописываем, наш PHP код. В момент инициализации страницы код нашего плагина срабатывает внутри системы с полным доступом к объекту $modx. В результате мы можем и работать с настройками платформы, и воздействовать на всю логику в целом и т.п.

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

3D стерео фильмы для 5D
    Как купить билеты на поезд

    Я всегда в последнее время пользуюсь услугами настоящего интернет сайта. Он у меня внушает доверие. И здесь придбати квитки возможно в любое

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

    Поступления в университет
    Перед всеми выпускниками школ и их родителями сейчас стоит задача – выбор предметов единого государственного экзамена (ЕГЭ). От того, какие ЕГЭ будут выбраны, зависит, поступит ребенок в ВУЗ или нет.

    Видеонаблюдение Novicam в Екатеринбурге
    По своей сути подключение видеорегистратора к локальной сети совершенно не отличается от подключения обычного компьютера к локальной сети.  Для того что бы система видеонаблюдения начала функционировать

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

    Комплект инсталляции Grohe 6в1
    Вместо обычного унитаза многие люди предпочитают, чтобы было сочетание инсталлированной конструкции унитаза с определенным видом отделки. Особенно такая инсталляция включают в себя раму, которая покрыта

    Авіаквитки купити
    В наше время все больше людей путешествуют с помощью самолета. Ведь авиаперевозки пассажирские стали намного доступнее. И приобрести билеты становится с каждым днём все легче и легче. К примеру, на данном

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

    Cbd vape pen buy online
    Представители просвещенной части прогрессивного человечества сегодня являются активными приверженцами здорового образа жизни и предпочитают лечится только с помощью средств натурального происхождения.

    Зарплата ру
    Еженедельный журнал работа и зарплата вакансии в Москве выходит крупным тиражом в 100 тыс. экземпляров, имеет большую аудиторию читателей, среди которых люди с различным образованием, доходом и социальным

rss