YOURLS 简介

YOURLS (Your Own URL Shortener) 是一款开源的PHP程序,让你可以轻松建立属于自己的短网址生成系统。而无需第三方平台你就可以获得所有的数据统计,并且支持一系列插件扩展。

官网:http://yourls.org/

Github:https://github.com/YOURLS/YOURLS

功能特性

  • 私有(只能自己使用)或 公共(所有人都可以创建短网址)模式
  • 支持顺序生成 或 自定义 URL 关键字
  • 好用的书签:轻松创建和分享链接
  • 完善的统计:历史点击报告、来源追踪、访客地理位置
  • 简洁的 AJAX 界面
  • 开发者 API
  • 友好的安装流程

编写插件

看完了简介之后现在开始介绍如何为 YOURLS 编写插件,下载安装的步骤就不在这里多说,可以根据项目里面 readme.html 的介绍来进行安装。

YOURLS 的插件都放在 根目录/user/plugins/ 下面,一个插件一个目录。每个目录下面的 plugin.php 就是插件的入口文件,也是插件的核心所在,一般会有 README.md 文件来介绍这个插件。

插件目录
插件目录

根目录/user/plugins/ 目录下创建一个名叫 say-hello 的目录,并创建 plugin.php 文件,用来编写插件的逻辑。

plugin.php 内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/*
Plugin Name: Say Hello
Plugin URI: http://yourls.org/
Description: Sample plugin to illustrate how actions and filters work.
Version: 0.1
Author: 她和她的猫
Author URI: https://blog.csdn.net/qq_42451060
*/

// 防止被直接访问
if( !defined( 'YOURLS_ABSPATH' ) ) die();

// 注册插件
yourls_add_filter( 'api_action_say_hello', 'say_hello' );

// 编写插件逻辑
function say_hello()
{
$content = isset($_GET['content']) ? $_GET['content'] : 'Hello World!';
echo "<h1>{$content}</h1>";
exit;
}

文件开始的那一段注释用来描述这个插件的名称、插件地址、描述、版本号、作者、作者url 等信息,这些信息将会在管理后台的插件列表里面展示。

然后判断是否定义了 YOURLS_ABSPATH 常量,如果没有定义的话将直接停止运行,用于防止直接通过 url 访问插件。

通过 yourls_add_filter 函数向程序注册这个插件。第一个参数是定义了当前插件被触发的 hook 名称,可以把这个当作插件的唯一名称来理解。其中 api_action_ 是固定的,后面跟的是插件的名字(api_action_{插件名称}),插件名称在后面调用的时候会用到。第二个参数是当插件被调用的时候,让哪个函数去处理这个请求,所以我们在下面定义了一个名为 say_hello 的函数,用来编写实现这个插件的功能。

函数功能很简单,接收content参数,如果不存在的话就使用默认的值,最后输出 content

启用插件

要想插件能够被调用,要先在管理后台启用插件。

启用插件
启用插件

可以看到在 plugin.php 文件中的注释信息都被展示出来了。

将插件启用后,点击菜单 Tools,找到 signature,用于调用接口时验证身份信息。

signature
signature

调用插件

接下来就是如何调用插件了,url 如下:

1
http://域名或ip地址/yourls-api.php?action=say_hello&signature=005154be54
  • action 是调用的插件名称。
  • signature 用于验证调用这个的身份信息。

上面的是 signature 调用方式,另外一种是帐号密码的方式:

1
http://域名或ip地址/yourls-api.php?action=say_hello&username=hxh&password=123456

这种方式容易将帐号信息暴露,所以不推荐这种方式。

运行结果:

运行结果
运行结果

带上 content 参数:

1
http://域名或ip地址/yourls-api.php?action=say_hello&signature=005154be54&content=她与她的猫
运行结果
运行结果

总结

重点:插件的注册与调用。

推荐看一下 YOURLS 的插件系统的实现原理,挺有收获的。

Ending…