typehco 插件加上更新提醒github版本检测

chen'mo
2021-03-08 / 0 评论 / 8,743 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年03月08日,已超过1349天没有更新,若内容或图片失效,请留言反馈。


直接上教程:

  1. 第一步你得有个github仓库吧,在仓库右侧有个release


这个就是说我们需要给作品发布一个新版本的时候,就release一个。

点击 release -> Drafr a new release

我们可以给我们的版本添加一些信心。Tag version这里,建议填写数字版本号,比如 1.0.0,title可以填写和tag 一样。
description就写一些描述。在下面附件栏那里。如果不上传的话,github 会自动打包你 push 的最新代码,如果手动上传的话,那么最后就会显示你上传的附件。

这里假设我已经 release 了一个 1.0.0 的版本。

  1. 编写更新检测代码
var wxfversion = "1.0.0";
function update_detec() {
    var container = document.getElementById("wxfans");
    if (!container) {
        return
    }
    var ajax = new XMLHttpRequest();
    container.style.display = "block";
    ajax.open("get", "https://api.github.com/repos/gogobody/WxFans/releases/latest");
    ajax.send();
    ajax.onreadystatechange = function() {
        if (ajax.readyState === 4 && ajax.status === 200) {
            var obj = JSON.parse(ajax.responseText);
            var newest = obj.tag_name;
            if (newest > wxfversion) {
                container.innerHTML = "发现新主题版本:" + obj.name + '。下载地址:<a href="' + obj.zipball_url + '">点击下载</a>' + "<br>您目前的版本:" + String(wxfversion) + "。" + '<a target="_blank" href="' + obj.html_url + '">查看新版亮点</a>'
            } else {
                container.innerHTML = "您目前的版本:" + String(wxfversion) + "。" + "您目前使用的是最新版主题。"
            }
        }
    }
};
update_detec();

需要改动的有两处:

var wxfversion = "1.0.0";//修改为自己的当前版本号
ajax.open("get", "https://api.github.com/repos/gogobody/WxFans/releases/latest"); // 主要修改gogobody/WxFans为你的 github用户名/你的仓库repo名字

这样代码会自动去检测你的 repo 的release 的最新版本,并对 tag version 做比较。

  1. 嵌入 typecho 插件

首先我们要对刚刚的js进行压缩,也就是压缩成一行,不然放进插件换行会被替换为
导致代码失效。
js压缩的网址有很多: 比如 菜鸟js压缩工具

通常一个typecho插件 plguin.php 的顶部注释说明是这样,以下为模板可以直接套用,将压缩后的 js 放入后即可。

/**
 * 我是插件说明
 * <div class="wxFansSet"><a style="width:fit-content" id="wxfans">版本检测中..</div>&nbsp;</div><style>.wxFansSet{margin-top: 5px;}.wxFansSet a{background: #ff5a8f;padding: 5px;color: #fff;}</style>
 * <script>在这里插入压缩后的代码</script>
 * @package 我是插件名字
 * @author <a href="https://www.ijkxs.com">即刻学术<br> gogobody</a>
 * @version 1.0.0
 * @link https://www.ijkxs.com
 */

这样就完成了一个在插件页检测 github 更新的功能。

typecho 插件里获取插件版本号

/**
 * 我是插件说明
 * @package 我是插件名字
 * @author <a href="https://www.ijkxs.com">即刻学术<br> gogobody</a>
 * @version 1.0.0
 * @link https://www.ijkxs.com
 */

在typecho 插件头部说明注释中声明了 version 之后,在插件内部如何获取这个 version 呢?

可以通过以下代码获取:

public static function get_plugins_info(){
    $plugin_name = 'WxFans'; //改成你的插件名
    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'];
    }
}
typecho主题时光机微信发送系统
« 上一篇 03-07
SmartSpam-Typecho评论过滤插件
下一篇 » 03-08

评论 (0)

插入图片