zelenin / yii2-rss
Yii2 RSS extension adds RSS-feed to your site
Installs: 135 563
Dependents: 5
Suggesters: 0
Security: 0
Stars: 43
Watchers: 2
Forks: 25
Open Issues: 1
Type:yii2-extension
Requires
- yiisoft/yii2: ~2
- zelenin/rss-generator: ~2.1@stable
This package is not auto-updated.
Last update: 2024-12-18 13:08:14 UTC
README
Yii2 RSS extension adds RSS-feed to your site
Installation
Composer
The preferred way to install this extension is through Composer.
Either run
php composer.phar require zelenin/yii2-rss "~0.1"
or add
"zelenin/yii2-rss": "~0.1"
to the require section of your composer.json
Usage
Add action to your controller:
public function actionRss() { $dataProvider = new ActiveDataProvider([ 'query' => Post::find()->with(['user']), 'pagination' => [ 'pageSize' => 10 ], ]); $response = Yii::$app->getResponse(); $headers = $response->getHeaders(); $headers->set('Content-Type', 'application/rss+xml; charset=utf-8'); echo \Zelenin\yii\extensions\Rss\RssView::widget([ 'dataProvider' => $dataProvider, 'channel' => [ 'title' => function ($widget, \Zelenin\Feed $feed) { $feed->addChannelTitle(Yii::$app->name); }, 'link' => Url::toRoute('/', true), 'description' => 'Posts ', 'language' => function ($widget, \Zelenin\Feed $feed) { return Yii::$app->language; }, 'image'=> function ($widget, \Zelenin\Feed $feed) { $feed->addChannelImage('http://example.com/channel.jpg', 'http://example.com', 88, 31, 'Image description'); }, ], 'items' => [ 'title' => function ($model, $widget, \Zelenin\Feed $feed) { return $model->name; }, 'description' => function ($model, $widget, \Zelenin\Feed $feed) { return StringHelper::truncateWords($model->content, 50); }, 'link' => function ($model, $widget, \Zelenin\Feed $feed) { return Url::toRoute(['post/view', 'id' => $model->id], true); }, 'author' => function ($model, $widget, \Zelenin\Feed $feed) { return $model->user->email . ' (' . $model->user->username . ')'; }, 'guid' => function ($model, $widget, \Zelenin\Feed $feed) { $date = \DateTime::createFromFormat('Y-m-d H:i:s', $model->updated_at); return Url::toRoute(['post/view', 'id' => $model->id], true) . ' ' . $date->format(DATE_RSS); }, 'pubDate' => function ($model, $widget, \Zelenin\Feed $feed) { $date = \DateTime::createFromFormat('Y-m-d H:i:s', $model->updated_at); return $date->format(DATE_RSS); } ] ]); }
Author
Aleksandr Zelenin, e-mail: aleksandr@zelenin.me