16 ноября 2011 г.

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

Именно о выводе статей и новостей в MODx Revolution Я сегодня Вам и расскажу.

Благодаря древовидной организации ресурсов в Revo все предельно просто. Имеется родительский элемент "Статьи", внутри которого располагаются его дети - непосредственно сами статьи, по одному ресурсу на каждую статейку.

Выглядит это примерно так:

Древовидная организация страниц статей в MODx

Для того, чтобы статьи выглядели достойно, можно добавить к ним вывод картинки, которую можно будет выбирать при редактировании. Туда можно поместить все, что угодно Вашей душе, кроме того, это еще и симпатично. Для этого создадим TV-параметр, назовем его image. Далее в поле "Тип ввода" необходимо выбрать "Изображение - Image", это позволит при редактировании ресурса указывать картинку прямо с сервера, загружать их и так далее. В поле "Тип вывода" я обычно оставляю "По умолчанию". Жмакаем сохранить и пока откладываем наш ТВ-параметр в сторонку.

Поскольку статьи у нас имеют собственный формат вывода, то целесообразно создать для них отдельный шаблон, который будет за это отвечать. Оригинальничать не будем и назовем его "Статья" =)

Внутри будет следующее содержание:

//здесь всякие выводы шапок и так далее
<div class="content left">
  <div class="post">
    Дата публикации: [[*publishedon]]"
    <h2 class="postTitle">[[*pagetitle]]</h2>
    <img class="mainImage" alt="" src="[[*image:phpthumbof=`w=200`]]">
    [[*content]]
  </div>
</div>
//тут всякие футеры

Теперь по порядку. publishedon выводит дату публикации. Формат даты, конечно не больно читабельный, о том, как сделать симпатичный правильный вывод дат, я расскажу в другой статейке. pagetitle мы засунем в тэг заголовка h2. Далее необходимо вывести изображение, TV-параметр для которого мы делали до этого. Если вы заметили, Я использую фильтр вывода phpthumbof, который уменьшает картинку до 200 пикселей в ширину. Кстати, не забудьте в закладке "Дополнительные поля" указать, что шаблону доступен наш ТВ-параметр image, иначе картинка не будет выводиться. Ну и напоследок выведем текст статьи с помощью вызова [[*content]]. Наш шаблон готов.

Мы оформили основную страницу вывода статьи. Теперь нам необходимо сделать краткий вывод анонсов статьей. Для этого воспользуемся популярным сниппетом getResources, он справляется с этой задачей на ура.

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

Вывод статей с пагинацией:

[[!getPage? &element=`getResources` &parents=`19` &tpl=`articleTpl` &limit=`10` &includeTVs=`1`]]

Будем выводить по 10 ресурсов. В tpl написано имя чанка, с помощью которого будем выводить стать, а includeTVs необходим, чтобы выводилась картинка, а остальное, думаю, и так понятно. 

Код чанка:

<div class="post">
Дата публикации: [[+publishedon]]">
<h2><a href="[ [~[[+id]]]]" title="Перейти на страницу статьи">[[+pagetitle]]</a></h2>
 <img alt="" src="[[+tv.image:phpthumbof=`w=100`]]">
[[+introtext]]
</div>

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

При создании ресурса статьи выбираем шаблон "Статья", ставим ей картинку, заполняем introtext и content, и после публикации статья появится в том месте, куда Вы ее добавили.

Аналогично делается вывод новостей и прочих ресурсов.

Автор: Артур Минимулин ⚫ 16 ноября 2011 г.Тэги: