devcreative/socialfeed

允许您显示来自各种社交媒体网站的聚合帖子流。

安装: 15

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

开放问题: 0

类型:silverstripe-module

dev-master 2017-06-21 21:11 UTC

This package is not auto-updated.

Last update: 2024-09-24 17:30:41 UTC


README

简介

此模块允许您显示来自各种社交媒体网站的聚合帖子流。

目标

  • 允许您无缝地将多个社交媒体网站的帖子集成到新闻或博客页面中。
  • 帮助您在API访问限制内。
  • 通过在本地数据库中缓存帖子来加快页面加载速度。

功能

  • 实现了Facebook、Instagram、Twitter和YouTube类型的数据流。
  • 可以使用同一类型的多个数据流。

我的意图是使其更容易适应其他框架。核心功能不依赖于Silverstripe。

屏幕截图

社交流页面

SocialFeed Page

Cms中同步的帖子

Synced posts in the cms

Synced posts in the cms

页面加载时由JavaScript调用的同步操作的响应

(您必须以管理员身份登录。)

Response of the sync action called by js on page load

安装

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中或在配置文件中可编辑。