前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Typecho教程 - 让插件实现检测新版本

Typecho教程 - 让插件实现检测新版本

作者头像
用砖头敲代码
发布2022-08-30 11:22:14
发布2022-08-30 11:22:14
36900
代码可运行
举报
文章被收录于专栏:用砖头敲代码用砖头敲代码
运行总次数:0
代码可运行

灵感来源

在写ArticlePoster插件的时候,应广大(4个)用户的要求增加一个检测更新的功能,这就难住我了,后来只能秉承着“羊毛出在羊身上”的原则,找到了实现这个功能的思路。

功能实现

首先我们需要获取到插件的版本,我们内置一个版本号这种方法太low了,再说了,要是内置一个版本号的话,那岂不是就没有这篇文章的存在意义了么。 所以说我们想要获取插件的版本,可以调用Typecho相关的接口,在我一个文件一个文件的查看之后,终于发现了下面这行代码。

代码语言:javascript
代码运行次数:0
运行
复制
<?php Typecho_Widget::widget('Widget_Plugins_List@activated', 'activated=1')->to($activatedPlugins); ?>

这行代码是在admin目录下的Plugins.php,应该就是对应我们后台的插件那个页面,所以说据我分析这行代码应该就获取所有已激活的插件,然后我们枚举一下这个插件列表,就可以获取到插件的版本信息了。 虽然说有些笨,但是能用就好了,为了使用方便我都写成函数了,直接调用self::get_plugins_version();就可以实现获取插件的版本了

代码语言:javascript
代码运行次数:0
运行
复制
public static function get_plugins_info(){
    $plugin_name = 'TestPlugins'; //改成你的插件名
    Typecho_Widget::widget('Widget_Plugins_List@activated', 'activated=1')->to($activatedPlugins);
    $activatedPlugins = json_decode(json_encode($activatedPlugins),true);
    $plugins_list = $activatedPlugins['stack'];
    $plugins_info = array();
    for ($i=0;$i<count($plugins_list);$i++){
        if($plugins_list[$i]['title'] == $plugin_name){
            $plugins_info = $plugins_list[$i];
            break;
        }
    }
    if(count($plugins_info)<1){
        return false;
    }else{
        return $plugins_info['version'];
    }
}

使用示例

代码语言:javascript
代码运行次数:0
运行
复制
$version_new = '1.0.1'; //假设一个新版本
$version_now = self::get_plugins_version();
if(!$version_now){
    return '获取插件信息失败';
}
if($version_now != $version_new){ 
    //发现新版本
    return '发现新版本';
}else{
    //最新版本
    return '已经是最新版本';
}

大功告成

这样的话,我们就可以实现插件的检测更新了,不过我突然感觉,还是内置一个版本号比较香。 如果你们发现了Typecho的接口的话,记得分享给我。

如无特殊说明《Typecho教程 - 让插件实现检测新版本》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-64.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 灵感来源
  • 功能实现
  • 使用示例
  • 大功告成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档