因为 OrangeRedSeaweed 在开发中,所以这个当作一个开发日志来用也可以
这是 content Mod 的规划部分,在还没开始写代码之前,先把洗澡时候想出来的主意给列举一下
主要功能
“content” 顾名思义就是关于内容(不包括媒体)方面的 mod ,这是一个官方的 mod ,是不可以删除的(其实假如你想也可以,你拥有自己文件的所有权)
用过 WordPress 的一定都知道,文章和页面其实是一个东西,就只是换一换 url 格式而已
几个概念
别名
别名,就是一个内容的别名,可以是任何字符,但是不能重复,内容是通过别名索引的
模板
储存格式
会有一个模板文件( .ORStemplate.json ),里面会装有模板,在 /ContentTemplate ( content Mod 创建的目录 ) 装有模板,模板示例:
{
"H": {
"main": "<h<~H~> <~attribute~> ><~title~></h<~H~>>",
"format": {
"H": {
"introduce": "标题级别",
"Default": 1
},
"title": {
"introduce": "标题内容",
"Default": null
}
}
},
"img": {
"main": "<img decoding=\"<~decoding~>\" src=\"<~ImgUrl~>\" alt=\"<~alt~>\" width=\"<~width~>\" height=\"<~height~>\">",
"format": "同上"
},
"GlobalFormat": {
"attribute": {
"introduce": "标签属性",
"Default": null
}
}
}
“H” 是模板名称,main 里面的是模板主题,format 是模板格式
模板格式规定了模板主题里面可以替换的部分
“GlobalFormat” 是全局模板格式,也就是全局都生效
调用格式
[
{
"attribute": 1,
"title": "I love Liusitong",
"name": "label:H"
},
{
"decoding": null,
"ImgUrl": "./she's.png",
"name": "label:img"
}
]
name 就是调用的模板名称
其他字段就是格式名和对应的数据
我把这个格式称为 OrangeRedSeaweed content formatting string
简称 ORSCFS
ORSCFS 模块
内容储存格式
other user key : ContentList[‘main’]
[
{
"title": "I love liusitong",
"alias": "liusitong",
"Release": 11111111,
"change": [
121241,
114514
],
"ORSCFS": "..."
}
]
分类储存
other userID=2 key : ClassificationList
[
{
"name": "Ilove",
"alias": "MyLove",
"Release": 11111111,
"content": [
"liusitong",
"MyGirl"
]
},
....
]
URL 格式
储存位置:other(id=2)[‘UrlTemplate’]
为了模拟出伪静态的效果,我这里做了一个URL格式,格式的定义是一个字符串,例子:
"/<%^alias^%>.html"
例如你访问别名为:I-like-liusitong 的文章,那么,访问的url应该是
"http://.../I-like-liusitong.html"
这个是最基本的访问格式,未来可能还会更新出如下样式
"/{ReleaseTimestamp}.html" # 发布时间戳
"/{ReleaseTime}.html" # 发布时间
# ...
API for URL get content
通过页面的URL来获得相应的内容
它不仅可以获得文章内容,还可以获得文章列表等,基本格式
/api/mod?ModName=content&ApiName=URLAPI&url=aHR0cHM6Ly93d3cuZGYxMDAubHRkL0ktbGlrZS1saXVzaXRvbmcuaHRtbA==(base64)
这里是将 url:https://www.df100.ltd/I-like-liusitong.html 转换成了 base64 编码,从上文的格式可以看出,这是个文章,所以它会返回对应文章的内容,当然还可以指定返回文章列表的格式(如根目录返回文章列表),至于文章列表的分页,到时候在添加
于是就可以利用 API for URL get content 和 URL 格式 模拟出伪静态的效果