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__是指运行目录,通常就是你的网站的根目录,也可以改为绝对路径
<?php
$password = "************************"; // Gitee推送密码
$path = dirname(__FILE__)."/v1/example.json"; // 友链路径// 验证权限
$token = array_key_exists("HTTP_X_GITEE_TOKEN", $_SERVER)? $_SERVER["HTTP_X_GITEE_TOKEN"]: "";
if($password == $token){//更新友链$body = json_decode(file_get_contents("php://input"), true);UpdateFriends($body);
}else{//返回403echo "403 Forbidden";
}/** 根据不同的请求类型执行不同的函数 */
function UpdateFriends($body): void
{switch ($body["action"]){case "state_change": // 状态改变Update($body);break;case "open": // 新建issue// 不执行任何操作break;case "delete": // 删除Delete($body);break;}
}/** 更新或新增友链 */
function Update($body): void
{$issueBody = json_decode($body["issue"]["body"], true);if($issueBody == null){echo "issue格式错误";return;}$result = array("iid" => $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页面可以看到报错,但是不影响使用
volantis使用php实现Gitee友链相关推荐
- 基于hexo的友链朋友圈 Beta1.4(已适配Butterfly和Matery主题)
https://zfe.space/post/friend-link-circle.html 什么是友链朋友圈? 你是否经常烦恼于友链过多但没有时间浏览?那么友链朋友圈将解决这一痛点.你可以随时获取友 ...
- Hexo+gitee:30分钟搭建一个自己的个人博客网站 欢迎友链呀<(▰˘◡˘▰)
Hexo + Gitee 部署自己的个人博客 目前市场上比较火的一些博客框架: Hexo.jekyll.Solo.Halo .gohugo.VuePress.wordpress 等等 ,这些都是开 ...
- 交换友链的几个技巧!
这段时间都没什么时间来优化网站了,但是网站在站长工具查询的权重还是达到1了. 交换友链的几个技巧! 好文分享 第1张 看到这个还挺开心的,虽然百度官方否认权重这一说法,但是毕竟还是挺有效的,权重1以后 ...
- 网络营销推广软件浅析网络优化时该如何更好的判断友链的质量?
在网站优化中,网络营销推广软件认为做好友情链接的交换也很重要,因为高质量的友情链接交换能有效地帮助网站带来更多的流量,对网站的排名和权重也有很大的帮助,那么在网站优化中,我们该如何更精准的筛选和确保友 ...
- 一个卑微的程序员友链
一个卑微的程序员友链 文章目录 一个卑微的程序员友链 halo博客系统(CSDN迁移) flarum论坛 cloud halo博客系统(CSDN迁移) 一个卑微的程序员个人博客 flarum论坛 一个 ...
- css 友情链接效果,友链样式与位置很重要!
友链交换,是我们SEOER的日常工作.那么,关于友链的样式和位置,你又了解多少呢?下面就和小编一起来看看吧! 一.友链意味着什么? 友情链接,就是双方网站有一定相关性的前提下,互相在自己的网站上推荐对 ...
- 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池
熊猫站群系统@苹果MacCmsV10 熊猫电影站群系统@苹果MacCmsV10是一款专门为每个做站群的独行侠量身打造的省时省力省心的电影站群系统. 作为站群的重度使用者,深知作站痛点.从站长角度出发, ...
- Wap友链刷量软件V5.1
使用本软件,你可先了解以下几点: 1.软件简介: 这个软件是用来刷Wap网站友链的流量,不是刷广告,本软件是采用HTTP协议模拟手机参数进行刷量. 2.使用操作: 使用本软件首先要 ...
- 【Hexo + Next主题】左侧栏友链一行多个显示
前言 Next主题的友链默认排版是一行一个,如图1所示. 图1 友链每行单个示意图 一旦友链数量过多,那么一行一个的页面排版就不怎么美观了,下面笔者教大家如何一行多个地显示友链. 教程步骤 打 ...
最新文章
- Matlab与线性代数 -- 矩阵的重组1
- 关于无管网气体消防系统之你不知道的事
- 被丧心病狂的验证码虐过,来感受一下交互体验很好的十款吧
- asp.net mvc jquery ajax post,使用ASP.NET MVC在JS文件中设置jQuery的ajax url
- 华为云服务器芯片,云服务器芯片
- jtessboxeditorfx 界面显示不出来_macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示...
- python规模大小的指标是_训练数据多少才够用
- 3-1机器学习中的分类与回归问题
- java关键字:volatile
- mysql数学函数有什么_mysql数学函数有哪些?
- (OK) Linux epoll模型—socket epoll server client chat
- Android 扫描二维码、制作二维码、识别图片中的二维码;简单的Zxing扫一扫功能;
- Insyde uefi 隐藏设置_固件级安全,微软安全工具新增UEFI扫描功能
- QT5.1标准对话框按钮显示英文问题解决办法
- 火龙果(redpitaya)开发板常用接口C语言开发指南(一)——环境配置(持续更新中)
- 互联网晚报 | 06月07日 星期二 | 杭州调整住房公积金政策;苹果发布iOS 16;特斯拉回应裁员是否涉及中国地区...
- Dynamics 365 Xrm.Naviagtion.navigateTo 打开Dialog后如何关闭
- 数据结构与算法笔记:哈希表——力扣389
- 在matlab里如何构建幺模矩阵,幺模矩阵精确逆Python
- 智慧书——永恒的处世经典 (序)
热门文章
- 使用WPD API操作MTP设备一些总结
- 《花开半夏》--8 转折(2)
- 第27回 测试结果分析和质量报告
- 达梦数据库:mysql -dm数据同步dmhs工具搭建
- Win10/Ubuntu20.04编译ros2_documentation-foxy过程
- 【Designing ML Systems】第 1 章 :机器学习系统概述
- 科研ABC - 走进SCI
- 【行研报告】2021中国康复医疗行业研究报告—附下载
- 银行怎样处理坏账和贷款展期
- Mysql要在表s中增加一列可用什么语句_要在基本表S中增加一列CN(课程名),可用语句()_学小易找答案...