lan143/yii2-rss

This extension adds support rss to your project

Installs: 78

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 1

Open Issues: 0

Type:yii2-extension

0.1.1 2018-01-15 21:02 UTC

This package is not auto-updated.

Last update: 2024-06-09 03:34:31 UTC


README

Yii2 module for automatically generating RSS 2.0 feed.

Installation

The preferred way to install this extension is through composer.

  • Either run
php composer.phar require "lan143/yii2_rss" "*"

or add

{
  "require": {
    "lan143/yii2_rss": "*"
  } 
}

to the require section of your application's composer.json file and run composer update.

Configuration

  • Configure the cache component of your application's configuration file, for example:
'components' => [
    'cache' => [
        'class' => \yii\caching\FileCache::class,
    ],
]
  • Add a new module in modules section of your application's configuration file, for example:
'modules' => [
    'rss' => [
        'class' => \lan143\yii2_rss\Rss::class,
        'channels' => [
            // one model per channel
            [
                'model' => \app\models\Records::class,
            ],
            // or configuration for creating a behavior
            [
                'title' => 'Liftoff News', // not required, default Application name 
                'link' => 'http://liftoff.msfc.nasa.gov/', // not required, default Url::home
                'description' => 'Liftoff to Space Exploration.', // default empty
                'language' => 'en-us', // not required, default Application language
                'model' => [
                    'class' => \app\models\Records::class,
                    'behaviors' => [
                        'rss' => [
                            'class' => \lan143\yii2_rss\RssBehavior::class,
                            'scope' => function (\yii\db\ActiveQuery $query) {
                                $query->orderBy(['created_at' => SORT_DESC]);
                            },
                            'dataClosure' => function (\app\models\Records $model) {
                                return [
                                    'title' => $model->title,
                                    'link' => \yii\helpers\Url::to(['records/view', 'id' => $model->id], true),
                                    'description' => $model->description,
                                    'pubDate' => (new \DateTime($this->created_at))->format(\DateTime::RFC822),
                                ];
                            }
                        ],
                    ],
                ],
            ],
        ],
        'cacheExpire' => 1, // 1 second. Default is 15 minutes
    ],
],
  • Add behavior in the AR models, for example:
use DateTime;
use lan143\yii2_rss\RssBehavior;
use yii\db\ActiveQuery;
use yii\helpers\Url;

public function behaviors(): array
{
    return [
        'rss' => [
            'class' => RssBehavior::class,
            'scope' => function (ActiveQuery $query) {
                $query->orderBy(['created_at' => SORT_DESC]);
            },
            'dataClosure' => function (self $model) {
                return [
                    'title' => $model->title,
                    'link' => Url::to(['records/view', 'id' => $model->id], true),
                    'description' => $model->description,
                    'pubDate' => (new DateTime($this->created_at))->format(DateTime::RFC822),
                ];
            }
        ],
    ];
}
  • Add a new rule for urlManager of your application's configuration file, for example:
'urlManager' => [
    'rules' => [
        ['pattern' => 'rss', 'route' => 'rss/rss/index', 'suffix' => '.xml'],
    ],
],