MODx Revolution — начало
Главная Статьи и Медиа WEB технологии MODx Revolution MODx Revolution — начало
MODx Revolution — начало

MODx Revolution по шагам — шаг второй

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



Тэги (метки): MODx, WEB, технологии, сайт

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


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

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

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

MODx. Ресурсы. Элементы. Файлы

Программные элементы 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. В результате мы можем и работать с настройками платформы, и воздействовать на всю логику в целом и т.п.

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

Источник


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


Счет на "Яндекс деньги": 41001131476679

Кошельки "WEB money":

Z148021440215
R515650544848


GRANDIKOS

2007—2017 © ТМИП | Все права защищены

К началу