RyeBlogRye

RyeBlog 开发接口速查:URL、函数、表结构与钩子

2026-08-19 · 在线文档 · #写作

本文是 RyeBlog 开发速查手册,面向主题开发、插件开发和二次开发。

一、URL 路由(伪静态)

| 路径 | 实际入口 |
|---|---|
| / | index.php(首页列表) |
| /{slug}.html | post.php?slug={slug}(文章) |
| /{slug} | post.php?slug={slug}(文章,无 .html 亦可) |
| /category/{slug}.html | category.php?c={slug}(分类页) |
| /tag/{slug} | tag.php?t={slug}(标签页) |
| /tags | tags.php(标签云) |
| /page/{slug} | page.php?p={slug}(独立页) |
| /search?q=关键词 | search.php(搜索) |
| /feed | feed.php(RSS) |
| /sitemap.xml | sitemap.php |

规则文件:Apache .htaccess / Nginx rewrite 文件,后台设置页有参考规则可直接复制。

二、核心函数速查

数据查询(全部自动转换表前缀、参数化防注入):

dbAll('SELECT * FROM vd_posts WHERE type=?', ['post']);   // 多行
dbOne('SELECT * FROM vd_posts WHERE id=?', [$id]);         // 单行
dbQuery('UPDATE vd_posts SET views=views+1 WHERE id=?', [$id]); // 写操作

选项(站点设置)

getOption('site_title', '默认值');
setOption('theme', 'rye');

内容获取getPosts(['perPage'=>10,'page'=>1,'category'=>$id,'tag'=>$slug])getPost($id)getPostBySlugAnyType($slug)getPages()getCategories()getTags($limit)

链接生成postUrl($post)categoryUrl($cat)tagUrl($tag)pageUrl($page)homeUrl()baseUrl('admin/xxx.php')

输出与安全esc($str)(HTML 转义)、nl2brcsrfToken()checkCsrf()currentUser()isLoggedIn()

多语言__('中文')(后台 UI 词典翻译)、L($row, 'title')(内容字段,英文站优先 *_en 回退中文)、currentLang()bilingualEnabled()

三、数据库表结构

| 表 | 说明 |
|---|---|
| vd_posts | 文章/独立页:title / slug / content / type(post|page) / status / format(markdown|html) / category_id / views / excerpt / seo_* / cover_image / allow_comment |
| vd_categories | 分类:name / slug / description / parent_id |
| vd_tags | 标签:name / slug / count |
| vd_post_tags | 文章-标签关联 |
| vd_comments | 评论:post_id / author / email / website / content / status(pending|approved) / author_ip |
| vd_options | 站点选项(key-value) |
| vd_users | 用户:username / password / role / status / login_ip / login_at |
| vd_menus | 菜单:location(top|footer) / title / url / sort_order |
| vd_attachments | 附件 |
| vd_trail | 浏览轨迹 |

英文站字段(启用 english-admin 插件后):title_en / slug_en / content_en / excerpt_en / seo_description_en / seo_keywords_en 等。

四、钩子(Hook)清单

doHook('名称', $arg) → 调用所有已启用插件的同名静态方法:

五、主题模板机制

主题目录 usr/theme/<名字>/,以下文件存在则自动接管对应页面:

home.php      # 首页
post.php      # 文章页
page.php      # 独立页
category.php  # 分类页(可 require list_common.php)
tag.php       # 标签页
search.php    # 搜索页
list_common.php # 列表页公共骨架
theme.css     # 主题样式(@Title/@Desc/@Version 元信息)
theme.js      # 主题脚本(defer 自动加载)

theme.css 头部的 @Title 就是后台「外观」页显示的主题名,@Version 参与云端更新比较。

六、后台入口

/admin/login.php    登录(账号在安装时创建)
/admin/write.php    写文章(支持 Markdown/HTML、图片上传、实时预览)
/admin/posts.php    文章管理(搜索+分页)
/admin/themes.php   主题管理(云端安装/编辑/删除)
/admin/plugins.php  插件管理(云端安装/启用/配置)
/admin/categories.php / tags.php / comments.php / menus.php / settings.php
← RyeBlog 插件开发指南:接口、钩子与完整示例 设计自己的主题:以 Doc 文档主题为例 →