При работе с новостными лентами мы сталкиваемся с двумя вопросами:
1. Нам необходимо встроить ленту с чужого сайта в страницу собственного. Этот вопрос решался использованием сниппета NewsParserX (или заимствованного из Etomite сниппета NewsParser2, что практически одно и то же).
2. Трансляция собственной ленты новостей, чтобы её можно было просматривать в браузерах или встраивать в другие сайты. Этот вопрос решался использованием сниппета Ditto.
Как это делается - рассмотрено в заметке RSS-ленты.
Проблемы возникли с лентой в формате Atom. Cниппет NewsParserX такие ленты читать не умеет, поэтому пришлось искать другое решение.
Вообще-то мы сделали таблицу, в которой сравниваются особенности форматов, но публиковать её здесь не будем - кому нужны детали, легко найдут все необходимые сведения в Интернет. Здесь мы кратко разберем основные вопросы. Итак,
Как встроить ленту Atom в сайт, работающий под MODx
Соответствующего сниппета в "extras" MODx не нашлось. Удалось найти в англоязычном форуме сниппет PieX версии 0.5 (попроще) и версии 0.6.1 (покруче). Они используют в качестве движка систему SimplePie. Это довольно навороченный движок универсального назначения. Его можно поставить и самостоятельно, скачав файл simplepie_1.2.zip:
Проверка показала, что SimplePie отображает разные форматы. И, что особенно приятно, имеется интеграция с MODx.
Самая свежая сборка для MODx 0.6.1. В сборку не входит simplepie.inc - этот главный файл надо брать из дистрибутива SimplePie.
Для работы нужно распаковать в подкаталог assets файлы:
- /snippets/simplepie/class.html2text.inc
- /snippets/simplepie/simplepie.inc - из дистрибутива simplepie_1.2.zip.
- /snippets/simplepie/simplepie_hatena.inc - может и не понадобиться, это пример особой конфигурации.
- /snippets/simplepie/piex.snippet.php - это код сниппета, который необходимо вставить в системе управления
Далее в обычном порядке создаем в MODx сниппет pieX и вставляем код из piex.snippet.php. Сниппет позволяет задать и параметры по умолчанию, т.е. не связываться с корректировкой исходного текста.
Вот эту строку рекомендуют вставить в Параметры по умолчанию:
&cache_enable=cache enable;text;true &cache_time=cache life time;text;60 &extclass=extend item class;text;
&noitem=no item template chunk name;text; &dateformat=date format;text;%Y/%m/%d %H:%M
&max=max items;text;30 &rows=pattern rows;text;0 &embed=embed property Chunk Name;text;
Мы эту строку исправили - русифицировали названия параметров и изменили значения по умолчанию, например формат даты. Да и параметров, судя по коду, может быть больше, вот их полный список:
cache_enable, cache_time, extclass, header, item, footer, noitem, embedparam, dateformat, max, rows, feedURL
Наша строка параметров будет иметь вид
&cache_enable=Кэшировать?;text;true &cache_time=Время жизни кэша;text;60
&header=Чанк заголовка;text;pieX_header &item=Чанк пункта;text;pieX_item
&noitem=Чанк пустого пункта;text;pieX_noitem &footer=Чанк концовки;text;pieX_footer
&extclass=Расширенный класс;text;
&dateformat=Формат даты;text;%d.%m.%Y %H:%M
&max=Максимум пунктов;text;10 &rows=Максимум рядов;text;0
После сохранения сниппета параметры отобразятся списком:
Здесь их можно изменять, чтобы поменьше задавать аргументов при вызове сниппета.Дополнительные чанки
Создадим собственные дополнительные чанки - чтобы менять отображение ленты на свой вкус.
Чанк заголовка pieX_header:
<h4><a href="" title=""></a></h4><ul>
Здесь мы просто сделали заголовок и открыли список новостей
Чанк пункта pieX_item:
<li>
<strong><a href="" title="[ + description + ]"> [ + title + ]</a><br / >[ + date + ]</strong>
<br / >[ + description(html) + ] <br / >
[ + category + ]
</li>
<hr />
Это основной чанк, отображающий новость. Здесь можно всячески упражняться со вставкой плейсхолдеров.
<div class="light_box">Новость недоступна</div>
Чанк концовки pieX_footer
</ul>
{ { HR } }
Вызов
После настройки параметров по умолчанию можно выполнять простой вызов сниппета в виде:
[ ! pieX? &url=`feedURL`! ]
[ ! pieX? &url=`http://news.kremlin.ru/feeds/news` ! ]
Важно!
Если в url ленты встречаются символы ?, = или & их необходимо перепиcывать!.
Замены производятся по правилу:
"?" => |xq|
"=" => |xe|
"&" => |xa|
Например
[ ! pieX? &url=`http://yoursite.com/index.php?act=rss&id=1`! ]
надо заменить на:
[ ! pieX? &url=`http://yoursite.com/index.php|xq|act|xe|rss|xa|id|xe|1` ! ]
Итоги
После установки и настройки сниппета PieX мы попробовали, как он показывает ленты различных форматов, например:
Новости Президента России в формате Atom:
Новости сайта DWG.RU в формате RSS:
Сниппет PieX хорошо отображает требуемые нам форматы. Следовательно, от сниппетов NewsParserX и NewParser2 мы можем вообще избавиться.
Написать комментарий