inspirecharles/rsswriter

用于自动生成RSS 2.0频道的Yii2模块

安装: 64

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 0

分支: 0

开放问题: 0

类型:yii2-extension

1.0.1 2018-02-08 09:40 UTC

This package is not auto-updated.

Last update: 2024-09-23 18:26:24 UTC


README

自动生成RSS 2.0频道的Yii2模块。

主要功能

  • 自动缓存RSS频道
  • 无限数量的RSS频道
  • 灵活的模块配置

安装

安装此扩展的首选方式是通过composer

  • 运行以下命令之一
php composer.phar require --prefer-dist "inspirecharles/rsswriter" "*"

或者

"inspirecharles/rsswriter" : "*"

将以下内容添加到您的应用程序的composer.json文件中的require部分。

  • migrations文件夹中应用所有可用的迁移
$ php yii migrate/up --migrationPath=@vendor/inspirecharles/rsswriter/migrations
  • 配置应用程序配置文件中的cache组件,例如
'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
]
  • 在应用程序配置文件的modules部分添加新模块,例如
'modules' => [
    'rss' => [
        'class' => 'inspirecharles\rss\Rss',
        'feeds' => [
            'rss' => [
                'title' => 'Feed title',
                'description' => 'feed description',
                'link' => 'http://your.site.com/',
                'language' => 'en-US'
            ],
        ]
    ],
],
  • 在应用程序配置文件的urlManager部分添加新规则,例如
'urlManager' => [
    'rules' => [
        ['pattern' => '<id:rss>', 'route' => 'rss/default/index', 'suffix' => '.xml'],
    ],
],
  • <head>标签中添加新的<link>标签,例如
<link rel="alternate" type="application/rss+xml" title="RSS feed" href="/rss.xml" />

用法

例如

...
public function beforeSave($insert)
{
    if (parent::beforeSave($insert)) {
        if ($insert) {
            $rss = Yii::$app->getModule('rss');
            $rssItem = $rss->createNewItem();

            $rssItem->title = $this->title;
            $rssItem->description = $this->description;
            $rssItem->link = Url::to($this->url, true);
            $rssItem->pubDate = time();

            return $rss->addItemToFeed('rss', $rssItem);
        }
        return true;
    }
    return false;
}

public function afterDelete()
{
    parent::afterDelete();
    $rss = Yii::$app->getModule('rss');
    
    $rss->deleteItems('rss', ['link' => Url::to($this->url, true)]);
}