直接上教程:
- 第一步你得有个github仓库吧,在仓库右侧有个release
这个就是说我们需要给作品发布一个新版本的时候,就release一个。
点击 release -> Drafr a new release
我们可以给我们的版本添加一些信心。Tag version这里,建议填写数字版本号,比如 1.0.0,title可以填写和tag 一样。
description就写一些描述。在下面附件栏那里。如果不上传的话,github 会自动打包你 push 的最新代码,如果手动上传的话,那么最后就会显示你上传的附件。
这里假设我已经 release 了一个 1.0.0 的版本。
- 编写更新检测代码
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 做比较。
- 嵌入 typecho 插件
首先我们要对刚刚的js进行压缩,也就是压缩成一行,不然放进插件换行会被替换为
导致代码失效。
js压缩的网址有很多: 比如 菜鸟js压缩工具
通常一个typecho插件 plguin.php 的顶部注释说明是这样,以下为模板可以直接套用,将压缩后的 js 放入后即可。
/**
* 我是插件说明
* <div class="wxFansSet"><a style="width:fit-content" id="wxfans">版本检测中..</div> </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'];
}
}
评论 (0)