volantis使用php实现Gitee友链
介绍
本文使用Gitee实现Volantis主题友链功能,其中友链使用的是site标签,因为该标签可以展示图片,如
{% sites repo:example.json api:https://example.dearxuan.com %}
友链api的最终路径为 api + “版本” + repo,如上面代码的最终路径为
https://example.dearxuan.com/v1/example.json
其中版本可能会改变,在友链页面查看源代码,Ctrl+F搜索你的api路径即可找到最终路径
在使用前请先创建好对应文件,如上面的例子,则需要创建 网站根目录/v1/example.json
PHP文件
在任意网站目录下创建php文件,如"gitee.php"(文件名随意),粘贴以下代码,其中“password”为你自己设置的密码,之后会用到
“path”为你的友链最终路径,其中__FILE__是指运行目录,通常就是你的网站的根目录,也可以改为绝对路径
$body["iid"], "title" => $issueBody["title"], "url" => $issueBody["url"], "avatar" => $issueBody["avatar"], "screenshot" => $issueBody["screenshot"], "description" => $issueBody["description"], ); //读取文件,转化为数组 global $path; $str = file_get_contents($path); $friends = json_decode($str, true)["content"]; if($friends == null){ $friends = array(); } //是否展示该友链,只有"closed"才要展示 if($body["state"] == "closed"){ //遍历数组查看是否有重复项 foreach ($friends as $key => $value){ if($value["iid"] == $result["iid"]){ //找到重复,则程序结束 echo "url:\"".$result["url"]."\"已存在"; return; } } //没有重复,则添加至末尾 $friends[] = $result; echo "已添加".$result["url"]; }else{ //不展示该友链 foreach ($friends as $key => $value){ if($value["iid"] == $result["iid"]){ //删除该项 unset($friends[$key]); echo "已移除".$result["url"]; break; } } } //生成新的json,且不转义 $newJson = json_encode(array( "code" => "0", "content" => array_values($friends), ), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); file_put_contents($path, $newJson);}function Delete($body): void{ $iid = $body["iid"]; //读取文件,转化为数组 global $path; $str = file_get_contents($path); $friends = json_decode($str, true)["content"]; foreach ($friends as $key => $value){ if($body["number"] == $iid){ //删除该项 unset($friends[$key]); echo "已删除\"".$iid."\""; break; } } //生成新的json,且不转义 $newJson = json_encode(array( "code" => "0", "content" => array_values($friends), ), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); file_put_contents($path, $newJson);}
仓库设置
导入或自建以下仓库
https://gitee.com/dearxuan/friends.git
修改README文件,替换为自己网站的信息
其中.gitee/ISSUE_TEMPLATE.zh-CN.md文件用于存放issue模板,可以视需求修改
在仓库的 “管理”-“WebHooks” 中添加一个新的WebHook,如下图
其中URL为你的php文件的路径,WebHook密码就是上面你自己修改的密码。勾选“Issue”事件,并“激活”
使用
在issue页面新建issue,注意要确保格式正确,否则无法解析为json
修改issue的状态,其中只有“已完成”会展示。原本想用tag,但是gitee不支持issue的tag推送
在webhook页面可以看到历次请求结果
如果先修改状态再删除issue,会导致触发两次删除操作,wenhook页面可以看到报错,但是不影响使用
来源地址:https://blog.csdn.net/qq_39200794/article/details/128447946
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341