Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Работа с форматами RSS и Atom


В заметке о публикации лент новостей был приведен пример встраивания ленты сайта kremlin.ru в страницу нашего сайта. Эту и другие ленты мы получали несколько лет. Однако с 1 сентября 2009 года изменился и дизайн сайта Президента Российской федерации, и формат ленты новостей.


Лента новостей стала выдаваться в формате Atom. Не вдаваясь в детали отметим, что это несколько иной формат, чем у RSS. Имеющиеся у нас и в репозитории MODx сниппеты такую ленту читать не умеют. А лента нам нужна, да и не только эта.

При работе с новостными лентами мы сталкиваемся с двумя вопросами:

1. Нам необходимо встроить ленту с чужого сайта в страницу собственного. Этот вопрос решался использованием сниппета NewsParserX (или заимствованного из Etomite сниппета NewsParser2, что практически одно и то же). 

2. Трансляция собственной ленты новостей, чтобы её можно было просматривать в браузерах или встраивать в другие сайты. Этот вопрос решался использованием сниппета Ditto.

Как это делается - рассмотрено в заметке RSS-ленты.

Проблемы возникли с лентой в формате Atom. Cниппет NewsParserX такие ленты читать не умеет, поэтому пришлось искать другое решение.

Atom - это основанный на XML формат, предназначенный для новостных лент, анонсов статей и так далее. Удобен для использования в блогах, однако может применяться и для любых других новостных и периодических изданий в Интернете. Форматы Atom и RSS - основные, выжившие в конкурентной борьбе множества форматов. Так уж получилось, что формат Atom активно поддерживает Google, а формат RSS -фирма Microsoft. Простую и понятную статью Синдикация с аггрегацией о форматах можно прочитать на сайте Компьютерры.

   Вообще-то мы сделали таблицу, в которой сравниваются особенности форматов, но публиковать её здесь не будем - кому нужны детали, легко найдут все необходимые сведения в Интернет. Здесь мы кратко разберем основные вопросы. Итак,

Как встроить ленту Atom в сайт, работающий под MODx

Соответствующего сниппета в "extras" MODx не нашлось. Удалось найти в англоязычном форуме сниппет PieX версии 0.5 (попроще) и версии 0.6.1 (покруче).  Они используют в качестве движка систему SimplePie. Это довольно навороченный движок универсального назначения. Его можно поставить и самостоятельно, скачав файл simplepie_1.2.zip:

Проверка SimplePie

Проверка SimplePie

Проверка показала, что 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 /> 

Это основной чанк, отображающий новость. Здесь можно всячески упражняться со вставкой плейсхолдеров.

Чанк пустого пункта pieX_noitem
<div class="light_box">Новость недоступна</div>

Чанк концовки pieX_footer
</ul>	
{ { HR } }

Вызов

После настройки параметров по умолчанию можно выполнять простой вызов сниппета в виде:
[ ! pieX? &url=`feedURL`! ]
Здесь 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: 

Новости DWG.RU

Новости DWG.RU

Сниппет PieX хорошо отображает требуемые нам форматы. Следовательно, от сниппетов NewsParserX и NewParser2 мы можем вообще избавиться.

 

 

 

07-09-2009 16:24:13



    Содержание раздела «RSS и Atom»:
Комментарии любых посетителей

Написать комментарий