На нашем сайте новостей не так уж много (лень-матушка). А вот на сайтах, которые мы поддерживаем, публикуется до нескольких десятков новостей ежедневно.
Написать документ новости не сложно, хотя и здесь имеются нюансы, которые мы рассмотрим отдельно. В этой заметке мы разберемся с публикацией лент новостей.
Штатное решение для MODx - вывод ленты новостей с помощью мощного сниппета Ditto. Это мощное средство, но значительно нагружает сайт - создается очень много запросов к базе данных. Именно по этому многие используют другие, более легкие сниппеты. И даже девиз такой вот встречается - "дитте - бой!". С этим вопросом мы также разберемся в отдельной заметке. А пока - про Ditto.
Использование Ditto для вывода новостей
Возьмем пример нашего сайта. Все документы с новостями мы создаем в папке Последние новости с ID=24.
На главной странице сайта весь контент представляет из себя вызов сниппета:
[ [Ditto? &startID=`24` &summarize=`10` &removeChunk=`Comments` &tpl=`ditto_news` &sortBy=`pub_date` &sortDir=`desc` &paginate=`1` &language=`russian-UTF8` &extenders=`summary,dateFilter` &paginateAlwaysShowLinks=`0` &truncText=`Читать полностью...` &dateSource=`pub_date` &dateFormat=`%d.%m.%Y `] ]
Ниже прописано:
Показано [ +start+ ] - [ +stop+ ] из [ +total+ ] материалов
А ещё ниже:
[ +previous+ ] | [ +pages+ ] | [ +next+ ]
В результате посетители видят ленту новостей:
При этом внизу ленты имеется навигатор по страницам:
Что мы видим в ленте новостей и как это задано вызове Ditto
1. Показываются 10 (аргумент &summarize=`10`) последних новостей из папки с ID=24 (аргумент &startID=`24`).
2. Что именно выводить задано шаблоном вывода (аргумент &tpl=`ditto_news`).
3. Новости сортируются по дате публикации (аргумент &sortBy=`pub_date`), при этом более свежие новости показваются в начале ленты (аргумент &sortDir=`desc`), а дата берется из поля, заданного аргументом &dateSource=`pub_date`, и выводится в формате, заданном аргументом &dateFormat=`%d.%m.%Y `.
4. Текст ссылки на полный текст новости задан аргументом &truncText=`Читать полностью...`.
5. Из новостей удаляются тексты, возможно вставляемые чанком Comments (аргумент &removeChunk=`Comments`).
6. Задана кодировка (аргумент &language=`russian-UTF8`).
7. Новости разбиваются по страницам (аргумент &paginate=`1`).
8. Ссылки Назад и Далее показываются всегда (аргумент &paginateAlwaysShowLinks=`1`).
9. Для увеличения функциональности Ditto загружаются расширения summary и dateFilter (аргумент &extenders=`summary,dateFilter`).
Шаблон вывода новостей
Новость в ленту выводится по чанку, заданному аргументом &tpl=`ditto_news`. Вот текст этого чанка:
<div class="date"> [ +date+ ] </div> <br />
<h5> <a href="[ ~[ +id+ ]~ ]" title="[ +title+ ]">[ +title+ ]</a> </h5><br />
<h6>[ +longtitle+ ]</h6><br />
<div class="intro"> [ +introtext+ ] </div> <br />
<p class="ditto_link"> [ +link+ ] </p> <br />
</div>
В чанке используются placeholder (подстановки). На место [ +title+ ] будет подставлено поле title, на место [ +introtext+ ] - поле introtext, а вот на место [ +date+ ] будет подставлено поле, заданное аргументом &dateSource=`pub_date`,то есть дата публикации, а не дата создания или редактирования документа - это позволяет управлять тем, какая именно дата будет отображаться. Можно ведь написать новость заранее, задать дату публикации, и именно эта дата будет показана на странице.
Для Ditto имеется несметное количество аргументов. Мы их разбирать здесь не будем. В следующих заметках обозначим некоторые проблемы работы с новостями.
Написать комментарий