Чанки
Создание чанка
Перед использованием чанка, вы должны создать его и придумать название, делается это в админке правой кнопкой мыши нажимаем на чанки и создаем новый чанк:
Использование
Для использования чанка вы пишете ссылку на него в ваших шаблонах или на странице сайта. Формат ссылки:
[[$chunkName]]
Эта ссылка заменяется содержимым чанка.
Также вы можете передавать свойства чанку. Скажем есть у вас чанк ‘intro’ с содержимым:
Привет, [[+name]]. У тебя [[+messageCount]] сообщений.
Вы можете придать значения свойствам чанка следующим образом:
[[$intro? &name=`Жора` &messageCount=`12`]]
На выходе будем иметь запись:
Привет, Жора. У тебя 12 сообщений.
Можно также немного пойти вперед и использовать переменную шаблона, которая позволяет пользователю определять имя ресурса.
[[!$intro? &name=`[[*usersName]]` &messageCount=`[[*messageCount]]`]]
или в чанке самом по себе
Привет, [[*usersName]]. У вас [[*messageCount]] сообщений.
Офтоп: мне это напомнило Привет, %username% из д3, а вам?
Обработка чанка через API
Чанки часто используются для форматирования вывода сниппетов. Чанк может быть образован из снипета с помощью функции process(); Например, возмем чанк ‘rowTpl’:
<tr class="[[+rowCls]]" id="row[[+id]]"> <td>[[+pagetitle]]</td> <td>[[+introtext]]</td> </tr>
следующий снипет извлекает его и обрабатывает вместе с массивом свойств для всех опубликованых ресурсов и возвращает отформатированные в виде таблицы результаты устанавливая класс «alt» для парных строк:
$resources = $modx->getCollection('modResource',array('published' => true)); $i = 0; $output = ''; foreach ($resources as $resource) { $properties = $resource->toArray(); $properties['rowCls'] = $i % 2 ? '' : 'alt'; $output .= $modx->getChunk('rowTpl',$properties); $i++; } return '<table><tbody>'.$output.'</tbody></table>';
Изменение чанка с помощью API
Чанками можно манипулировать с помощью MODx API:
<?php /* create a new chunk, give it some content and save it to the database */ $chunk = $modx->newObject('modChunk'); $chunk->set('name','NewChunkName'); $chunk->setContent('<p>This is my new chunk!</p>'); $chunk->save(); /* get an existing chunk, modify the content and save changes to the database */ $chunk = $modx->getObject('modChunk', array('name' => 'MyExistingChunk')); if ($chunk) { $chunk->setContent('<p>This is my existing chunks new content!</p>'); $chunk->save(); } /* get an existing chunk and delete it from the database */ $chunk = $modx->getObject('modChunk', array('name' => 'MyObsoleteChunk')); if ($chunk) $chunk->remove(); ?>
Теги используемые по умолчанию для вывода контента
В MODx Revolution каждая страница всегда имеет следующие поля для вывода контента, которые вы можете использовать при создании своих шаблонов. Кроме как для ID источников (ресурсов) и полей предка, они задаются пользователем при редактировании ресурса и могут быть просто пустыми если пользователь их не заполнил:
Тег | Описание | Примеры использования |
---|---|---|
[[*id]] | ID ресурса страницы (устанавливается MODx при создании страницы) | Часто используется в сочетании с ссылкой: <a href="[[~[[*id]]]]">Ссылка на эту страницу!</a> |
[[*pagetitle]] | Название страницы | <title>[[*pagetitle]]</title> |
[[*longtitle]] | Длинное название страницы | <h1>[[*longtitle]]</h1> |
[[*alias]] | Псевдоним (алиас) страницы. | Используется для создания URL страницы |
[[*description]] | Описание страницы. | <meta name="description" content="[[*description]]"/> |
[[*introtext]] | Аннотация страницы. | Часто используется сниппетами для аннотирования постов, например, Ditto <div id="summary">[[*introtext]]</div> |
[[*parent]] | ID страницы-предка (если таковая существует). Устанавливается MODx при создании страницы. Может быть изменена пользователем. | Часто используется вместе с ссылкой, синтаксис <a href="[[~[[*parent]]]]">Вверх к родительской странице</a> |
[[*menutitle]] | Название страницы в меню. | Чаще всего используется такими сниппетами, какWayfinder когда необходимо создать динамическое меню. |
[[*content]] | Содержимое страницы. | <body>[[*content]]</body> |
Другие теги
Эти теги представляют собой системные настройки, которые можно отрегулировать через меню Система (System) -> Настройки системы (System Settings).
Тег | Описание | Пример использовани |
---|---|---|
[[++site_url]] | Содержит URL вашего сайта, например http://www.yoursite.com/ | Со многими CMS, которые опираются на разработки Apache является общей практикой включать базовый тег в хед страницы: <base href="[[++site_url]]" /> |
[[++site_name]] | Название сайта | <title>[[++site_name]] | [[*pagetitle]]</title> |
[[++site_start]] | Содержит ID станицы, определенной как «Главная» | Часто используется в синтаксисе сочетания со ссылкой <a id="logo" href="[[~[[++site_start]]]]">Главная</a> |
[[$chunk]] | Это вызов чанка по имени. Чанки – это повторяемые части контента. | Обычно чанками могут выступать хедер или футер. |
[[~link]] | Используйте такой синтаксис для построения ссылок к страницам по их уникальному id (которые можно увидеть в родительских ресурсах возле имени страницы в дереве ресурсов). Эти ссылки не ломаются, даже если страницы передвигаются или переименовываются. | <a id="logo" href="[[~1]]">Главная</a> |
Денис
03.02.2014 09:16Очень хорошая статья, только про API я ничего не понял, но думаю со временем разберусь ))
Андрей
25.05.2014 17:49Как мало толковой пошаговой информации на русском языке. Начал изучать MODX Revolution и столько вопросов, просто ужас, а ответов почти нет!
Андрей Абрамов
30.10.2014 20:52А что делать, если чанк не сохраняется? Пишет:
Forbidden
You do not have permission to access this document.
Web Server at u8085190.plsk.regruhosting.ru