====== Шаг6. Создание RSS-feed новостной ленты ======
RSS - неотъемлемая часть любого часто обновляемого проекта. В данном документе мы покажем, как можно создать RSS-feed при помощи Limb и MACRO.
Допустим, что нам необходимо сделать RSS-feed для последних новостей нашего туториала.
Создадим контроллер **RssController.class.php**, который будет делать вот что:
* получать последние новости,
* сортировать их по дате последней модификации,
* выставлять необходимые заголовки для RSS-ленты,
* передавать обработанные данные в MACRO шаблон, где будет формироваться XML.
Вот его исходный код:
array('date' => 'DESC', 'title' => 'ASC'),
'limit' => 5
);
$this->news = lmbActiveRecord::find('News', $params);
$this->response->addHeader('Content-type: application/xml');
}
}
Выборка последних новостей уже не должна вызывать у вас никаких затруднений, в данном случае мы просто сортируем сразу по двум параметрам.
А вот строка добавления заголовка уже интереснее. Вы уже знакомы с объектом [[limb3:ru:packages:net:lmb_http_request|запроса lmbHttpRequest]] (доступным через $this->request в контроллере и шаблоне), аналогично можно работать и с объектом [[limb3:ru:packages:net:lmb_http_response|ответа lmbHttpResponse]]. Здесь через метод addHeader добавляется HTTP-заголовок, необходимый для интерпретации отдаваемого сервером вывода как XML-документа.
Добавим шаблон template/rss/display.phtml. Вот он:
YourDomain.com last newsenLast 5 news from our site
{{route_url/}}
{{list using="$#news" as="$item"}}
{{list:item}}
g{$item->id}{$item->title}
{{route_url params="controller:news,action:detail,id:{$item->id}"/}}
{$item->annotation}=date('r', strtotime($item->date));?>
{{/list:item}}
{{/list}}
Отметим несколько деталей:
MACRO корректно обрабатывает xml-заголовок при включенных [[http://www.php.net/manual/en/ini.core.php#ini.short-open-tag|short tags]], вызывающих конфликты в обычных php-скриптах.
{{route_url/}}
Тег [[limb3:ru:packages:macro:tags:lmb_request_tags:lmb_route_url_tag| {{route_url/}}]] вызванный без параметров, возвращает абсолютную ссылку на текущую страницу.
=date('r', strtotime($item->date));?>
PHP-вставка выводит дату новости в нужном для RSS-формате.
В качестве финального штриха добавим ссылку на рсс-ленту в заголовок всех страниц нашего туториала, изменив шаблон template/page.phtml.
Limb3 tutorial
{{slot id="page_placeholder"/}}
Все! RSS-лента готова!
Спасибо, что дошли наш туториал до конца. Надеемся, что вам было интересно и познавательно.
===== Далее =====
* [[.step7|Шаг7. Рекомендации по дальнейшему изучению]]