Skip to content

Latest commit

 

History

History
479 lines (390 loc) · 47.6 KB

OUTLINE.md

File metadata and controls

479 lines (390 loc) · 47.6 KB

Typecho 文档站信息架构大纲 (Information Architecture Outline)

状态:草案,供维护者评审。日期:2026-10-16。 证据基础(下文用缩写引用):

  • LI = /tmp/typecho-docs-research/legacy-inventory.md(旧 DokuWiki 站盘点;§4 为 KEEP/REWRITE/DROP 判定,§5 为旧站缺口,§6 为用户真实问题)
  • PS = /tmp/typecho-docs-research/product-surface.md(Typecho 1.3.0 产品面,代码修订 v1.3.0-10-g56f4c6f)
  • IA = /tmp/typecho-docs-research/ia-benchmark.md(12 个同类站点对标 + Docusaurus i18n 机制)
  • DU = /tmp/typecho-docs-research/docusaurus-upgrade.md(Docusaurus 3.10.2,§5 为在 3.10.2 上重新验证的 i18n 行为)
  • 现有 = 本仓库 docs/ 中已有页面(main @ a8230c2)

1. 目标与范围 (Goals & Scope)

站点用途:Typecho 1.3 的官方文档,中文为主、英文同步,覆盖“安装运维 → 日常使用 → 主题开发 → 插件开发 → 核心开发”四层,取代 2009–2023 年的 DokuWiki 旧站。旧站只作为主题清单,正文全部按 1.3 代码重写;仅 LI §4 判定为 KEEP 且确认 1.3 仍正确的 16 页可沿用其内容要点。

受众 (Audience) 代号 典型任务 主要入口
站长 / 写作者 (Site owner) U 写文章、管理页面、改个人设置 guideSidebar · 撰写与管理
管理员 / 运维 (Admin) A 安装、升级、伪静态、HTTPS、备份、安全 guideSidebar · 快速开始 / 部署与运维
主题开发者 (Theme dev) TD 写模板、主题设置、自定义字段 devSidebar · 主题开发 + 参考
插件开发者 (Plugin dev) PD 钩子、配置面板、路由、数据库 devSidebar · 插件开发 + 参考
核心开发者 (Core dev) CD 理解架构、提交 PR、写升级脚本 devSidebar · 核心开发 / 参与贡献

本站明确不是:

  • 第三方插件/主题的使用手册或目录(旧站 42 个第三方插件页全部 DROP,LI §4);
  • 自动生成的完整 PHP API 文档(IA §4.4);
  • XML-RPC/MetaWeblog 协议规范(只写后台开关与客户端接入,IA §4.4);
  • 多版本文档:只写 1.3;1.3.0 之后 master 上未发布的改动(PS §6.3,如多文件上传 5e36a91)不写成功能;
  • 社区论坛、新闻或博客(blog: false)。

2. 站点架构 (Site Architecture)

2.1 总体结构

项 决定 依据
站点 / 插件实例 一个站点、一个 docs 插件实例、routeBasePath: '/' 用户决定;IA §4.1
语言 defaultLocale: 'zh-Hans' 在 /;en 在 /en/;locales: ['zh-Hans','en'],localeConfigs 设 label / htmlLang 用户决定;IA §3.1;DU §5.5(i18n/en/ 目录已存在,translate 自动推断为 true,不可删除该目录)
版本 无 versions.json;versions: { current: { label: '1.3', banner: 'none' } };i18n/en/.../current.json 的 version.label 由 write-translations 重新生成后改为 1.3 IA §3.6;DU §5.4
侧边栏 guideSidebar(使用指南)、devSidebar(开发文档),在 sidebars.js 中显式声明,见 §2.3 IA §4.1
首页 docs/intro.md 保持 slug: /,作为 guideSidebar 第一项 现有 docs/intro.md;DU §5.1
链接检查 保持 onBrokenLinks: 'throw';markdown.hooks.onBrokenMarkdownLinks 由 'warn' 改为 'throw';设 onBrokenAnchors: 'throw'(3.10.2 仍为顶层选项,DU §3) 验收要求“零警告”
编辑链接 editUrl 保留;增加 editLocalizedFiles: true,英文已翻译页的“编辑此页”指向 i18n/en/... IA §3.5
旧站 URL 不保留任何旧站路径、不做任何跳转,也不沿用旧站结构;新站自行决定 URL。现有 docusaurus.config.js 装有 @docusaurus/plugin-client-redirects(4 条:/contribute、/install、/upgrade、/faq),P0 删除该插件的 plugins 配置块及 package.json 依赖 维护者决定
清理 删除 docs/tutorial-extras/(脚手架示例)与 current.json 中的 tutorialSidebar 残留键;重写 docs/getting-started/faq.mdx 的模板文字 IA 附录

2.2 目录布局 (Directory Layout)

docs/
├── intro.md                      # slug: /            介绍
├── glossary.md                   # slug: /glossary    术语表(两个侧边栏共用)
├── guide/                        # → /guide/...       guideSidebar
│   ├── getting-started/          #   快速开始
│   ├── content/                  #   撰写与管理
│   ├── settings/                 #   系统设置
│   ├── extend/                   #   外观与插件
│   ├── operations/               #   部署与运维
│   └── help/                     #   常见问题与求助
└── develop/                      # → /develop/...     devSidebar
    ├── index.md                  #   slug: /develop   开发概览
    ├── theme/  (含 recipes/)     #   主题开发
    ├── plugin/                   #   插件开发
    ├── reference/                #   参考
    ├── core/                     #   核心开发
    └── contributing/             #   参与贡献
i18n/en/docusaurus-plugin-content-docs/current/   # 与 docs/ 逐文件镜像(DU §5.2:仅存在于此的页面不会被收录)
  • 每个子目录一个 _category_.json(label 写中文,英文在 current.json 的 sidebar.<sidebarId>.category.<中文 label> 键)。
  • 文件名一律英文 kebab-case;URL 由路径生成,不写 slug:(intro.md、glossary.md、develop/index.md 及各目录 index.md 除外)。
  • 图片放各目录 img/,与现有 docs/getting-started/img/ 一致。

