QuickBlog
一文多发系统,即一个平台文章以及维护编辑内容,文章自动同步到多个平台并更新。
程序采用PHP编写,使用Laravel框架为基础。
支持的平台
目前QuickBlog支持以下平台。
预览图
环境使用
PHP:建议7.0以上
MySQL:5.7 以上
安装使用
1.通过composer安装依赖
composer update
2.生成KEY和创建数据库
复制一份配置.env.example为.env,并修改其中的数据库参数。
php artisan key:generate
php artisan migrate
3.安装插件
平台同步采用插件的形式集成在系统中,执行命令将予以安装并将信息存储到数据库。
php artisan plugin:install
4.写入管理员信息
最后,通过写入默认管理员信息获得后台管理的访问权限。
php artisan admin:create
执行完毕后,你会得到默认的管理员信息以及访问地址。
>>新建管理员成功<<
用户名:quickblog@eller.tech
密码:admin888
登录地址:http://localhost/login
5.设置计划任务
通过linux系统的计划任务来运行系统以及调度同步任务计划,目前同步功能10分钟进行一次。
通过 crontab -e 写入以下命令,其中路径需要自行替换。
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
License
暂无!
插件
博客平台发布采用插件式开发,隔三差五零散拾写,很多细节不太规范。
具体参考如下:
所有插件必须继承于 App\Services\Plugin
所有插件必须存在于app/Services/Plugins目录下,以大驼峰法命名。
目前插件是以单文件的形式存在。
如:app/Services/Plugins/Oschina.php
同步文章
作为一个插件,最重要的是实现同步文章的这个过程。
所以,首先实现这个方法。
/**
* 更新同步计划
* 插件需要继承并实现
* @param PostsSchemes $postsScheme
* @return bool|string
*/
abstract public function updateScheme(PostsSchemes $postsScheme);
// 同步过程,需要自行try catch捕获,防止发生错误。
// 首先判断是否是需要同步的计划
// if( $postsScheme->isWaitSyncStatus() ) {}
// 开始同步时需要将计划设置为正在同步,防止重复同步。
// $postsScheme->setSynching();
// 同步成功,需要将计划设置为成功。
// $postsScheme->setSynced(); //设置已经同步完成
// 如果同步失败,则需要将计划设置为失败状态。
// $postsScheme->setSyncFailed();// 同步失败,设置状态
// 如果同步出错,需要返回错误字符串,将会在命令行展示。
// return $exception->getMessage();
在同步文章时,可以通过$postsScheme->third_id是否为空来分辨当前任务是更新还是新增。
当然,$postsScheme->third_url这个值也是可以的,不过需要注意的是,这两个值都需要你自行维护。
当文章新增更新完成时,你都要及时将这两个值更新为最新的。
third_id为第三方平台对应博文的ID,third_url为第三方平台对应博文的URL。
分类关联
如果你所对接的博客平台拥有自己的分类,那么你可以通过此方法和QuickBlog内置的分类进行对接关联。
在这里你只需要实现获取第三方平台分类的名称和id就好,id是以varchar(255)存储于数据库的,所以不局限于int型的ID。
/**
* 分类列表接口
* 必须返回键值对 [ '分类ID' => '分类名]
* @return array
*/
abstract function categoryList();
需要记住的是,就算你的平台没有分类,也要在这里实现,并返回空数组。
当你的插件编写成功后,你可以在对应平台的设置中找到关联分类。
那么假设你的分类关联成功了,当平台进行同步文章时,你的插件将会被动调起。
当你在update方法中更新文章时,就就可以通过如下方法获得这篇文章关联的平台ID和名称。
$postsScheme->getUnionCategory()
// [ name => '', id => '']