Вывод новостей modx revo

Вывод новостей modx revo. Как организовать вывод статей и новостей на сайте modx revo используя getPage и getResources. Для начала установим несколько пакетов phpthumbof, getPage, getResources

Вывод новостей modx revo

Организация вывода новостей modx revo
Организация вывода новостей modx revo

Создаем документ «Статьи», делаем его контейнером, если необходимо выбираем для статей родительский ресурс.

modx revo news
modx revo news

Далее аналогично создаем статью «Первая статья» как показано выше.

Не помешает установить TinyMCE, редактор текста.

Сниппеты и плагины
Сниппеты и плагины

Создаем чанк одной статьи

Теперь нужно создать чанк одной новости, статьи, публикации, товара, анкеты, портфолио, … — обширный спектр, и назвать можно как угодно.

Например назовем «odnastatyia»

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="">
    <div class="">
        <h3>[[+pagetitle]]</h3>
    </div>
    <div class="">
        <div class="">
        <img src="[[*image]]" alt="[[+pagetitle]]">
        </div>
        <div class="">
                [[+introtext]]
        </div>
        </div>
        <div class="">
          <span>[[*publishedon]]</span>
          <a href="[[~[[+id]]]]" class="read-more">Читать дальше</a>
        </div>
</div>

Если какой-то пункт заключенный в двойные фигурные скобки не выводиться можно поменять «+» на «*» или наоборот.
[[+pagetitle]] — Название статьи
[[+image]] — Картинка которая будет выводится в качестве превью статьи (новости).
[[+introtext]] — Вводный текст для статьи.
[[*publishedon]] — Дата публикации
[[~[[+id]]]] — Ссылка на саму новость

Полезная ссылка по getpage. В ней расписаны основные функции и предназначение.

:limit=`350` — установить длину в 350 символов
:ellipsis=`350` — почти тоже самое только с «…»
Пример: [[+introtext:ellipsis=`350`]]


Создаем шаблон одной новости

Назовем новый шаблон допустим «Одна новость»

Простейший пример

1
2
3
4
5
6
7
8
<html>
    <head>
        <title>[[*pagetitle]]</title>
    </head>
    <body>
      [[*content]]
    </body>
</html>

Чтобы можно было в списке новостей выводит превью для каждой новости создаем TV параметр image и добавляем доступ для шаблона «Одна новость».


Выводим статьи

Допустим у нас есть простейший шаблон «Список новостей». Добавим в него вывод статей.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
    <head>
        <title>Список статей</title>
    </head>
    <body>
[[!getPage?
&elementClass=`modSnippet`
&element=`getResources`
&parents=`10`
&tpl=`odnastatyia`
&limit=`5`&includeTVs=`1`
&hideContainers=`0`
&pageLimit=`100`
&pageNavVar=`page.nav`
&pageActiveTpl=`<li><a[[+activeClasses:default=` class="active"`]]
[[+title]] href="[[+href]]">[[+pageNo]]</a></li>`
&pageNavOuterTp=`[[+first]][[+prev]][[+pages]][[+next]][[+last]]`
&pageNavTpl=`<li[[+classes]]><a[[+classes]]
[[+title]] href="[[+href]]">[[+pageNo]]</a></li>`
]]
 
<div class="myclass">
 <ul class="pageList">
	[[+page.nav]]
 </ul>
</div>
    </body>
</html>

&parents=`10` — id контейнера ваших новостей
&tpl=`odnastatyia` — шаблон одной новости чанк «odnastatyia»
&pageNavVar=`page.nav` — это при вводе [[+page.nav]] выведет пагинацию
&pageActiveTpl — шаблон активной ссылки в пагинации
&pageNavOuterTpl — управление элементами навигации
&pageNavTpl — одностраничный элемент навигации
&sortby=`RAND()` — если нужна случайная последовательность вывода новостей


Далее осталось лишь добавлять в контейнер «Список новостей» ваши новости, статьи, портфолио, товары, …

Пишу то «статьи» то «новости», по-моему нет никакой разницы как назвать список вывода.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *