承接 yurkinx/yii2-rss 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yurkinx/yii2-rss

最新稳定版本:1.0.2

Composer 安装命令:

composer require yurkinx/yii2-rss

包简介

Yii2 Framework extension to provide functionality for consuming RSS and Atom feeds using zend-feed library.

README 文档

README

Yii2 Framework extension to provide functionality for consuming RSS and Atom feeds using zend-feed library.

Installation

{
	"require": 
	{
  		"yurkinx/yii2-rss": "dev-master"
	}
}

Configuration

In config file

/config/web.php

Add feed component

'components' => array(
        ...
        'feed' => array(
        	 	'class' => 'yii\feed\FeedDriver',
        		),
		    )

Simple usage

Read Rss feed:

$feed=Yii::$app->feed->reader()->import('http://exapmple.com/feed.rss');

This will get RSS feed, parse it and return feed object. For more details you can read the official Zend-feed extention documentaion: http://framework.zend.com/manual/2.2/en/modules/zend.feed.reader.html

Create Rss feed:

Create action Rss in controller

public function actionRss(){
		
     $feed=Yii::$app->feed->writer();
		
    $feed->setTitle(Yii::$app->params['title']);
		$feed->setLink('http://example.com');
		$feed->setFeedLink('http://example.com/rss', 'rss');
		$feed->setDescription(Yii::t('app','Recent headlines'));
		$feed->setGenerator('http://example.com/rss');
		$feed->setDateModified(time()); 
		/**
		* Add one or more entries. Note that entries must
		* be manually added once created.
		*/
		$posts=Post::find()->orderBy('id DESC')->limit(20)->all();
		foreach($posts as $post){
				$entry = $feed->createEntry();
				$entry->setTitle($post->title);
				$entry->setLink(Yii::$app->urlManager->createAbsoluteUrl('/post/view',['id'=>$post->id]));
				$entry->setDateModified(intval($post->created));
				$entry->setDateCreated(intval($post->created));
				$entry->setContent(
				   $post->content
				);
				$entry->setEnclosure(
					[
					 'uri'=>$post->image,
					 'type'=>'image/jpeg',
					 'length'=>filesize(Yii::getAlias('@webroot').$post->image)
					 ]
				);
				$feed->addEntry($entry);
		}
		/**
		* Render the resulting feed to Atom 1.0 and assign to $out.
		* You can substitute "atom" with "rss" to generate an RSS 2.0 feed.
		*/
		$out = $feed->export('rss');
		header('Content-type: text/xml');
		echo $out;
		die();
	}

Then it's better to cache it with cache component:

public function behaviors() {
		return [
			....
			'cache'=> [
				'only'=>['rss'],
				'class'=>PageCache::className(),
				'duration'=>0,
				'dependency'=>[
					       'class' => 'yii\caching\DbDependency',
					       'sql' => 'SELECT max(time_updated) as max FROM tbl_post',
					       
					      ],
			]
		];
	}

Take a look at Zend-feed writer official documentaion for more advanced usage of Zend-feed http://framework.zend.com/manual/2.2/en/modules/zend.feed.writer.html

统计信息

  • 总下载量: 4.03k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 2
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2013-11-15