devcreative / socialfeed
允许您显示来自各种社交媒体网站的聚合帖子流。
dev-master
2017-06-21 21:11 UTC
Requires
- silverstripe/cms: ~3.3
- silverstripe/framework: ~3.3
Replaces
- silverstripe/socialfeed: *
This package is not auto-updated.
Last update: 2024-09-24 17:30:41 UTC
README
简介
此模块允许您显示来自各种社交媒体网站的聚合帖子流。
目标
- 允许您无缝地将多个社交媒体网站的帖子集成到新闻或博客页面中。
- 帮助您在API访问限制内。
- 通过在本地数据库中缓存帖子来加快页面加载速度。
功能
- 实现了Facebook、Instagram、Twitter和YouTube类型的数据流。
- 可以使用同一类型的多个数据流。
我的意图是使其更容易适应其他框架。核心功能不依赖于Silverstripe。
屏幕截图
社交流页面
Cms中同步的帖子
页面加载时由JavaScript调用的同步操作的响应
(您必须以管理员身份登录。)
安装
composer require "devcreative/socialfeed"
用法
-
编辑配置文件:Socialfeed.yaml
(可以添加同一类型的多个数据流。) -
创建一个新的SocialFeedPage。
将帖子与新闻结合的示例
//news source class News extends DataObject { private static $db = array( ,"Date" => "Date" ,"Title" => "Varchar(255)" ,"Content" => "HTMLText" ); public function date() { return $this->Date; } //... } class SocialFeedPage_Controller extends Page_Controller { //... public function getPosts() { //get news and posts $allNews = News::get(); $allPosts = $this->feeds->getAllPosts(); //merge into one array foreach ($allNews as $news) { array_push($allPosts, $news); } //sort by date usort($allPosts, function($a, $b) { return ($a->date() < $b->date())?true:false; }); //create ArrayList for template $list = ArrayList::create(array()); //add the sorted news and posts foreach ($allPosts as $post) { $list->push( (get_class($post) == "News")?$post:ArrayData::create($post->data()) ); } return new ArrayData(array("Posts" => $list)); } //... } //templates may need to be modified to display news
待办事项
- 每个API都有不同的访问限制。目前只有一个默认值可用:两次同步之间必须间隔10分钟。应为每个数据流类实现canSync()函数。
- 在Cms中创建一个用于数据流设置的行政区域,而不是使用yaml文件
- 查询和处理字段硬编码在数据流类中。它们应该在Cms中或在配置文件中可编辑。