主题文档写文档后台示例Demo

Customize

后台自定义配置以后改主题不用翻代码

我先把配置后台做成独立控制台:官网首页、个人中心、头像菜单、评论区、用户中心、AI 回复、官网内容和配套插件都能集中维护,后续接 XiunoX 插件接口时可以直接复用这套字段。

Theme Admin

Annoying 主题配置后台

以后主题、插件、官网内容、用户中心、评论和个人中心都从这里维护;当前站点先用静态 JSON,接入 XiunoX 后端时沿用同一份结构。

可配置模块10主题 / 插件 / 官网
启用插件4/5可放进后台栏目
菜单入口8头像菜单 + 侧栏
保存模式admin-apiplugin/annoying_theme/conf.json
Backend Roadmap

以后自定义就走这一套后台

现在已经预留服务器 JSON 后台:官网配置页可读写 API;接入 XiunoX 后台时继续使用同一份 Schema,前台插件统一读取配置。

官网后台 API当前页面可以直接读取和写入服务器 JSON 配置。/api/admin/config
前台公开配置主题插件、官网前台和文档页可以读取这份安全配置。/api/admin/public-config
XiunoX 后台插件把 annoying_admin_ui 放进 plugin/,后台安装后会出现 Annoying 主题栏目。/plugin/annoying_theme/setting.php
文档写作 APIReact 后台写 Markdown,Go 服务负责保存到服务器文档目录。/api/admin/docs/save

Customize

主题外观

品牌、配色、动效和全局视觉变量
已载入默认配置
官网首页模块顺序按参考站首页模块顺序维护,后续可让后台决定显示与排序。
右上角头像菜单用户点击头像后显示的入口,后续可写入前台插件。
后台侧边栏栏目把小屋配套插件集中进后台,避免到插件列表里反复找。
Annoying 配套插件每个插件都保留独立设置入口,未安装也能先占位。
接入输出XiunoX / 官网 / 文档后台共用
实时预览
Annoying Theme

给 XiunoX 站长的一套现代主题系统