2.3 侧边栏与 Navbar

// sidebars.js(示意)
guideSidebar: ['intro', {type: 'autogenerated', dirName: 'guide'}, 'glossary'],
devSidebar:   ['develop/index', {type: 'autogenerated', dirName: 'develop'}, {type: 'ref', id: 'glossary'}],

glossary 在 devSidebar 用 type: 'ref',避免同一文档同属两个侧边栏导致上下页导航错乱。develop/index 需在 autogenerated 中排除(_category_ 或 sidebar_class_name 方式,P0 验证)。

Navbar 位置 项 类型
左 使用指南 Guide docSidebar → guideSidebar
左 开发文档 Developer docSidebar → devSidebar
右 1.3 docsVersion(只显示,不做下拉)
右 搜索 见 §2.4
右 语言 localeDropdown,dropdownItemsAfter 加“帮助翻译 Help translate” → /develop/contributing/docs
右 官网 Home / GitHub 保留现有两项

2.4 搜索 (Search)

当前未装搜索插件(DU §5.5)。v1 推荐 @easyops-cn/docusaurus-search-local:language: ['en','zh'],docsRouteBasePath: '/'(IA §3.7);与 3.10.2 及 React 19 的兼容性、是否按语言分索引均未验证,P0 先验证,不通过则 P0 不上搜索。Algolia DocSearch 作为后续选项(待定问题 OQ2)。

3. 章节大纲 (Page Tree)

列说明:路径相对 docs/(省略 .md);受众见 §1。

3.1 使用指南 Guide(guideSidebar)

根

路径 中文标题 English 内容 受众
intro 介绍 Introduction Typecho 是什么、文档怎么读、两条侧边栏的分工、求助渠道(forum.typecho.org、GitHub Issues、Telegram t.me/typechodev,详见 getting-help);后台页脚“帮助文档”的落地页 全部
glossary 术语表 Glossary 中英术语对照与定义,兼作翻译约束(§5.3) 全部

快速开始 Getting Started(guide/getting-started/)

路径 中文标题 English 内容 受众
requirements 环境要求 Requirements PHP ≥ 7.4;扩展 mbstring/json/Reflection + 任一数据库扩展;MySQL 5.5.3+ / SQLite 3.7.11+ / PostgreSQL 9.1+(仅 README 声明,代码不校验);usr/uploads 可写 U A
installation 安装 Installation 获取安装包(typecho.org/download、GitHub Releases)→ MySQL/PostgreSQL 先手动建库 → 上传 → Web 安装三步(?step=1/2/3)、dbNext 四种取值、MySQL socket、安装后丢失密码的处理 U A
cli-install 命令行与无人值守安装 CLI & Unattended Install php install.php + TYPECHO_SITE_URL、TYPECHO_DB_*、TYPECHO_USER_* 全部环境变量与默认值、退出码 A
upgrade 升级 Upgrading 备份 → 替换 admin/ var/ install/ index.php install.php → 后台升级;控制台首页的新版本提示条(“您当前使用的版本是 %s / 官方最新版本是 %s”,由 Widget\Ajax 检查)作为升级入口;MIN_VERSION = 1.1.0;1.1 站点建议经 1.2.1 中转(OQ1);>100 附件站点的升级死循环已知问题 A
whats-new-1-3 1.3 新特性与变更 What's New in 1.3 面向站长的 1.3 变化:修订版本、页面树、新上传器、classic-22、Ctrl/Cmd+S、IDN、高清头像、PHP 7.4 底线;改名/移除项 U A

撰写与管理 Writing & Managing(guide/content/)

