
Снова используем мощь разработанных расширений для Yii2. Для формирования RSS потока на сайте применим экстеншн zelenin/yii2-rss.
После привычной процедуры установки расширения через сomposer, в основной контроллер SiteController добавим действие actionRss()
public function actionRss() { $dataProvider = new \yii\data\ActiveDataProvider([ 'query' => \app\models\Blog::find() ->orderBy(['create_time' => SORT_DESC]), 'pagination' => [ 'pageSize' => 10 ], ]); $response = Yii::$app->getResponse(); $headers = $response->getHeaders(); $headers->set('Content-Type', 'application/rss+xml; charset=utf-8'); $response->content = \Zelenin\yii\extensions\Rss\RssView::widget([ 'dataProvider' => $dataProvider, 'channel' => [ 'title' => 'Yiico – статьи по Yii2 и Yii', 'link' => Url::toRoute('/', true), 'description' => 'Статьи ', 'language' => Yii::$app->language ], 'items' => [ 'title' => function ($model, $widget) { return $model->title; }, 'description' => function ($model, $widget) { return StringHelper::truncateWords($model->text, 50); }, 'link' => function ($model, $widget) { return Url::toRoute(['blog/view', 'id' => $model->id, 'slug' => $model->slug], true); }, 'guid' => function ($model, $widget) { return Url::toRoute(['blog/view', 'id' => $model->id, 'slug' => $model->slug], true); }, 'pubDate' => function ($model, $widget) { $date = \DateTime::createFromFormat('Y-m-d H:i:s', $model->create_time); return $date->format(DATE_RSS); }, ] ]); }
Не забудьте добавить в начало контроллера
use yii\helpers\Url; use yii\helpers\StringHelper;
или там, где вызываются эти хелперы, указывайте полный путь до них.
Вот и всё, теперь по адресу http://site.ru/site/rss вы получите rss фид. Можно его импортировать в FeedBurner, он даёт больше возможностей управлять фидом и подписчиками. Для этого сайта я так и сделал – вот лента блога Yiico.ru: http://feeds.feedburner.com/yiico
17 июля 2015, Программирование, веб-кодинг, Расширения, виджеты / Метки: rss
16 января 2023

Yii2-user сменить текущего пользователя или переход на другого пользователя (SwitchIdentity)
Impersonate User / Become another user
12 декабря 2022

Yii2: uclead MultipleInput + kartik DepDrop
Настраиваем множественные поля с выпадающим списком