快速开始
{
  "site": {
    "siteName": "Annoying Theme",
    "slogan": "给 XiunoX 站长的一套现代主题系统",
    "brandColor": "#425aef",
    "accentColor": "#ff4fa3",
    "radius": "18",
    "glassEffect": true,
    "animationLevel": "balanced"
  },
  "homepage": {
    "heroEnabled": true,
    "architectureEnabled": true,
    "featuresEnabled": true,
    "openEnabled": true,
    "docsPath": "/docs/",
    "quickStartText": "快速开始"
  },
  "docs": {
    "enabled": true,
    "vitepressHome": true,
    "introOnly": true,
    "lightTheme": true,
    "deployPath": "/docs/",
    "editableLater": true
  },
  "navigation": {
    "sidebarSections": true,
    "keepScrollPosition": true,
    "avatarMenuCustom": true,
    "mobileBottomNav": false,
    "docsEntry": true,
    "demoEntry": true
  },
  "userCenter": {
    "profileEnabled": true,
    "profileLayout": "anheyu-like",
    "vipEntry": true,
    "rechargeEntry": true,
    "orderEntry": true,
    "homepageTone": "#ff4fa3"
  },
  "comments": {
    "enabled": true,
    "borderless": true,
    "legacyPinkClean": true,
    "compactButtons": true,
    "aiAssist": false,
    "nestedReply": true
  },
  "userBenefits": {
    "enabled": true,
    "defaultPlan": "open",
    "lifetimeMember": true,
    "paymentWechat": true,
    "paymentAlipay": true,
    "giftCard": false
  },
  "ai": {
    "enabled": false,
    "mode": "manual",
    "label": "AI 助手",
    "bindXiunoXReply": true,
    "safeMode": true,
    "provider": "custom-api"
  },
  "publishing": {
    "downloadPath": "/download/",
    "docsPath": "/docs/",
    "releaseNote": "持续更新",
    "changelogEnabled": true,
    "sourceLink": "",
    "demoLink": "https://happy.annoying.cn"
  },
  "system": {
    "saveMode": "admin-api",
    "adminApiEndpoint": "/api/admin/config",
    "publicConfigEndpoint": "/api/admin/public-config",
    "xiunoxEndpoint": "/plugin/annoying_theme/setting.php",
    "configFile": "plugin/annoying_theme/conf.json",
    "cacheVersion": "2026.08",
    "csrfTokenName": "csrf_token",
    "backupBeforeSave": true
  },
  "homepageSections": [
    {
      "key": "hero",
      "name": "首页首屏",
      "component": "Hero",
      "enabled": true
    },
    {
      "key": "advantages",
      "name": "为创作者重新定义",
      "component": "AdvantageShowcase",
      "enabled": true
    },
    {
      "key": "metrics",
      "name": "数据指标",
      "component": "MetricsStrip",
      "enabled": true
    },
    {
      "key": "architecture",
      "name": "主题技术架构",
      "component": "AnnoyingArchitecture",
      "enabled": true
    },
    {
      "key": "features",
      "name": "强大功能",
      "component": "PowerfulFeatures",
      "enabled": true
    },
    {
      "key": "usecases",
      "name": "使用场景",
      "component": "UseCases",
      "enabled": true
    },
    {
      "key": "deployment",
      "name": "部署方式",
      "component": "DeploymentSection",
      "enabled": true
    },
    {
      "key": "open",
      "name": "开源主题说明",
      "component": "OpenSourceSection",
      "enabled": true
    }
  ],
  "mainNav": [
    {
      "title": "主题",
      "href": "/themes/",
      "enabled": true
    },
    {
      "title": "文档",
      "href": "/docs/",
      "enabled": true
    },
    {
      "title": "写文档",
      "href": "/admin/docs/",
      "enabled": true
    },
    {
      "title": "后台",
      "href": "/admin/config/",
      "enabled": true
    },
    {
      "title": "示例Demo",
      "href": "https://happy.annoying.cn",
      "enabled": true
    }
  ],
  "avatarMenu": [
    {
      "title": "个人主页",
      "href": "/my.htm",
      "enabled": true
    },
    {
      "title": "用户中心",
      "href": "/my-vip.htm",
      "enabled": true
    },
    {
      "title": "记录入口",
      "href": "/my-order.htm",
      "enabled": true
    },
    {
      "title": "后台配置",
      "href": "/admin/config/",
      "enabled": true
    }
  ],
  "sidebarMenu": [
    {
      "title": "主题总览",
      "href": "/admin/",
      "enabled": true
    },
    {
      "title": "自定义配置",
      "href": "/admin/config/",
      "enabled": true
    },
    {
      "title": "官网内容",
      "href": "/admin/config/#publishing",
      "enabled": true
    },
    {
      "title": "使用文档",
      "href": "/docs/",
      "enabled": true
    }
  ],
  "plugins": [
    {
      "key": "annoying_frontend_ui",
      "name": "前端美化",
      "enabled": true,
      "admin": true,
      "setting": "/plugin/annoying_frontend_ui/setting.php"
    },
    {
      "key": "annoying_id_comments",
      "name": "本地评论",
      "enabled": true,
      "admin": true,
      "setting": "/plugin/annoying_id_comments/setting.php"
    },
    {
      "key": "annoying_user_center",
      "name": "用户中心",
      "enabled": true,
      "admin": true,
      "setting": "/plugin/annoying_user_center/setting.php"
    },
    {
      "key": "annoying_ai_reply",
      "name": "AI 自动回复",
      "enabled": false,
      "admin": true,
      "setting": "/plugin/annoying_ai_reply/setting.php"
    },
    {
      "key": "annoying_suite_core",
      "name": "主题核心后台",
      "enabled": true,
      "admin": true,
      "setting": "/plugin/annoying_suite_core/setting.php"
    }
  ]
}
官网后台会把这份 JSON 写入服务器配置文件;XiunoX 主题端后续也可以同步读取 plugin/annoying_theme/conf.json
配置页已支持导入/导出,后续换服务器或调整官网文案不用重新填。