路径 中文标题 English 内容 受众
admin-overview 后台概览 Admin Overview 菜单地图(控制台/撰写/管理/设置)与每屏最低角色、隐藏页面、welcome.php U A
posts 撰写文章 Writing Posts Markdown 编辑器、草稿/自动保存(autoSave)、修订版本 revision、分类标签、允许评论/引用/聚合、附件插入 U
pages 独立页面 Pages 页面树(?parent=)、排序 order、自定义模板选择、页面 vs 文章 U
categories-tags 分类与标签 Categories & Tags 分类树、默认分类、标签管理、计数不准时的处理 U A
attachments 附件与文件管理 Attachments & Files 上传、attachmentTypes(@image@ @media@ @doc@ @other@ + 自定义)、替换/删除、默认存放 usr/uploads/YYYY/MM/ U
custom-fields 自定义字段(编辑器侧) Custom Fields in the Editor 开头链到 develop/theme/custom-fields;在编辑器“自定义字段”面板添加字段,四种类型 str/int/float/json(字符/整数/小数/JSON 结构);主题预置字段的显示方式;后台面板“帮助文档”的落地页 U
visibility 可见性与密码保护 Visibility & Password Protection publish/hidden/private/waiting 状态、密码保护内容在列表/聚合/归档中的隐藏规则 U TD
comments 评论管理与审核 Comments & Moderation 通过/待审核/垃圾三态、批量操作、回复、编辑;评论/引用通告/Pingback 的区别 A
users 用户、角色与注册 Users, Roles & Registration 五级角色(administrator…visitor);“角色 × 操作”权限分配表,固定锚点 {#permission-table}(后台“参考这里”的落地页);用户组下拉框只有 4 个组,visitor 不可手动分配;新增用户、开放注册 allowRegister、用户名或邮箱登录 A
profile 个人设置 Profile screenName/url/mail、改密码、头像来自 Gravatar(按邮箱,在 gravatar.com 修改)、个人写作偏好(markdown、xmlrpcMarkdown、autoSave、defaultAllow*)、插件个人配置 U
feeds-xmlrpc 订阅源与离线客户端 Feeds & XML-RPC Clients RSS 2.0/RSS 1.0/Atom 地址、feedFullText;allowXmlRpc 0/1/2 含义、MetaWeblog 客户端接入 U A

系统设置 Settings(guide/settings/)

路径 中文标题 English 内容 受众
general 基本设置 General Settings title siteUrl description keywords allowRegister allowXmlRpc lang timezone attachmentTypes;__TYPECHO_SITE_URL__ 隐藏站点地址 A
discussion 评论设置 Discussion Settings commentDateFormat(附常用 PHP date() 格式示例)、commentsShow[]/commentsPost[] 两组开关逐项说明、嵌套层数 2..7、分页与排序、头像分级、反垃圾与来源检查;不写 commentsUniqueIpInterval/StopWords/IpBlackList(无效字段) A
reading 阅读设置 Reading Settings postDateFormat(附常用 PHP date() 格式示例)、frontPage(recent/page:<cid>/file:)、frontArchive 与 archivePattern、pageSize、postsListSize、feedFullText A
permalink 永久链接 Permalinks rewrite 开关与 checkRewrite() 探测、4 种预设 + 自定义 postPattern、允许的占位符、pagePattern/categoryPattern;服务器规则链到运维页 A

外观与插件 Themes & Plugins(guide/extend/)

路径 中文标题 English 内容 受众
themes 安装与设置主题 Installing & Configuring Themes 上传到 usr/themes/、切换、主题设置页、在线编辑器及 __TYPECHO_THEME_WRITEABLE__;自带 default 与 classic-22 A
plugins 安装与配置插件 Installing & Configuring Plugins 上传到 usr/plugins/、启用/禁用/设置;插件导致 500 时的排查 A
languages 界面语言 Admin Language & Language Packs 语言包放 usr/langs(__TYPECHO_LANG_DIR__)、lang 选项切换 A
finding-plugins 寻找插件与主题 Finding Plugins & Themes 不存在仍在维护的插件/主题目录,不链任何目录;按需求类型(代码高亮、数学公式、站点地图、统计、评论通知、外部存储)给出 GitHub 搜索与 topic 链接,并引导到 forum.typecho.org 询问;提醒按 @since 与最近更新时间判断是否适配 1.3;不写第三方手册 U A

部署与运维 Deployment & Operations(guide/operations/)

路径 中文标题 English 内容 受众
web-server Web 服务器配置 Web Server Configuration nginx(PHP-FPM + rewrite + pathinfo)、Apache(.htaccess/mod_rewrite)、Caddy 2 的当前写法 A
https-proxy HTTPS、反向代理与 CDN HTTPS, Reverse Proxy & CDN __TYPECHO_SECURE__、__TYPECHO_IP_SOURCE__、__TYPECHO_SITE_URL__/__TYPECHO_DYNAMIC_SITE_URL__、__TYPECHO_COOKIE_OPTIONS__;混合内容与重定向循环 A
containers 容器与云主机部署 Containers & Cloud Hosting VPS/共享主机/容器三类环境;容器统一用官方镜像 joyqi/typecho(hub.docker.com/r/joyqi/typecho,描述 “Typecho Official Image”,维护者 Typecho Dev Team)。Docker Hub API 2026-10-16 实测:共 70 个标签,无 latest;1.3 正式版标签 1.3.0-php7.4 与 1.3.0-php8.2 各 7 个变体(无后缀、-alpine、-apache、-cli、-cli-alpine、-fpm、-fpm-alpine),推送于 2026-01-20;nightly-php7.4*、nightly-php8.2* 共 14 个,最近一次推送 2026-04-11(来自 master,含未发布改动,不建议生产使用);另有 1.2.1-*(2023-06-06)与 1.2.0-*(2022-03-31,含 php7.3/php8.0);平台 linux/amd64、linux/arm/v7、linux/arm64。环境变量 TYPECHO_INSTALL=1 自动安装、TIMEZONE、MEMORY_LIMIT、MAX_POST_BODY、TYPECHO_DB_*(逐项以镜像说明页核对);镜像说明页的 Supported tags 段仍列 php7.3/php8.0 nightly,与实际标签不符,以 API 为准;只读文件系统需挂载 usr/uploads 等目录。镜像的 Dockerfile 按 Hub 说明页在 github.com/typecho/Dockerfile 仓库;主仓库 tools/Dockerfile 是否参与构建该镜像 unverified(它基于 PHP 7.0,不满足 7.4 底线,不作为部署方式介绍) A
config-file config.inc.php 与常量 config.inc.php & Constants 安装生成的内容;全部可选 __TYPECHO_*__ 常量(约 20 个)逐条说明与读取位置 A CD
admin-dir 自定义后台路径 Custom Admin Path 改 __TYPECHO_ADMIN_DIR__ 并重命名目录 A
uploads-storage 附件存储位置 Upload Storage __TYPECHO_UPLOAD_DIR__/__TYPECHO_UPLOAD_ROOT_DIR__/__TYPECHO_UPLOAD_URL__;需要对象存储时选插件(链开发页 Widget_Upload 钩子) A
backup 备份与恢复 Backup & Restore 后台“备份”导出 .dat、从上传或 usr/backups(__TYPECHO_BACKUP_DIR__)导入;文件层备份 A
migration 从其他博客迁移 Migrating from Other Platforms WordPress 导入(WordpressToTypecho 插件,需按 1.3 实测,见 OQ5);换服务器/换域名迁移 A
security 安全加固 Security Hardening 文件权限、改后台路径、关闭在线主题编辑、SECURITY.md 漏洞报告渠道、及时升级 A
debugging 调试与排错 Debugging & Troubleshooting __TYPECHO_DEBUG__、看 PHP/服务器日志、“禁用插件 + 切回默认主题”排查流程、__TYPECHO_EXCEPTION_FILE__ A TD

常见问题与求助 FAQ & Help(guide/help/)

路径 中文标题 English 内容 受众
faq 常见问题 FAQ 链接全部 404 / 登录 404、No input file specified、405、升级或启用插件后 500、丢失管理员密码、分类计数不准;每条链到详细页 U A
getting-help 获取帮助 Getting Help forum.typecho.org(后台页脚“支持论坛”)、GitHub Issues(“报告错误”)、Telegram t.me/typechodev;如何描述问题:步骤、错误信息 + Bug 模板 6 个环境字段(操作系统、Apache/Nginx、数据库、PHP、Typecho、浏览器版本) 全部

3.2 开发文档 Developer(devSidebar)

根(develop/)

路径 中文标题 English 内容 受众
index 开发概览 Developer Overview 四层扩展方式(主题/插件/核心)、本地开发环境(PHP 7.4+、__TYPECHO_DEBUG__、调试 $this 的技巧)、阅读路线 TD PD CD
migrate-to-1-3 主题与插件迁移到 1.3 Migrating Themes & Plugins to 1.3 Widget_* → \Widget\*::alloc();选项改存 JSON;Plugin::__call 弃用;类型化属性可能破坏子类;archive.php 移除;comments() 无类型参数 TD PD
i18n 主题与插件国际化 Internationalizing Themes & Plugins _t/_e/_n、Helper::lang($domain) 加载 .mo、生成 .pot TD PD

主题开发 Theme Development(develop/theme/)

路径 中文标题 English 内容 受众
index 主题开发概览 Theme Development Overview 主题是什么、$this 即 Widget\Archive、本节阅读顺序 TD
quick-start 第一个主题 Your First Theme 以 classic-22 为蓝本逐文件讲解 index/header/footer/post/page/comments/404/functions TD
anatomy 主题结构与头部信息 Theme Anatomy 目录要求(含 index.php)、头注释 @package/@author/@version/@link/@since、截图规则、__TYPECHO_ROOT_DIR__ 守卫、themeUrl() 加载资源 TD
template-hierarchy 模板层级 Template Hierarchy render() 的 6 级查找顺序,<type>/<slug>.php 覆盖,single.php/archive.php 回退,index.php 必需 TD
context 页面上下文与 is() Context & is() is($type, $slug),含 single/archive/index/feed 伪类型 TD
functions-php functions.php 回调 functions.php Callbacks themeInit、themeConfig、themeConfigHandle、themeFields、themePostFields、themePageFields、threadedComments、singlePing 的调用时机与签名 TD
custom-templates 自定义模板 Custom Templates @package custom 页面模板、file: 首页、分类专属模板、themeInit 中改 pageSize TD
theme-options 主题设置 Theme Options themeConfig(Form $form) 建表单、存为 theme:<name>、模板中 $this->options->xxx 读取 TD
custom-fields 模板中的自定义字段 Custom Fields in Templates $this->fields->name 读取/判断;themeFields/themePostFields/themePageFields 预置字段 TD
comments 评论模板 Comments Template comments()/pings() 分开列出、listComments() 选项键、threadedComments 回调、reply()/cancelReply()、remember() TD
widgets 在模板中调用 Widget Using Widgets in Templates ::alloc() 取最新文章/评论/分类/页面/归档/统计、调用某分类文章、参数字符串 TD
header 头部输出 header() header() Output header() 可屏蔽的键(description … atom)、headerOptions 过滤器 TD
releasing 发布主题 Releasing a Theme 打包、截图、@since 兼容声明;没有官方目录可提交:在 GitHub 发布仓库与 Release 压缩包、加 topic 便于搜索(topic 名写作时按 GitHub 实际使用核对)、到 forum.typecho.org 发帖 TD

主题技巧 Theme Recipes(develop/theme/recipes/)

路径 中文标题 English 内容 受众
page-title 自定义页面标题 Custom Page Titles archiveTitle($defines, $before, $end) 拼 <title> TD
breadcrumbs 面包屑导航 Breadcrumbs is() + archiveTitle() 组合 TD
related-posts 相关文章 Related Posts related($limit = 5, $type = null) TD
category-description 分类描述 Category Description 输出分类描述与提示 TD
tag-cloud 标签云 Tag Cloud \Widget\Metas\Tag\Cloud::alloc() 参数(同时注明旧名 Widget_Metas_Tag_Cloud) TD
error-pages 404 与错误页 404 & Error Pages 主题 404.php;__TYPECHO_EXCEPTION_FILE__ 自定义错误页 TD A

插件开发 Plugin Development(develop/plugin/)

路径 中文标题 English 内容 受众
index 插件开发概览 Plugin Development Overview 插件能做什么、钩子与扩展点总览、阅读顺序 PD
hello-world 第一个插件 Your First Plugin 逐行讲解 usr/plugins/HelloWorld/Plugin.php(admin/menu.php:navBar、配置项 word) PD
structure 插件结构与生命周期 Plugin Structure & Lifecycle 两种布局与 \TypechoPlugin\<Name>\Plugin 命名、头注释与 @since 检查、PluginInterface 的 activate/deactivate/config/personalConfig、激活/停用时发生什么 PD
hooks 使用钩子 Using Hooks Typecho\Plugin::factory() 注册、_N 权重、句柄命名(Widget\Base\Contents → Widget_Abstract_Contents)、call/filter/trigger 语义、call<Method> 与 ___<prop> 动态钩子 PD
settings 插件配置 Plugin Settings config(Form)/personalConfig(Form)、configHandle/personalConfigHandle、存储键 plugin:<Name>/_plugin:<Name>、读取 Options::alloc()->plugin() PD
routes-actions 路由、Action 与后台面板 Routes, Actions & Admin Panels Helper::addRoute/removeRoute、addAction + Widget\ActionInterface、addMenu、addPanel → admin/extending.php?panel= PD
database 数据库操作 Working with the Database Typecho\Db::get()、select/insert/update/delete、Db\Query 链式方法、table. 前缀、建表时兼容三种数据库 PD
http-async HTTP 请求与异步任务 HTTP Requests & Async Tasks Typecho\Http\Client 出站请求;Helper::requestService() + Widget_Service:<method>;__TYPECHO_SERVICE_URL__ PD
patterns 常见插件模式 Common Plugin Patterns 内容过滤(contentEx/excerptEx)、评论反垃圾(Widget_Feedback:comment)、外部附件存储(Widget_Upload 的 uploadHandle 等)、编辑器替换(richEditor)、登录事件 PD
releasing 发布插件 Releasing a Plugin 目录结构、@since、语言包;没有官方目录可提交:在 GitHub 发布仓库与 Release 压缩包、加 topic 便于搜索(topic 名写作时按 GitHub 实际使用核对)、到 forum.typecho.org 发帖 PD

参考 Reference(develop/reference/)

路径 中文标题 English 内容 受众
hooks 钩子列表 Hook Reference 122 个(句柄, 钩子)对 + 3 个动态族,按句柄分组,列类型(call/filter/trigger/deprecated magic)、参数、调用位置 PD
archive Widget\Archive Widget\Archive 模板 $this 的全部公开方法、getter/setter、魔术属性 TD
row-widgets 内容、评论、分类与用户对象 Row Widgets Widget\Base\Contents/Comments/Metas/Users 的方法与 ___* 属性 TD PD
list-widgets 列表类 Widget List Widgets Contents\Post\Recent、Comments\Recent、Metas\Category\Rows、Contents\Page\Rows、Contents\Post\Date、Metas\Tag\Cloud、Stat;listCategories/listPages 选项键 TD
options $this->options Widget\Options 方法(siteUrl()、themeUrl()、plugin() …)与魔术属性 TD PD
option-names 选项名一览 Option Names table.options 中全部默认选项名、类型、所属设置页、默认值 TD PD CD
form-elements 表单元素 Form Elements Checkbox Fake Hidden Number Password Radio Select Submit Text Textarea Url、addRule() TD PD
helper Utils\Helper Utils\Helper 路由/Action/菜单/面板/选项/杂项全部静态方法签名 PD
routes-actions 默认路由与 Action Default Routes & Actions 27 条默认路由、占位符类型 string char digital alpha alphaslash split、23 个核心 Action PD CD
database-schema 数据表结构 Database Schema 7 张表(含 1.3 的 fields)字段字典;contents.type/status 取值;comments.type/status 取值 PD CD
class-aliases 旧类名对照表 Legacy Class Aliases 自动加载映射规则 + Init.php 21 条显式别名;旧代码写法 ↔ 1.3 写法 TD PD

核心开发 Core Development(develop/core/)

路径 中文标题 English 内容 受众
architecture 目录结构与命名空间 Architecture & Namespaces index.php/install.php/admin//var/Typecho/var/Widget/var/Utils/var/IXR/usr//tools/ 各自职责 CD
request-lifecycle 请求生命周期 Request Lifecycle Common::init() → Widget\Init 9 步 → index.php:begin → Router::dispatch() → end;后台页不走路由 CD PD
router 路由 Router 路由表结构、Router\Parser 规则语法、Router::url()、ParamsDelegateInterface CD PD
widget Widget 组件模型 The Widget Layer widget()/alloc()/allocWithAlias()、实例池、push/next/have/to、___prop 与 __call、基类接口与 1.3 新 trait CD TD PD
permissions 权限模型 Permission Model 角色数值与 User::pass() 判定、后台菜单最低角色、在代码中做权限检查 CD PD
request-response Request、Response 与常用工具 Request, Response & Common Helpers Typecho\Request/Response/Widget 级响应方法(goBack、throwJson 等)、Typecho\Common 常用静态方法 CD PD
upgrade-scripts 编写升级脚本 Writing Upgrade Scripts Utils\Upgrade::v<x_y_z>() 反射机制、MIN_VERSION、v1_3_0 示例、分批迁移注意点 CD
build 开发环境与前端构建 Dev Environment & Asset Build tools/ 的 npm 脚本与 Makefile 目标、admin/src → admin/js、admin/css、生成 messages.pot CD
coding-style 编码规范 Coding Style PHP 7.4 底线、命名空间与类型声明、无 Composer、保留旧别名、admin/*.php 是模板 CD

参与贡献 Contributing(develop/contributing/)

路径 中文标题 English 内容 受众
index 贡献代码 Contributing Code 行为准则(CODE_OF_CONDUCT.md)、Fork/PR 流程、CI 仅 php -l(7.4–8.2)、fix/* 自动合入 dev、发布流程、SECURITY.md CD
docs 贡献文档与翻译文档 Contributing to the Docs 本站写作规范、前置元数据规则、英文翻译流程(即 §5) 全部
translate-typecho 翻译 Typecho 界面 Translating Typecho typecho/languages 仓库、Poedit + messages.pot、提交 PR 译者

3.3 页数统计 (Page Counts)

区域 页数
使用指南 guide(intro + guide/**) 1 + 5 + 11 + 4 + 4 + 10 + 2 = 37
开发文档 develop(不含参考) 3 + 13 + 6 + 10 + 9 + 3 = 44
参考 reference 11
术语表 glossary 1
合计 93

3.4 术语表初始词条 (Glossary Seed)

术语表是机翻约束(§5.3)。后台中文标签以 1.3 源码/语言包为准,标 ⚠ 的需在 P0 核对。

中文 English 说明
文章 post contents.type = post
独立页面 page 后台菜单“独立页面”;可成树
附件 / 文件 attachment 后台菜单叫“文件”
草稿 draft post_draft / page_draft
修订版本 revision 1.3 新类型
分类 / 标签 category / tag 统称 metas,不译作“元数据”
评论 / 引用通告 / Pingback comment / trackback / pingback Pingback 不译
控制台 dashboard 后台首页
永久链接 permalink
地址重写(伪静态) URL rewriting 首次出现时括注“伪静态”
主题 / 模板 theme / template 模板 = 主题中的单个 PHP 文件
自定义字段 custom field
插件 plugin
钩子 / 句柄 hook / handle 句柄 = factory() 的参数
Widget widget 不译,保持英文
Action action /action/<name>,不译
路由 route
面板 panel addPanel
管理员 / 编辑 / 贡献者 / 关注者 / 访问者 ⚠ administrator / editor / contributor / subscriber / visitor 角色
站点地址 site URL siteUrl
语言包 language pack usr/langs

4. 必交内容与旧站核对 (Required Content & Legacy Check)

4.1 源码引用到的必交内容 (Content Required by the Typecho Source Code)

规则:Typecho 源码链接或指向的选题都是必交内容;URL 可以变,内容不能缺。

依据:/tmp/typecho-docs-research/code-doc-links.md(源码 @ 56f4c6f)。源码里 docs.typecho.org 共 18 处命中(6 行文本 + 12 个 .mo),连同其他文档指向共推出 25 个选题:COVERED 17、PARTIAL 8、MISSING 0。

后台内的 12 个帮助入口(其中 E1–E3 直接从后台链到 docs.typecho.org)

# 界面 用户看到的文字 证据 新站落地页 状态
E1 所有后台页页脚(登录/注册页除外) “帮助文档” admin/copyright.php:8 intro(/) 已覆盖
E2 撰写文章/页面 → 自定义字段面板 “使用方法参见 帮助文档” admin/custom-fields.php:69 guide/content/custom-fields 本次补齐(字段类型)
E3 管理 → 用户 → 用户组 “具体的权限分配表请参考这里” var/Widget/Users/Edit.php:160 guide/content/users#permission-table 本次补齐(矩阵 + 锚点)
E4 所有后台页页脚 “支持论坛” admin/copyright.php:9 guide/help/getting-help 本次补齐(论坛)
E5 所有后台页页脚 “报告错误” admin/copyright.php:10 guide/help/getting-help 已覆盖
E6 所有后台页页脚 “资源下载” admin/copyright.php:11 guide/getting-started/installation 本次补齐(获取安装包)
E7 控制台首页(有新版本时) “您当前使用的版本是 %s / 官方最新版本是 %s” var/Widget/Ajax.php:68、admin/index.php:136-140 guide/getting-started/upgrade 本次补齐(提示条)
E8 设置 → 评论 → 评论日期格式 “具体写法请参考 PHP 日期格式写法” var/Widget/Options/Discussion.php:132 guide/settings/discussion 本次补齐(commentDateFormat)
E9 设置 → 阅读 → 文章日期格式 “请参考 PHP 日期格式写法” var/Widget/Options/Reading.php:108 guide/settings/reading 已覆盖
E10 设置 → 永久链接(重写检测失败) “重写功能检测失败 … 手动创建一个.htaccess文件” var/Widget/Options/Permalink.php:217-230 guide/settings/permalink → guide/operations/web-server 已覆盖
E11 安装第 2 步(无法写配置 / 库不存在) “手动创建 config.inc.php …”“请手动创建后重试” install.php:1086/1096/1109 guide/getting-started/installation、guide/operations/config-file 已覆盖
E12 备份 → 恢复 “将备份文件手动上传至服务器的 %s 目录下” admin/backup.php:57 guide/operations/backup 已覆盖

9 项必补内容(已写入 §3 对应页面的“内容”列)

  • 1. guide/content/users:“角色 × 操作”权限分配表,固定锚点 {#permission-table};注明下拉框只有 4 个组、visitor 不可手动分配(E3)。
  • 2. guide/content/custom-fields:字段类型 str/int/float/json;开头链到 develop/theme/custom-fields(E2)。
  • 3. guide/help/getting-help(intro 同步列出求助渠道):只列 forum.typecho.org、GitHub Issues、Telegram t.me/typechodev 三个渠道;Bug 模板的 6 个环境字段(E4、E5)。
  • 4. guide/getting-started/installation:获取安装包(typecho.org/download、GitHub Releases);MySQL/PostgreSQL 先建库(E6、E11)。
  • 5. guide/getting-started/upgrade:控制台新版本提示条(E7)。
  • 6. guide/settings/discussion:commentDateFormat 与 PHP 日期格式示例(E8)。
  • 7. guide/settings/reading:postDateFormat 的 PHP 日期格式示例(E9)。
  • 8. guide/content/profile:头像来自 Gravatar;xmlrpcMarkdown。
  • 9. develop/contributing/index:行为准则 CODE_OF_CONDUCT.md。

不需要新增页面(MISSING = 0,页数仍为 93)。后台与 CONTRIBUTING.md 里的链接必须在 typecho 主仓库改到新站 URL,列入 OQ6。

4.2 旧站缺口覆盖 (Legacy Gaps Now Covered, LI §5)

# 缺口 新页 # 缺口 新页
1 最新环境要求 requirements 10 用户、角色与注册 users、core/permissions
2 CLI 安装 cli-install 11 1.3 主题 API develop/theme/*、migrate-to-1-3
3 容器与现代主机 containers 12 1.3 插件开发 develop/plugin/*、reference/hooks
4 HTTPS / 代理 / CDN https-proxy 13 站长侧语言包 extend/languages
5 常量参考 config-file 14 1.2 → 1.3 升级说明 whats-new-1-3、migrate-to-1-3
6 内置备份 backup 15 调试排错 operations/debugging
7 后台逐屏指南 guide/content/*、guide/settings/* 16 安全加固 security
8 永久链接端到端 permalink + web-server 17 XML-RPC 客户端 feeds-xmlrpc
9 评论审核与反垃圾 comments、discussion 18 英文文档 §5 全站 /en/

4.3 旧站错误(新页必须纠正)

旧说法 1.3 事实 纠正位置
PHP 5.1+ PHP 7.4+(PS §1.1) requirements
Caddy v1、GoDaddy、nginx 0.7 / php5.ini / chmod 644 Caddy 2、PHP-FPM 现行写法 web-server、faq
$this->comments("comment") comments() 无类型参数,引用用 pings()(PS §3.5) develop/theme/comments
Typecho_API::factory、./widget 目录、render() \Widget\* + alloc()/widget()(PS §5.6) core/widget
includes/Route.php var/Typecho/Router.php core/router
Zend 下划线命名 命名空间 + 类型声明 coding-style
@dependence 构建号 @since 版本号(PS §4.1) plugin/structure
备份靠 Export/TeDbBak 插件 内置 Widget\Backup backup
升级只需替换文件 还需替换 install/,先备份,1.1 需经 1.2.1 upgrade

5. 双语与翻译流程 (Bilingual Workflow)

5.1 产出流程(IA §4.5 方案 B:机器初稿 + 人工校对)

步骤 做什么 产物
1 中文页合入 main(中文永远是源) docs/**.md(x)
2 以术语表为约束生成英文机翻稿,代码块、标识符、选项名、钩子名原样保留 i18n/en/docusaurus-plugin-content-docs/current/<同路径>,front matter 带 translation: machine
3 人工校对:术语、代码一致性、链接;完成后删除 translation: machine 同上
4 JSON 文案:pnpm write-translations --locale en,翻译 current.json(含 version.label: "1.3" 与每个分类标签)、code.json(含 3.10.2 新增 5 个键,DU §5.4)、navbar.json i18n/en/*.json
优先级 开发文档(develop + reference)先,使用指南后 IA §4.5 理由 1–3
模板 每页机翻都用 scripts/translation-prompt.md(试点分支 feat/en-pilot @ ce73259,尚未合入 main)填入源路径、source_commit 和正文;模板必须带完整术语表(§5.3)和 §5.2 的全部规则 scripts/translation-prompt.md

5.2 Front matter 规则(译者必读)

  1. 译文文件会整体替换源文件的 front matter(DU §5.1)。必须逐字复制源文件的 slug、sidebar_position、sidebar_label、id(如有),只翻译 title/description/sidebar_label 的值。漏掉 slug: / 会让英文首页变成 /en/intro,在 onBrokenLinks: 'throw' 下直接构建失败。
  2. 新增键:translation: machine(机翻未校对);source_commit: <sha>(翻译时中文源文件的最后一次提交,用于过期检测,§5.5)。
  3. 不允许只存在于 i18n/en/ 的页面(DU §5.2:不会被收录);英文需要的新页必须先有中文源文件。
  4. 相对链接与锚点保持与中文一致(例外见第 5 条);自定义标题锚点用 {#english-id} 固定,避免中英锚点不一致触发 onBrokenAnchors。
  5. 链接目标页还没有英文版时,相对 .md 链接在 onBrokenMarkdownLinks: 'throw' 下会构建失败,改用路由路径(如 /develop/contributing);目标页有英文版后改回相对 .md 链接。
  6. 只含一个页面的分类会被渲染成指向该页的链接,标签直接取中文 _category_.json,不经过 current.json,英文侧边栏会一直显示中文(试点中 develop/contributing 即如此)。这类分类的唯一页面要尽早翻译(可在译文中设 sidebar_label),或给分类补第二个页面。

5.3 术语约束

docs/glossary.md(§3.4 词条)是唯一译名来源:机翻提示词必须附带整张表;校对时按表检查;新术语先进表再用。代码标识符(Widget\Archive、commentsRequireUrl、Widget_Archive:handle 等)永远不翻译。

5.4 “未翻译 / 机翻待校对”横幅

项 做法(DU §5.3 已在 3.10.2 上端到端验证)
swizzle pnpm docusaurus swizzle @docusaurus/theme-classic DocItem/Content --wrap --danger(不在安全列表,必须 --danger;升级 Docusaurus 时需复查)
判定 useDocusaurusContext().i18n.currentLocale !== defaultLocale 且 useDoc().metadata.source 不以 @site/i18n/en/ 开头 → 显示“未翻译,正在显示中文原文”;useDoc().frontMatter.translation === 'machine' → 显示“机器翻译,待校对”
依赖 package.json 增加直接依赖 "@docusaurus/plugin-content-docs": "3.10.2"(pnpm 严格模式下否则无法解析 @docusaurus/plugin-content-docs/client)
文案 横幅文字放 code.json,链接到 /en/develop/contributing/docs

5.5 过期翻译检测与覆盖率

  • 脚本 scripts/i18n-status.mjs(P0 交付):遍历 docs/**,对每页输出 missing / machine / reviewed / stale。stale = git log <source_commit>..HEAD -- docs/<path> 非空。
  • 输出 Markdown 表(每页一行),CI 在 PR 中打印;覆盖率 = reviewed 页数 / 总页数,另报 machine 页数。
  • PR 模板勾选项:“改动了中文正文 → 已同步英文 / 已在 PR 中说明英文过期”。
  • v1 不在页面上显示“过期”横幅(OQ7)。

6. v1 不做 (Out of Scope)

不做 理由
多版本 / versions.json / 版本下拉 用户决定只写 1.3;新增功能用“1.3 新增”标注(IA §3.6)
1.3.0 之后 master 未发布改动 PS §6.3;只在 upgrade 中以“已知问题”提及 4c97a37
自动生成 PHP API 文档 维护成本高;手工整理参考页(IA §4.4)
XML-RPC / MetaWeblog 协议文档 受众窄;只写后台开关与客户端接入
第三方插件/主题手册与目录 LI §4 DROP 42 页;社区插件目录已无人维护,发现方式只用 GitHub 搜索/topic 与论坛(见 finding-plugins)
旧 PaaS(ACE/BAE/GAE/SAE)安装 平台已关停
中英以外的语言、Crowdin/Lunaria 规模不足,Git 策略足够(IA §4.4)
页面级“翻译过期”横幅 需构建期注入 git 数据;v1 只出报告(OQ7)
future.v4 / @docusaurus/faster 与 IA 无关,另开 PR 测试(DU §5.5)
修改 typecho 主仓库(CONTRIBUTING.md 链接、CODING_STYLE.md、tools/Dockerfile) 不在本仓库;列为后续 issue(OQ6)

7. 交付顺序 (Delivery Phases)

阶段 交付内容 页数
P0 骨架 配置:locales 加 en、localeConfigs、versions.current.label: '1.3'、两套侧边栏、navbar(docSidebar×2、docsVersion、localeDropdown)、链接检查改 throw、editLocalizedFiles;删除 tutorial-extras/;目录与 _category_.json;迁移现有 intro、installation、upgrade、backup、contributing 到新路径;develop/index、glossary(§3.4 词条)、guide/help/faq(替换模板文字);按 §2.1 删除旧站跳转插件及其依赖;横幅 swizzle + 依赖;scripts/i18n-status.mjs;搜索插件验证;以上页面的英文稿;部署 8
P1 安装与运维 guide/getting-started/*、guide/operations/*、guide/help/* 其余页(LI §6 Q1–Q11 全部有答案) +13
P2 后台使用 guide/content/*、guide/settings/*、guide/extend/* +19
P3 主题开发 develop/theme/**、migrate-to-1-3、i18n;参考 archive、row-widgets、list-widgets、options、option-names、form-elements、class-aliases;同步出英文机翻稿 +28
P4 插件开发 develop/plugin/*;参考 hooks、helper、routes-actions、database-schema;英文机翻稿 +14
P5 核心与贡献 develop/core/*、develop/contributing/docs、translate-typecho;英文机翻稿 +11
P6 英文校对 develop + reference 全部人工校对,然后 guide;按 i18n-status 报告推进 0

页数核对:8 + 13 + 19 + 28 + 14 + 11 = 93(develop/contributing/index 由现有 contributing.mdx 在 P0 迁移)。

8. 验收标准 (Acceptance Criteria)

每个阶段通用

检查 通过条件
构建 pnpm build 退出码 0,输出中匹配 `warn
链接 onBrokenLinks、onBrokenAnchors、markdown.hooks.onBrokenMarkdownLinks 均为 'throw' 且构建通过
内容来源 页面上每个代码标识符、选项名、钩子、常量和路径,都要在 /Users/joyqi/Work/typecho @ 56f4c6f(v1.3.0-10)核对过;与 v1.3.0 标签不一致之处(PS §6.3)不得写成 1.3 功能
源码必交内容 §4.1 中本阶段涉及的帮助入口都有落地页,对应的必补内容已写进正文
术语 中英文都符合术语表;新术语已入表
英文覆盖 i18n-status 报告逐页列出;本阶段新页在 /en/ 至少为 machine 状态(P1/P2 允许 missing,但必须显示“未翻译”横幅)
写作口径 页面只陈述产品事实:不写测试状态与验证过程(“实测”“未验证”、测试环境、测试日期等),不提旧文档站或页面的旧版本;已知问题直接写成关于产品的陈述(“1.3.0 中……”)。测试记录只写进 /tmp/typecho-docs-research/ 下的报告

分阶段专项

阶段 专项检查
P0 / 与 /en/ 均 200;/en/ 首页标题为英文(证明 slug: / 已复制);§2.1 所述跳转插件已从 docusaurus.config.js 与 package.json 中移除;横幅只出现在回退页与机翻页;navbar 显示 1.3;git grep tutorial-extras 为空
P1 E4–E7、E11、E12 的落地内容齐全;containers 用 joyqi/typecho:1.3.0-php8.2-apache 实际启动一次并完成安装,写作当天重新调用 Docker Hub API 更新标签与日期;cli-install 中的环境变量在真实 PHP 7.4 与 8.x 上执行一次 php install.php 验证;web-server 的 nginx/Apache/Caddy 2 配置各实测一次永久链接可用
P2 /guide/content/users#permission-table 锚点存在(构建时 onBrokenAnchors 校验);E2、E3、E8、E9、E10 的落地内容齐全;每个设置页的字段名与 Options/*.php 的 from() 列表逐一对照,无多无漏(排除三项无效字段)
P3 quick-start 的步骤能从空目录做出可在后台启用的主题;KEEP 页代码片段在 classic-22 下运行
P4 reference/hooks 行数 = 122 + 3 个动态族,用 PS §4.4 的 grep 方法重跑结果一致;hello-world 与 usr/plugins/HelloWorld/Plugin.php 一致
P5 contributing/index 含行为准则;coding-style 与 typecho 仓库 CLAUDE.md 无冲突;贡献流程与 .github/workflows/* 一致
P6 develop + reference 的 reviewed 覆盖率 100%;guide 达到 OQ4 中约定的比例

9. 待定问题 (Open Questions)

# 问题 选项 推荐
OQ1 1.1 站点直接升级 1.3 会漏掉 comments.agent/comments.url 两个列变更(PS §1.7) A. 文档要求 1.1 → 1.2.1 → 1.3;B. 先请核心恢复迁移再写;C. 两者都做 C:文档先写 A,同时在 typecho 仓库提 issue,修复后改文档
OQ2 搜索方案 A. 本地搜索插件;B. Algolia DocSearch;C. v1 不上搜索 A,P0 验证 3.10.2/React 19 兼容与中文分词;不行则 C,并申请 B
OQ3 机翻工具与校对人 A. LLM + 术语表,维护者校对;B. 只人工;C. 招募社区译者 A,开发文档由熟悉代码的维护者先校对
OQ4 使用指南英文的完成目标 A. 与开发文档同标准(100% reviewed);B. 允许长期 machine;C. 只翻 getting-started + operations B:先 machine 全覆盖,校对按访问量排序
OQ5 WordPress 迁移 A. 实测 WordpressToTypecho 在 1.3 下可用后写教程;B. 只外链并提示风险;C. 暂不写 A,P1 实测,失败则退回 B
OQ6 是否给 typecho 主仓库提 PR:(1) 把 admin/copyright.php:8、admin/custom-fields.php:69、var/Widget/Users/Edit.php:160 三处源码链接和 CONTRIBUTING.md:25/29/35 改成新站 URL(E2 → /guide/content/custom-fields,E3 → /guide/content/users#permission-table);(2) 在 typecho/languages 按 https 源串重新生成 .mo(现有语言包仍是 http://,两条带链接的提示匹配不到译文,在其他语言界面中回退成中文);(3) 删除 admin/editor-js.php:86 的死字符串“Markdown语法帮助”,或接上帮助按钮并指向 guide/content/posts;(4) 补 CODING_STYLE.md(或指向 coding-style);(5) 删除过时的 tools/Dockerfile;(6) 清理三项无效评论选项 A. 是,P5 后统一提;B. 否 A
OQ7 翻译过期是否在页面上提示 A. 只出 CI 报告;B. 构建期注入数据显示横幅 A(v1),B 留给 v2
OQ8 URL 前缀 /guide/…、/develop/… 是否接受(较长,但与侧边栏一一对应) A. 接受;B. 使用指南去掉 /guide 前缀放根下 A:两棵树边界清晰,URL 即可看出所属侧边栏