Напомним, что для трансляции RSS-ленты мы использовали вызов Ditto:
[ !Ditto? &startID=`1498` &format=`rss` &tpl=`ditto_rss_tpl`! ]
Здесь в качестве параметров задавался format ленты rss и чанк для формирования вывода ditto_rss_tpl.
Для вывода ленты в формате Atom можно также сделать вызов Ditto:
[ !Ditto? &startID=`1498` &format=`atom` &tpl=`ditto_atom_tpl`! ]
Здесь в качестве параметров задаем format ленты atom и чанк для формирования вывода ditto_atom_tpl.
Собственно все секреты вывода ленты в формате Atom заключаются в правильном написании чанка ditto_atom_tpl.
Сравним чанки
| ditto_rss_tpl |
ditto_atom_tpl |
|
<item> <title> [ +rss_pagetitle+ ] </title> <link> [ (site_url) ] [ ~ [ + id + ] ~ ] </link> <description> <![CDATA [ [ +longtitle+ ] ] ]> </description> <pubDate> [ +rss_date+ ] </pubDate> <guid isPermaLink="false"> [ (site_url)] [ ~ [ + id + ] ~ ] </guid> <dc:creator> [ +rss_author+ ] </dc:creator> [ +tagLinks+ ] </item> |
<entry> <title> [ +atom_escaped_pagetitle+ ] </title> <link rel="alternate" type="text/html" href="[ (site_url) ] [ ~ [ + id + ] ~ ]" /> <author> <name> [ +atom_author+ ] </name> </author> <id>[ + url +] </id> <summary> <![CDATA [ [ +longtitle+ ] ] ]> </summary> <updated> [ +atom_editedon+ ] </updated> <published> [ +atom_createdon+ ] </published> </entry> |
Напоминаем, эти чанки формируют вывод одной новости. Различия выделены жирным шрифтом. Перенос по строкам сделан для облегчения понимания.
Как видим, различия весьма существенные. Вместо элемента item в RSS для Atom используется элемент entry, ссылка на полную новость в RSS сделана в виде текста элемента, а в Atom - в виде атрибута и так далее.
Особое различие имеется в плейсхолдерах rss_pagetitle и atom_escaped_pagetitle, rss_date и atom_editedon.
Критиковать или хвалить форматы мы не будем - просто принимаем различия как фактор, который надо учитывать. Заметим, что добиться правильного отображения формата Atom удалось не сразу. Надо не только получить правильную на вид ленту, но и добиться, чтобы она была синтаксически правильной. Делать это можно с помощью сервиса
Введя адрес своей ленты, её можно проверить. Сначала могут быть и ошибки:
После ряда корректировок добиваемся отсутствия ошибок (да и то с рекомендациями):
Но результаты получаются такие:
Лента нашего сайта в формате RSS:
Лента нашего сайта в формате Atom:
Оба примера отображают ленту напрямую, в браузере Firefox. Обе ленты, как и положено, выглядят одинаково, независимо от используемого формата.
Если же встроить ссылки на ленты в страницы сайта, работающем под управлением MODx, то они будут выглядеть, конечно иначе. Например, лента нашего сайта, встроенная в сам сайт, выглядит так:
А как мы узнали о существовании параметра format=atom, о плейсхолдерах с префиксом atom_ и о именах элементов? Об параметре atom есть упоминание в документации на Ditto, а вот плейсхолдеры и префиксы пришлось разыскивать в assets/snippets/ditto/formats/atom.format.inc.php.
Там же нашелся и образец чанка новости для Atom.
Итоги:
Мы умеем теперь выдавать ленту сайта и в формате RSS, и в формате Atom. Хотя нам кажется формат RSS более распространенным, сделаем-ка мы для сайта кнопки и RSS, и Atom. "Шоб как у людей".
Написать комментарий