Урок 5. Работа с чанками MODx Revolution
Добро пожаловать на 5 урок MODX Revolution для новичков. В предыдущем уроке мы начали рассматривать работу с шаблонами в MODX Revolution. Мы начали со статичного HTML/CSS шаблона и перенесли его в нашу установку MODX Revolution, изменили пути к файлам и начали изучать синтаксис тегов MODX Revolution и как его использовать. В этом уроке мы продолжим работу над нашим шаблоном и изучим концепцию чанков.
В данном уроке я использую шаблон 7-in-1 Business Success Site студии Themeforest. Если вы работаете над шаблоном, который вы скачали или сделали сами, то это даже лучше. Подход к построению сайта одинаков вне зависимости от используемого шаблона.
Давайте начнем. Наш сайт выглядит сейчас точно так же как и загруженный шаблон, потому что мы изменили все пути к css, js и image файлам. Давайте рассмотрим что же такое чанки
Чанки MODX Revolution
Чанки — это куски HTML кода или текста. Важно отметить что чанк — это чистый HTML код без всякой логики. Чанк не может содержать PHP код, он просто не будет выполнятся. PHP код необходимо вставлять в сниппет (разберёмся в этом в следующих уроках). Этот сниппет потом может быть вызван в чанке. В то же время чанк сам по себе не может содержать всередине чистый PHP.
Для чего использовать чанки?
Вы можете использовать чанки для различных целей. Некоторые примеры использования чанков включают организацию вашего шаблона в управляемые части, содержащие HTML или текст, который будет использован снова и снова в вашем сайте, а также для хранения мини-шаблонов для ваших меню и др. Сейчас это может быть не совсем ясно, но ситуация прояснится по ходу дела.
В этом уроке я собираюсь использовать чанки для организации моего шаблона в несколько управляемых частей. Как я уже упомянул в предыдущих уроках, эти занятия отражают лишь моё видение этого процесса, вы можете использовать свой лучший или более удобный вам способ.
Поэтому можете просто бегло ознакомится с данным уроком либо просто прочитать, чтобы понять синтаксис чанков и далее организуйте ваш шаблон как вам удобно.
Если мы посмотрим на код шаблона, над которым сейчас работаем, то увидим длинную страницу кода и в нём при редактировании или изменении части кода можно легко потеряться. Чтобы избежать этого, давайте разделим код на логические секции и далее сохраним эти секции раздельно как чанки, которые я потом смогу вызвать в главном шаблоне.
Видно, что этот шаблон разделён на три различные секции: шапка, подвал и средняя область (по такому принципу делятся почти все шаблоны). Соответственно можно поделить наш шаблон на эти три части. После разделения мы можем далее еще разделить эти секции.
Поэтому первой вещью, что мы сделаем — это создадим два новых чанка, которые назовём: 7in1-header и 7in1-footer.
Для создания чанка зайдем в менеджер и в дереве слева зайдем во вкладку Elements. Можно создать чанк двумя способами: правым кликом на Chunk и выбрать“New Chunk” или кликнуть на иконку Chunk.
В появившемся окне вводим необходимую информацию — имя чанка, описание и категория, если это необходимо.
Пока сохраним этот чанк, чуть позже вставим туда код.
Давайте продолжим и создадим чанк для подвала.
Сейчас если мы взглянем на дерево ресурсов, то увидим наши два новые чанка в разделе Чанки.
Итак, наши чанки готовы к использованию. Всё, что нужно сделать, это вырезать код из секции нашего шаблона и вставить в чанки. В моём случае, я открою шаблон 7in1 Home, который мы создали в предыдущем уроке и вырежу весь код между отрывающим и закрывающим тегами <head>. Далее я вставлю этот код в средину чанка 7in1-header, который я только что создал и сохраню его.
Если мы теперь посмотрим на наш сайт, то увидим, что он не выглядит так, как должен выглядет.
Это случилось потому что сайт больше не видит наших css и js файлов, так как мы вырезали всю информацию об этом из нашего шаблона. Так как эта информация теперь содержится в чанке, то нам необходимо просто вызвать чанк в шапке шаблона.
Как вызывать чанк в MODX Revolution
Синтаксис чанков в MODX Revolution очень прост:
[[$chunkName]]
В нашем случае мы просто перейдём в наш шаблон и разместим там вызов нашего чанка 7in1-header в области, где мы убрали код шапки. Таким образом верхняя часть кода нашего шаблона будет иметь следующий вид:
Если сейчас вы перезагрузите страницу, то увидите, что она примет нормальный вид. Это значит, что парсер MODx видит вызов чанка, он берёт его содержимое и размещает в области, где сделан вызов. Если вы знакомы с программированием PHP, то вы увидите схожесть с концепцией использования включения файлов.
Отлично, теперь мы знаем что делать дальше и сделаем ту же процедуру с подвалом. В моём случае я выделю весь код от начала div подвала до закрывающего тега и размещу его в чанке 7in1-footer, который мы создали. Затем размещу вызов это чанка в нужном месте. Теперь конец кода моего шаблона выглядит вот так:
Снова напомню, можете делать что угодно и как угодно, можете вообще не делить ваш шаблон :). цель данной демонстрации — это показать как работать с чанками и какой их синтаксис при вызове чанков в шаблоне.
Для моих целей, я собираюсь еще поделить мой шаблон и добавить пару чанков. Эта секция шаблона появляется в основном на каждой странице вебсайта:
Я думаю разумно разместить код для этой секции в собственном чанке и далее вызывать его в наших шаблонах. Я назову этот чанк 7in1-bottomwidgets и таким образом нижняя часть кода моего шаблона приобретёт следующий вид:
Как вы видите, в зависимости от внешнего вида нашего шаблона, мы можем делить его дальше и дальше в отдельные чанки либо же не делить совсем.
Ну вот наш небольшой урок подошёл к концу.
Что дальше?
В следующем уроке MODX Revolution для новичков мы будем копать еще глубже и рассмотрим основы переменных шаблона и как использовать их для создания множества редактируемых областей на нашей странице. Если у вас есть какие-либо замечания или исправления — не стесняйтесь, сообщайте мне об этом. Буду стараться их исправить, чтобы уроки были более полезными для всех.
Рекомендую почитать:
Jun 21 2012 уроки MODx Revolution чанки Виктор Матушевский
Alex
12.11.2011 23:22Немного может путать начинающих тот факт что head называют в этой сатье header.
Header-ом обычно называют шапку сайта, но тут header это содержимое head.
Viktorminator
13.11.2011 00:38Пусть начинающие не пугаются и читают комментарии. 7in1-header это чанк, название естественно как и содержание - произвольные. Сейчас я вообще создаю два файла site_header.html site_footer.html и динамически вставляю их в шаблон. Об этом и о многом другом, в следующих уроках курса "MODx Revolution для продвинутых" ;).
Sergey Larin
17.09.2013 04:48Спасибо, уважаемый админ, всё понятно. Недоразуменя вызвали эти head и header, но благодаря вашим подсказкам и примерам я разобрался. Наглядные примеры - это то, что надо. Даже, если не понял теорию о том, как делать, можно посмотреть на пример, с результатом и оттуда уже прийти к пониманию теории.
Сергей
06.03.2012 11:09Alex, согласен с вами по поводу head и header. Вводит в заблуждение и в дальнейшем новичек (коим являюсь я) может путаться осваивая уроки на других источниках. Я сделал 2 чанка: head и header, соответственно в первом содержимое , а во втором шапка шаблона.
Серж
02.04.2012 12:38А что с чантом для контента? Не могу никак понять как выводить контент в зависимости от страницы(
anadikt
13.05.2012 04:18У меня не получается работать с чанками!!!! Делаю как все написано, но не выводит текст чанка!!! Что делать???
Viktorminator
13.05.2012 07:21Если чанки не выводятся, то 1ое - проверьте вставляете ли вы их в шаблон, а не в содержимое ресурса и 2ое - назначили ли вы этот шаблон для просматриваемого ресурса.
Евгений
25.10.2012 17:53Не-не, все нормально написано. ) Имена можно свои задать - это не критично, главное потом не запутаться. Мне вот не понятно что такое 7in1. ))) Я понимаю, что это только название, а что под ним подразумевается?
Алексей
27.10.2012 13:21Универсальный шаблон, чуть ли ни 7 шаблонов в одном, стиль которых можно изменять внося небольшие правки в стили шаблона (Разные цвета, Плоский и 3D шаблон, различное расположение контента на странице и т.д.)
Sergei Ivin
19.12.2012 17:14С точки зрения SEO ставить код между... в чанк - это грубейшая ошибка.
keywords и description должны быть уникальны для каждой страницы
Viktor Minator
20.12.2012 12:15Они и будут уникальны. Для каждой страницы в ресурсе указываете keywords & description, а что в чанк заключена вся верхняя часть, включая меню - это не значит, что вывод этой части будет одинаков на каждой страницы. Можете заглянуть в код этого сайта и увидите, что для каждой страницы у меня они разные, хотя в шаблоне для верхней части я использую чанк site_header: https://gist.github.com/4344398
Артем Котэ
03.07.2013 09:21Оптимизатор Сергей любит SEO больше, чем сиськи.
lurkmore.to/SEO
Sergei Ivin
20.12.2012 11:51имел ввиду теги head
Юрий Зюзин
14.05.2013 06:13Сергей, кстати я вот пришел на MODx с Joomla, потому что с точки зрения оптимизации, она никакая + очень много всего не нужного приходится в ней урезать. Как правильно оформить Сео теги?
Руслан Юнусов
02.01.2014 09:20Вот в этом месте
чанк подвала стоит не перед тегом
Я так понимаю это ОЧЕПЯТКА?
Руслан Юнусов
02.01.2014 09:41На последнем примере короче)
Руслан Юнусов
03.01.2014 22:35Короче в последнем примере чанк подвала стоит за закрывающим тегом div а не перед ним.Если так сделать то подвал будет слишком низко - упадёт в самый низ
Антон Щёлкин
24.09.2014 12:30Хороший урок. Но шпаргалка по чанкам что-то не открывается у меня, пустую страницу выдает.