逗号CMS 官方安装手册 V6.6

从安装到使用,覆盖全流程的完整文档

系统概述

逗号CMS是一款轻量级PHP内容管理系统,采用 PHP + MySQL 架构,支持PC端和手机端自适应,内置完整的后台管理功能。系统设计简洁、安全、高效,适合个人博客、企业官网、产品展示等各类网站场景。

核心特性

  • 响应式设计 — PC和手机端自适应,一套模板自动切换
  • 伪静态支持 — ID/哈希/MD5三种格式,文章、分类、产品前缀可自定义
  • 静态缓存 — 一键开启页面静态缓存,大幅提升访问速度
  • SEO优化 — 支持标签动态替换,自动生成TDK信息
  • 安全防护 — CSRF防护、SQL注入防护、XSS防护、bcrypt密码加密、频率限制、IP/UA黑白名单
  • 富文本编辑 — 集成WangEditor 5编辑器,支持图片上传
  • 广告管理系统 — 固定广告位+自定义广告位,多尺寸图片上传,轮播/随机展示模式,不限页面投放
  • AI自动撰文 — 集成逗号API,自动生成文章和配图,支持8种文章类型和自定义目标字数
  • TXT批量导入 — 支持TXT文件批量导入文章,支持定时任务
  • 产品管理 — 独立产品模块,支持分类、图库、价格、联系方式
  • 主题管理 — 支持主题在线安装、切换、更新
  • 阅读全文 — 文章页支持隐藏部分内容,点击阅读全文查看
  • 访问统计 — 记录访问日志,支持IP/UA黑白名单、频率限制
  • 敏感词过滤 — 自定义敏感词库,自动过滤文章内容和搜索词
  • 网站地图 — 自动生成XML网站地图,支持分页和定时生成
  • 后台入口改名 — 只需重命名 admin.php,其他文件无需改动,全站自动识别
  • 自定义404 — 访问不存在的页面自动跳转 404 页面
  • 后台路由管理 — 可视化编辑后台路由配置
  • 后台菜单管理 — 可视化编辑左侧导航菜单
  • 前端路由管理 — 可视化编辑前端伪静态解析和路由分发

环境要求

服务器环境

组件环境要求推荐配置
PHP7.0~8.37.4或者8.0
MySQL5.7~8.x5.7
PHP扩展mysqli, session, json, mbstring, curl, gd,php-zip(大部分环境都自带,后台无法更新检查 php-zip 扩展)

目录权限

以下目录需要写入权限(755 或 777):

/set/img/       -- 图片上传目录
/set/ai_pic/    -- AI生成图片目录
/cache/         -- 缓存文件目录(含路由缓存)
/set/txt/       -- TXT导入文件目录
/set/peitu/     -- 随机配图目录
使用宝塔面板部署时,创建网站后这些目录会自动拥有正确的权限。如遇到权限问题,请设置目录权限为755,所有者为www。

安装指南

第一步:上传文件,访问域名

将下载的逗号CMS压缩包解压上传到网站根目录,在浏览器中输入 http://你的域名,系统会自动进入安装向导。

第二步:同意协议、检测环境

仔细阅读许可协议,点击「同意协议,开始安装」进入下一步环境检测。

提示:若环境检测有地方不符合,请您按照提示完善环境要求后点击下一步。

第三步:填写配置

配置项说明示例
数据库主机通常为 localhostlocalhost
数据库用户名MySQL用户名root
数据库密码MySQL密码********
数据库名建议使用新数据库douhao_cms
数据表前缀系统固定为 douhao_,非技术需要,不可修改douhao_
网站名称显示在网站标题中逗号CMS
管理员账号后台登录用户名admin
管理员密码至少6位********

第四步:完成安装

点击「开始安装」,系统会自动:

  • 创建数据库和数据表
  • 写入 config.php 配置文件
  • Apache/IIS自动创建伪静态文件,NGINX手动设置伪静态规则
  • 创建 set/installed.lock 安装锁文件
  • 自动删除 install.php 文件(如权限允许)
安装完成后,请访问 http://你的域名/admin.php 进入后台管理。【强烈建议修改入口admin.php文件名,安全!】
如果 install.php 无法自动删除,请手动删除该文件,防止被恶意利用。
💡 安装完成后,部分功能(如主题中心、AI撰文)需要到「网站设置」中配置逗号API密钥后才能使用。
🔥 特别重要:前端访问必须要设置伪静态规则,否则页面会404,伪静态设置规则请访问「伪静态设置」章节。

快速上手

安装完成后,按照以下步骤快速搭建您的网站:

  1. 登录后台:访问 http://你的域名/admin.php,输入管理员账号密码
  2. 网站设置:左侧导航 → 系统管理 → 网站设置,设置网站名称、上传LOGO、填写备案号
  3. SEO设置:网站设置 → SEO设置,配置首页/分类/文章的标题、关键词、描述
  4. 添加分类:文章管理 → 点击「分类管理」,添加文章分类
  5. 发布文章:文章管理 → 点击「添加文章」,填写标题、选择分类、编辑内容
  6. 设置广告:广告管理 → 选择「网站轮播图」→ 添加广告,上传图片
  7. 查看网站:访问首页查看效果

后台登录

访问 http://你的域名/admin.php 进入后台登录页面。输入安装时设置的管理员账号和密码即可登录。

登录安全机制

  • 连续 5次 输入错误,账号将被 锁定30分钟
  • 密码使用 bcrypt 加密存储,安全可靠
  • 登录成功后会记录登录日志,可在管理员管理中查看

忘记密码

如果忘记管理员密码,可以登录数据库,在 douhao_admin 表中修改密码字段。使用以下PHP代码生成新密码后替换:

<?php echo password_hash('新密码', PASSWORD_BCRYPT); ?>

后台首页

登录后默认进入后台首页,展示网站统计数据概览:

今日数据

  • 今日访客 — 今日访问网站的人数
  • 今日独立IP — 今日访问的独立IP数量
  • 今日阅读量 — 今日所有文章的阅读量总和
  • 今日新增文章 — 今日发布/保存的文章数量
  • 今日热门文章 — 今日阅读量 ≥ 50 的文章数量
  • 今日新增产品 — 今日发布的产品数量
  • 今日新增蜘蛛 — 今日爬虫访问记录数量
  • 今日黑名单 — 今日被加入黑名单的IP数量

总计数据

  • 访客总量 / 独立IP总量 / 阅读总量
  • 文章总数 / 产品总数 / 分类数量 / 广告数量
  • 推荐总数 / 热门总数 / 黑名单总数

最新内容

  • 最新文章 — 最近发布的10篇文章
  • 最新产品 — 最近发布的10个产品
  • 本月访问排行 — 本月阅读量最高的10篇文章
  • 本月产品排行 — 本月浏览量最高的10个产品
后台首页顶部会显示CMS版本更新提示,如有新版本可一键在线更新。

路由与菜单管理

后台左侧导航 → 管理 → 后台路由管理 / 后台菜单管理 / 前端路由管理

这三个功能允许管理员在不修改代码的情况下,直接通过后台界面编辑路由配置和导航菜单。

1. 后台路由管理

  • 功能说明:管理后台所有页面的路由映射关系,即 page 参数与文件路径的对应关系
  • 配置方式:在文本框中编辑PHP数组代码,定义路由映射
  • 代码格式:
    $allowed_pages = [
        'index' => 'admin/index.php',
        'article_manage' => 'admin/article_manage.php',
        // ... 更多路由
    ];
  • 使用场景:当您新增了后台功能模块,需要将其添加到路由表中
修改路由配置时请确保PHP语法正确,否则可能导致后台部分页面无法访问。建议先备份原有代码再修改。

2. 后台菜单管理

  • 功能说明:管理后台左侧导航菜单的显示结构和链接
  • 配置方式:在文本框中编辑HTML代码,定义菜单的分组和链接
  • 可用变量: <?php echo $highlight_page; ?> — 获取当前页面标识,用于高亮当前菜单
  • 菜单结构示例:
    <div class="nav-group">
        <div class="nav-title">系统管理</div>
        <a href="?page=site_setting" class="<?php echo $highlight_page=='site_setting'?'active':''; ?>">
            <i class="fas fa-cog"></i><span>网站设置</span>
        </a>
    </div>

3. 前端路由管理

  • 功能说明:管理前端网站的伪静态URL解析和路由分发逻辑
  • 访问路径:左侧导航 → 用户管理 → 前端路由管理
  • 配置方式:在文本框中编辑PHP代码,实现两个核心函数
  • 必须实现的函数:
    • parse_rewrite_url($uri, $setting, $db, $prefix) — 解析伪静态URL,返回action名称
    • route_dispatch($action, $db, $prefix, $setting, $template_path) — 路由分发,加载对应模板
  • 404 处理:未知 URL 会自动返回 404 action,由 route_dispatch() 加载 set/404.php
  • 缓存机制:配置保存后自动生成缓存文件到 /cache/front_route_cache.php,所有用户共享,大幅提升访问速度
路由管理包含三个独立功能:后台路由控制页面访问路径,后台菜单控制导航显示,前端路由控制前端URL解析和模板加载。三者配合使用可以完整控制网站的路由体系。

网站设置

左侧导航 → 系统管理 → 网站设置,包含以下配置项:

网站设置 Tab

设置项说明
网站名称浏览器标签页标题,未上传LOGO时显示为文字LOGO
网站LOGO上传图片,支持JPG/PNG格式,建议尺寸 200×60px
逗号API密钥用于AI自动撰文、主题中心等功能,点击注册获取
防刷token用于定时任务访问验证,默认 douhao
ICP备案号填写后自动生成底部备案链接,如:京ICP备12345678号
敏感词设置每行一个敏感词,文章内容和搜索自动过滤
统计代码粘贴百度统计、CNZZ等第三方统计代码
图文列表模式左图右文 / 左文右图,影响首页和列表页排版
阅读全文开启后文章页隐藏部分内容,点击阅读全文查看全部
热门阅读量文章阅读量达到此数值自动标记为热门

参数设置 Tab

配置各页面显示的数据数量:

  • 首页参数 — 推荐文章数、热门文章数、最新文章数、推荐产品数、热门产品数、最新产品数
  • 分类列表页 — 最新/推荐/热门文章数
  • 文章详情页 — 最新/相关/热门文章数
  • 产品分类页 — 最新/推荐/热门产品数
  • 产品详情页 — 相关/推荐/热门产品数

伪静态设置 Tab

配置文章/分类/产品的URL前缀和模式,详见「伪静态设置」章节。

友情链接 Tab

管理网站友情链接,支持添加、编辑、删除、启用/禁用、排序。

SEO设置

网站设置 → SEO设置,分为6个独立页面配置:

页面说明
首页网站首页的SEO标题/关键词/描述
文章分类列表页所有分类列表页的SEO信息(支持标签替换)
文章详情页单篇文章详情页的SEO信息(支持标签替换)
产品分类页产品分类列表页的SEO信息(支持标签替换)
产品详情页单个产品详情页的SEO信息(支持标签替换)
搜索页搜索页面的SEO信息(支持 {keyword} 标签替换)

支持的动态标签

标签说明适用页面
{site_name}网站名称所有页面
{category_name}当前分类名称分类列表页、文章详情页、产品分类页
{article_title}文章标题文章详情页
{article_description}文章摘要文章详情页
{product_title}产品标题产品详情页
{product_description}产品简介产品详情页
{keyword}用户搜索的关键词搜索页

顶部导航

后台 → 网站设置 → 顶部导航,管理网站前台顶部显示的导航菜单。设置后会自动生成缓存文件,前台页面直接读取缓存,无需查询数据库,速度快、性能高。

添加导航

  1. 进入「网站设置 → 顶部导航」页面
  2. 填写「导航名称」,如:首页、关于我们
  3. 选择「链接类型」:内部链接 / 外部链接
  4. 选择「打开方式」:当前窗口 / 新窗口
  5. 选择「状态」:启用 / 禁用
  6. 设置「排序」:数字越小越靠前
  7. 点击「添加导航」

内部链接

选择「内部链接」后,会显示一级频道下拉框,可选择:

一级频道对应 URL支持二级页面
首页/否
文章频道/list.html是(可选任意文章分类)
产品频道/product.html是(可选任意产品分类)
留言本/ubb是(可选任意留言页)
热搜标签/rs否
内部链接自动跟随伪静态设置:比如选择「文章频道 → 某分类」,系统会自动使用 build_url() 生成符合当前伪静态设置的 URL。切换伪静态格式后,导航 URL 会自动更新,无需手动修改。

外部链接

选择「外部链接」后,直接填写完整地址即可,如 https://www.example.com。如果没写 http:// 或 https://,系统会自动补 http://。

导航列表操作

  • 排序快捷编辑 — 点击排序数字,变成输入框,回车或失焦自动保存
  • 启用/禁用切换 — 点击状态徽章可快速切换
  • 编辑 — 弹窗修改导航名称、链接、排序、打开方式、状态
  • 删除 — 从数据库中删除该导航

缓存机制

  • 任何添加/编辑/删除/排序修改后,系统都会自动重建缓存
  • 缓存文件位置:/cache/nav_cache.php
  • 缓存带「伪静态指纹」校验,伪静态设置变化后自动重建
  • 前台页面读取缓存,零数据库查询
  • 缓存文件丢失或损坏时,前台自动从数据库读取并重建
页面顶部会显示缓存状态,包括是否已生成、更新时间、文件位置。缓存文件存储的是导航数组,与伪静态前缀、URL 模式等相关,伪静态设置改变后缓存会自动失效。

与模板的对接

默认模板 templates/default/header.php 会自动调用 get_nav_menu() 读取导航数据。如果导航列表为空,会自动回退到内置的默认导航(首页/全部文章/产品/留言本),保证老站不破坏。

广告位管理

左侧导航 → 内容管理 → 广告管理,进入广告位管理页面。

系统固定广告位

系统默认提供4个固定广告位,不可删除:

广告位标识展示模式用途
网站轮播图banner轮播模式首页轮播广告
网站横幅header_banner随机模式顶部横幅广告
网站底部悬浮footer_float随机模式底部悬浮广告
文章页阅读全文article_readmore随机模式阅读全文弹窗广告

自定义广告位

点击「添加广告位」可创建自定义广告位:

  • 广告位名称 — 便于识别的名称
  • 广告位标识 — 只能包含字母、数字、下划线,用于调用函数
  • 描述 — 可选,简要说明用途

自定义广告位默认使用「随机模式」展示。

调用函数

在模板文件中使用以下代码调用广告位:

<?php echo get_ad_position('广告位标识'); ?>

例如:<?php echo get_ad_position('banner'); ?>

广告位状态

每个广告位都可以独立开启或关闭。关闭后,该广告位下的所有广告都不会在前端显示。

广告管理

在广告位管理页面点击「广告设置」按钮,进入该广告位下的广告列表。

添加广告

  1. 点击「添加广告」进入编辑页面
  2. 填写广告标题(必填)
  3. 选择投放页面(可多选,详见下方说明)
  4. 选择广告模板:图片、代码、文字(三选一)
  5. 图片模板:支持分别上传移动端、平板端、桌面端三种尺寸的图片,自动适配不同屏幕
  6. 代码模板:直接粘贴HTML/JS代码
  7. 文字模板:输入文字内容,可设置跳转链接
  8. 设置排序(数字越小越靠前)
  9. 选择状态(启用/禁用)
  10. 点击保存

投放页面选择 v6.6新增

投放页面支持以下选项:

选项说明
首页仅首页展示
分类页仅文章分类列表页展示
文章详情页仅文章详情页展示
产品分类页仅产品分类列表页展示
产品详情页仅产品详情页展示
不限页面全站所有页面都展示(包括自定义页面,如 jiehun.php 等)
「不限页面」是 v6.6 新增的选项,勾选后该广告会在网站所有页面显示,适合投放全局通用广告(如页脚广告、置顶公告等)。
互斥规则:「不限页面」与其它页面选项互斥。勾选「不限页面」会自动取消其它页面勾选,反之亦然。
文章页阅读全文广告位特殊说明:此广告位只支持「文章详情页」选项,不显示「不限页面」,因为它只在文章页的特定弹窗中出现。

多尺寸图片说明

  • 移动端(≤768px)— 建议尺寸:600×400px
  • 平板端(769-1024px)— 建议尺寸:1024×500px
  • 桌面端(≥1025px)— 建议尺寸:1920×500px
  • 如果某尺寸未上传,系统会自动使用上一级尺寸的图片
轮播图广告请使用「图片」模板,宽度建议1920px,高度建议500px,保持宽高比一致。如果只上传一种尺寸,系统会自动适配所有屏幕。

文章管理

左侧导航 → 内容管理 → 文章管理,管理所有文章。

添加文章

  1. 点击「添加文章」进入编辑页面
  2. 输入文章标题(必填)
  3. 选择所属分类(必填,如无分类请先添加)
  4. 上传封面图(可选,支持JPG/PNG)
  5. 填写摘要(可选,留空自动截取正文前120字)
  6. 使用WangEditor富文本编辑器编写内容
  7. 选择状态(发布/草稿)
  8. 点击「发布文章」

文章列表功能

  • 筛选 — 按分类、状态(发布/草稿)、属性(推荐/热门)筛选
  • 搜索 — 按标题关键词搜索
  • 批量操作 — 勾选多篇文章批量删除
  • 快捷操作 — 一键切换推荐/热门、切换发布状态

分类管理

点击「分类管理」弹窗,可添加/删除文章分类。删除分类不会删除该分类下的文章。

随机配图

点击「随机配图」按钮,可为没有封面图的文章自动分配图片。支持:

  • 全局开关:开启后新增文章自动配图
  • 每个分类独立设置配图文件夹(在 /set/peitu/ 下创建文件夹并上传图片)
  • 一键为所有无图文章配图
文章内容中的第一张图片会自动作为缩略图显示在列表中,无需单独上传封面图。

产品管理

左侧导航 → 内容管理 → 产品管理,独立的产品管理模块。

添加产品

  1. 点击「添加产品」进入编辑页面
  2. 输入产品标题(必填)
  3. 选择产品分类(必填)
  4. 上传封面图和图库(支持多张图片)
  5. 设置价格类型(议价/自定义价格)和联系方式
  6. 填写产品简介和详情介绍(富文本编辑器)
  7. 点击「发布产品」

产品列表功能

  • 按分类筛选、关键词搜索
  • 一键切换推荐/热门
  • 批量删除

人员管理

左侧导航 → 内容管理 → 产品管理 → 工具栏 → 「人员管理」按钮,独立的人员展示模块,用于展示公司团队成员、客服、业务联系人等信息。

进入方式

  • 产品管理页面 → 顶部工具栏 → 点击「人员管理」按钮
  • 人员管理页面 → 顶部工具栏 → 点击「返回企业管理」按钮可返回产品管理

添加人员

  1. 点击「添加人员」按钮进入编辑页面
  2. 填写「姓名」(必填,最多 50 个字)
  3. 上传「头像」(可选,建议正方形图片,展示为圆形)
  4. 填写「职位」(可选,如:技术总监、客服经理,最多 100 个字)
  5. 填写「电话」(可选,5-30 位数字或 + - 符号)
  6. 上传「微信二维码」(可选,建议 220×220px)
  7. 填写「邮箱」(可选,需符合邮箱格式)
  8. 填写「QQ」(可选,5-11 位数字)
  9. 设置「排序」(数字越小越靠前,默认 0)
  10. 选择「状态」(启用 / 禁用)
  11. 点击「添加人员」保存

字段说明

字段必填格式要求说明
姓名是最长 50 字团队成员的名字
头像否JPG/PNG建议正方形,前台展示为圆形
职位否最长 100 字如:技术总监、销售顾问
电话否数字、+ - 空格5-30 位,手机或固话均可
微信二维码否JPG/PNG建议 220×220px
邮箱否标准邮箱格式如 service@example.com
QQ否5-11 位数字纯数字,如 800884111
排序否整数,默认 0数字越小越靠前
状态否启用 / 禁用禁用后不在前台展示

人员列表

人员列表页面显示所有人员,包含:

  • ID — 人员编号
  • 头像 — 显示为 40×40 圆形缩略图,无头像显示「无」
  • 姓名 — 加粗显示
  • 职位 / 电话 / 邮箱 / QQ — 未填时显示「-」
  • 排序 — 排序值
  • 状态 — 可点击的状态徽章,点击可切换启用/禁用
  • 操作 — 编辑 / 删除按钮

编辑人员

点击列表中人员对应的「编辑」按钮进入编辑页面。编辑页面与添加页面结构相同,会预填当前值:

  • 姓名、职位、电话、邮箱、QQ、排序、状态 可修改
  • 头像和微信二维码如果已有,会显示当前预览图,可重新上传覆盖或保持原图

删除人员

点击列表中的「删除」按钮,确认后删除该人员。删除时会自动删除该人员的头像和微信二维码文件。

状态切换

点击人员列表中「状态」列的徽章,可快速切换启用 / 禁用状态,无需进入编辑页面。禁用后该人员不在前台展示,但配置会保留。

人员管理数据存储于 douhao_staff 表,头像和微信二维码上传到 /set/img/ 目录。
删除人员会同步删除其头像和微信二维码文件,此操作不可恢复,请确认后再操作。

分类管理

文章和产品各有独立的分类管理:

文章分类

在「文章管理」页面点击「分类管理」按钮,可添加/删除文章分类。支持设置配图文件夹(用于随机配图功能)。

产品分类

在「产品管理」页面点击「分类管理」按钮,可添加/删除产品分类。

搜索标签

左侧导航 → 内容管理 → 留言管理 → 搜索管理。

搜索管理用于管理用户搜索产生的搜索词。用户在前台搜索时,搜索词会自动记录到系统,并根据「网站设置 → 搜索标签审核」开关决定是否直接发布或进入待审。

功能概览

  • 搜索列表 — 显示所有热搜词,包括关键词、热度(搜索次数)、排序、状态、置顶、更新时间
  • TAB 分类 — 最新、热度排序、待审、已发布,每个 TAB 带数量角标
  • 批量新增 — 点击「新增搜索词」,在多行输入框中一行一个批量添加
  • 快捷编辑 — 点击关键词、热度、排序数值,直接行内编辑,回车或失焦自动保存
  • 置顶 — 点击置顶图标,置顶词始终排在排行榜最前
  • 审核 — 待审词点击「通过」正式发布,已发布词点击「撤回」回到待审
  • 删除 — 支持单个删除和批量删除
  • 清理零热度 — 一键清理所有搜索次数为 0 且未置顶的词

热搜词状态

状态说明
待审用户搜索产生的新词,或手动新增的词(当「热搜标签审核」开启时),不会显示在前台排行榜
已发布审核通过的词,会显示在前台热搜标签榜、热搜聚合页和侧边栏

排序规则

热搜词在前台的显示顺序:

  1. 先按「置顶」排序,置顶的排在前面
  2. 再按「排序」数值升序,数值越小越靠前
  3. 最后按「热度」降序,搜索次数越多越靠前

批量新增热搜词

  1. 点击「新增热搜词」按钮
  2. 在弹出的多行文本框中,一行输入一个热搜词
  3. 最多每行 50 字,超过 50 字的行会被自动跳过
  4. 已存在的热搜词会被自动跳过,不会重复添加
  5. 点击「确认添加」,系统会显示成功和跳过的条数

缓存联动

如果你开启了「热搜标签结果页」缓存,修改热搜词状态后建议清一次缓存,否则已缓存的搜索结果页不会立即更新。

缓存管理

左侧导航 → 系统管理 → 缓存管理。

缓存机制

开启缓存后,文章页和分类列表页首次访问时生成HTML静态文件,过期时间内直接返回静态文件,不经过PHP和数据库处理,大幅提升访问速度。

操作说明

  • 开启缓存 — 设置缓存过期时间(分钟)后开启
  • 关闭缓存 — 停止生成新缓存,已有缓存文件仍有效
  • 清空缓存 — 删除所有缓存文件,下次访问重新生成
缓存期间阅读量不会更新。如开启时间较长,建议在文章模板中去除阅读量显示,或设置较短的过期时间(如15-30分钟)。

管理员管理

左侧导航 → 用户管理 → 管理员管理。

功能列表

  • 管理员列表 — 显示所有管理员账号、创建时间、登录失败次数、锁定状态
  • 添加管理员 — 设置用户名和密码(至少6位)
  • 修改密码 — 当前登录账号可修改密码
  • 删除管理员 — 不能删除自己,不能删除初始管理员(id=1)
  • 登录日志 — 查看所有管理员登录记录(时间、IP)
密码使用bcrypt加密存储,安全可靠。登录失败5次自动锁定30分钟。

主题管理

左侧导航 → 主题管理,包含「主题列表」和「我的主题」两个子菜单。

主题列表

展示逗号CMS官方主题库,支持在线安装。需要先配置「逗号API密钥」才能使用。

主题截图展示

在「主题列表」中,每个主题卡片有「主题截图」按钮:

  • 查看截图:点击「主题截图」按钮,弹出全屏模态框展示主题截图
  • 多图切换:如果主题有多张截图,点击左右箭头或底部圆点切换查看
  • 键盘控制:支持键盘左右方向键切换,按 ESC 键关闭
  • 触摸支持:移动端支持左右滑动切换截图

我的主题

展示已安装的主题,支持:

  • 应用主题 — 切换当前使用的主题
  • 更新主题 — 检测并更新到最新版本
  • 移除主题 — 删除非当前使用的主题
  • 主题说明 — 查看主题文档

积分不足提醒 v7.0新增

当逗号API账户积分低于 20 时,进入「主题中心」页面会弹窗提醒:

  • 提示内容:您的积分不足20喽,部分API主题无法正常使用!加盟代理后大部分API无需积分免费使用。
  • 充值积分 — 跳转到 https://api.douhao.com/finance
  • 加盟代理 — 跳转到 https://api.douhao.com/daili
  • 我知道了 — 当天不再提示(Cookie 记录,第二天重新提示)
默认主题「橙色阳光」不可移除。更换主题后,建议清空缓存确保前端立即生效。

AI自动撰文

左侧导航 → 内容管理 → AI自动撰文,集成逗号API自动生成文章和配图。

前置条件

  • 在「网站设置」中配置「逗号API密钥」
  • 确保API账户有足够积分

核心功能

  • 文章类型 — 支持 8 种文章类型,每个分类可独立设置
  • 目标字数 — 支持自定义字数(300 ~ 50000),每个分类可独立设置
  • 按千字计费 — 文章生成价格单位从「积分/篇」改为「积分/千字」
  • 展示优化 — 后台列表显示每个分类的文章类型和目标字数

文章类型说明

系统提供 8 种文章类型,默认为「知识科普」:

类型说明
知识科普(默认)通俗易懂的知识科普,逻辑清晰、由浅入深,多用生活化例子
观点评论立场鲜明、论据充分的评论文章,先观点后论证
散文随笔语言优美、情感真挚的散文风格,注重意境与细节
应用说明条理分明、步骤清晰的应用说明,突出实用性
商业营销突出价值与卖点的营销文案,有感染力和号召力
新闻资讯客观中立、结构规范的新闻稿,倒金字塔结构
故事小说有完整情节、鲜明人物和场景描写的叙事文体
自由创作根据关键词自由发挥,AI 自动选择合适表达方式

目标字数说明

  • 范围:300 ~ 50000 字
  • 默认:1000 字
  • 超出范围:自动修正到边界值(小于300按300,大于50000按50000)
  • 计费:按千字计费,具体单价以逗号API账户价格为准

配置步骤

为每个分类单独配置AI生成参数:

  1. 进入 AI自动撰文 页面,选择要配置的分类,点击「设置」
  2. 开启「文章生成」开关
  3. 填写「关键词」— 每行一个关键词,系统随机抽取生成标题和内容
  4. 选择「文章类型」— 从 8 种类型中选择,默认「知识科普」
  5. 设置「目标字数」— 默认 1000 字,范围 300~50000
  6. (可选)填写「提示词」— 指定内容风格、语气等
  7. (可选)填写「敏感词」— 生成内容中禁止出现的词
  8. 选择「随机推荐」— 是否随机标记为推荐
  9. 选择「发布状态」— 草稿/发布
  10. (可选)开启「AI配图」— 是否自动配图(专业配图/普通配图)
  11. 点击「保存设置」

定时执行(两种方式)

方式一:内部定时任务

在AI撰文设置页面开启「开启内部定时任务」开关,系统会自动将您的站点注册到逗号总控台,由总控台定时触发执行。

  • 执行频率:支持 N分钟、N小时、每天一次
  • 无需额外配置:开启后自动生效,不需要宝塔面板或Cron
  • 适用场景:没有宝塔面板、不懂服务器配置的普通站长
  • 触发机制:总控台统一调度,精准触发每个站点的AI生成任务

方式二:外部定时执行网址

将以下URL添加到宝塔计划任务中:

https://你的域名/set/create.php?token=防刷token
  • 推荐频率:不开启配图建议35秒执行一次,开启配图建议50秒执行一次
  • 适用场景:有宝塔面板的站长,可精准控制执行频率
💡 两种方式可以同时使用,互不干扰。建议没有宝塔的站长使用「内部定时任务」,有宝塔的站长使用「外部定时执行网址」。

积分不足提醒 v7.0新增

当逗号API账户积分低于 20 时,进入「AI自动撰文」页面会弹窗提醒:

  • 提示内容:您的积分不足20喽,即将无法生成文章!
  • 充值积分 — 跳转到 https://api.douhao.com/finance
  • 我知道了 — 当天不再提示(Cookie 记录,第二天重新提示)
积分获取失败的场景(比如网络问题)不会弹窗,避免误报。只有在成功获取到真实积分值且小于 20 时才弹窗。

账户信息展示

AI 撰文页面顶部会显示账户信息:

  • 账户级别 — 逗号API账户等级
  • 账户积分 — 剩余积分余额
  • 文章生成 — 当前每千字消耗积分
  • 专业配图 — 每张专业配图消耗积分
  • 普通配图 — 每张普通配图消耗积分

TXT批量导入

左侧导航 → 内容管理 → TXT批量导入,支持批量导入TXT文件作为文章。

使用说明

  • 文件格式 — 每个 .txt 文件为一篇文章,文件名作为标题,文件全部内容作为正文
  • 换行处理 — TXT中的每个换行自动转换为一个HTML段落,首行缩进2字符
  • 文件存放 — 将TXT文件上传到 /set/txt/ 目录
  • 批量导入 — 选择分类、状态等参数后点击「开始导入」,所有文件将一次性导入并自动删除

定时导入

配置定时导入参数后,访问定时执行URL,每次随机抽取1篇TXT文件导入,分类随机选择:

https://你的域名/set/import_cron.php?token=防刷token

建议执行周期为 1分钟 或 5分钟。

统计安全

左侧导航 → 系统管理 → 统计安全,包含网站统计、IP黑白名单、UA黑白名单、安全设置四大功能模块。

网站统计

统计安全页面默认进入「网站统计」Tab,展示以下数据:

统计卡片

  • 总访客 — 所有访问记录总数
  • 今日访客 — 今日访问记录数
  • 今日独立IP — 今日去重IP数
  • 昨日访客 — 昨日访问记录数
  • 昨日独立IP — 昨日去重IP数
  • 今日蜘蛛总量 — 今日爬虫访问数
  • 黑名单IP — 已封禁的IP数量
  • 白名单IP — 白名单IP数量

蜘蛛统计

  • 百度蜘蛛 — Baiduspider
  • 搜狗蜘蛛 — Sogou spider
  • 头条蜘蛛 — ByteSpider
  • 360蜘蛛 — 360Spider
  • Bing蜘蛛 — Bingbot
  • 谷歌蜘蛛 — Googlebot
  • Yandex蜘蛛 — Yandexbot
  • 其他蜘蛛 — 其他爬虫

搜索筛选

支持多维度筛选访问记录:

  • 日期范围 — 快捷选择今天/昨天/最近7天/最近30天,或自定义日期
  • 受访端 — 前台访问 / 后台访问
  • 蜘蛛类型 — 按蜘蛛名称筛选
  • 终端类型 — Windows、macOS、Linux、Android、iOS、华为、小米等
  • 状态码 — 200、301、302、403、404、500
  • 请求方法 — GET、POST、HEAD
  • 来源 — 直接访问、百度、360、搜狗、Google、Bing等
  • IP地址 — 精确或模糊搜索
  • 受访网址 — 按URL关键词搜索

访问记录列表

每条记录显示:时间、来源、受访网址、蜘蛛、终端、访问IP、耗时、状态码/方法。每条记录支持:

  • 详情 — 查看完整访问信息(UA、Referer等)
  • 加黑名单 — 将该IP加入黑名单
  • 加白名单 — 将该IP加入白名单
  • 解封 — 从黑名单移除该IP

黑白名单

统计安全页面 → IP黑白名单 / UA黑白名单 Tab。

IP黑白名单

功能按钮

  • 加入黑名单 — 输入IP地址和原因,将该IP加入黑名单
  • 加入白名单 — 输入IP地址和原因,将该IP加入白名单
  • 查询IP — 查询指定IP当前是否在黑白名单中

黑名单列表

显示所有被封禁的IP,包含:IP地址、封禁原因、添加时间。支持「移除」操作。

白名单列表

显示所有白名单IP,包含:IP地址、添加原因、添加时间。支持「移除」操作。

白名单IP不受频率限制,也不会被自动拉黑。加入黑名单前会自动检查是否已在白名单中。

UA黑白名单

User-Agent(用户代理)黑白名单,用于拦截特定浏览器或爬虫。

UA黑名单

  • 添加规则 — 输入UA规则(支持模糊匹配)和原因
  • 状态切换 — 每个规则可独立启用/禁用
  • 移除 — 从黑名单中删除规则

UA白名单

  • 添加规则 — 输入UA规则(支持模糊匹配)和原因
  • 移除 — 从白名单中删除规则
UA规则支持模糊匹配,如输入 python 将匹配所有包含 "python" 的UA。注意:UA黑名单仅当「UA黑名单跳转开关」开启时才生效。

安全设置

统计安全页面 → 安全设置 Tab,或左侧导航 → 系统管理 → 安全设置。

基础安全设置

设置项说明默认值
频率限制(次数)单位时间内允许的最大访问次数60
频率限制(秒)统计访问次数的时长(秒)60
黑名单跳转开关开启后黑名单IP跳转到 /heiwu.php关闭
UA黑名单跳转开关开启后黑名单UA跳转到 /heiwu.php关闭
自动清理自动清理指定天数前的访问日志关闭(30天)

高级安全防御

以下防御规则均支持独立开启/关闭,并支持自定义规则:

防御类型说明默认状态
SQL注入防御检测恶意SQL语句,防止数据库注入攻击开启
XSS防御检测跨站脚本攻击,防止网页被恶意篡改开启
命令执行拦截检测并拦截危险命令执行,防止服务器被入侵开启
恶意文件上传防御检测恶意文件上传,防止上传木马开启
恶意下载防御检测恶意下载,防止敏感文件被下载开启
恶意爬虫防御检测恶意爬虫访问开启
Cookie防御过滤利用Cookie发起的渗透攻击开启

数据清理

  • 清空所有记录 — 永久删除所有访问日志
  • 按时间清理 — 清理指定天数前的访问日志
数据清理操作不可恢复,请谨慎操作。建议先备份数据库。

网站地图

左侧导航 → 系统管理 → 网站地图(或在网站设置中切换)。

功能说明

自动生成XML网站地图,帮助搜索引擎更快收录您的网站。支持分页生成(每5000条链接一个子地图)。

地图信息

  • 地图状态 — 已生成/未生成
  • 索引文件大小 — sitemap_index.xml 文件大小
  • 更新时间 — 上次生成时间
  • 子地图数量 — 生成的子地图文件数量

生成地图

点击「立即生成」按钮,系统会自动收集所有页面链接:

  • 首页
  • 文章列表页
  • 产品列表页
  • 所有文章分类页
  • 所有产品分类页
  • 所有已发布的文章详情页
  • 所有已发布的产品详情页

定时执行URL

将以下URL添加到宝塔计划任务中,系统将自动生成网站地图:

https://你的域名/set/sitemap_cron.php?token=防刷token

建议执行周期:每天一次。

搜索引擎提交

生成网站地图后,可将地图URL提交到各大搜索引擎站长平台:

网站地图URL为:https://你的域名/sitemap_index.xml。提交前请确保地图已生成且可正常访问。

前端页面

首页

前端首页包含以下模块:

  • 顶部导航栏 — 网站LOGO、分类菜单、产品入口、搜索按钮
  • 轮播图 — 来自「网站轮播图」广告位,支持多图轮播
  • 推荐文章 — 标记为推荐的文章,卡片网格展示
  • 最新文章 — 最新发布的文章,列表展示
  • 热门排行 — 热门文章和热门产品排行榜(带排名徽章)
  • 最新产品 — 最新发布的产品,卡片网格展示
  • 友情链接 — 后台添加的友情链接
  • 底部 — 版权信息、ICP备案号、统计代码

分类列表页

文章分类列表页,URL格式取决于伪静态设置:

  • /list.html — 全部文章
  • /category-1.html — 指定分类(ID模式)
  • /category-abc123.html — 指定分类(哈希模式)

顶部有可左右滑动的分类标签,点击切换分类。文章以列表形式展示,支持左图右文/左文右图两种模式。

文章详情页

展示完整文章内容,URL格式:/article-123.html(取决于伪静态设置)。包含:

  • 文章标题、发布时间、阅读量、分类
  • 正文内容(封面图自动插入第一段后)
  • 阅读全文功能(后台开启后)
  • 上一篇/下一篇导航
  • 相关文章(同分类)
  • 热门文章侧边栏

阅读全文功能

后台「网站设置」中开启「阅读全文」后:

  • 文章页默认只显示前三分之二的内容
  • 底部显示「阅读全文」按钮
  • 如果「文章页阅读全文」广告位有广告,点击按钮后先显示广告,倒计时5秒后显示全文
  • 隐藏内容上方有朦胧遮罩和向下跳动箭头,提示还有内容未显示

产品页面

产品相关页面包含:

产品列表页

/product.html — 所有产品列表,支持按分类筛选。每个产品以卡片形式展示封面图、标题、价格。

产品详情页

/product-123.html — 单个产品详情,包含:

  • 图片展示(主图+缩略图,支持左右切换)
  • 产品标题、发布时间、浏览量、分类
  • 产品简介
  • 价格和联系方式(美化卡片)
  • 同分类其他产品
  • 详情介绍(富文本内容)

缓存机制

系统支持页面静态缓存,当数据量庞大或者用户量庞大感觉页面速度有些慢后开启静态缓存,将会大幅提升访问速度。

工作原理

  1. 首次访问文章页或分类列表页时,系统生成HTML静态文件
  2. 在缓存有效期内,后续访问直接读取静态文件
  3. 过期后自动重新生成,更新缓存

缓存目录

缓存文件存储在 /cache/ 目录,文件名使用URL的MD5值。

注意事项

  • 缓存期间阅读量、评论数等动态数据不会实时更新
  • 修改文章、分类或网站设置后,建议手动清空缓存
  • 建议设置合理的过期时间(如15-60分钟)

安全防护

已实现的安全机制

防护类型实现方式
CSRF防护所有后台操作需验证CSRF Token
SQL注入防护参数化查询、输入过滤、正则检测
XSS防护HTML输出转义、正则检测
命令执行防护检测危险函数调用
文件上传防护验证真实图片文件头,防止图片马
文件下载防护限制敏感文件下载
恶意爬虫防护UA黑名单检测
密码加密bcrypt算法,兼容旧MD5自动升级
登录限制5次失败锁定30分钟
频率限制单位时间内限制访问次数
IP黑白名单支持IP级别封禁和白名单
UA黑白名单支持User-Agent级别封禁
路径遍历防护限制文件操作仅在指定目录
SSRF防护远程下载限制内网IP
Cookie防护检测Cookie篡改行为

安全建议

  • 修改后台入口 — 将 admin.php 改名为自定义文件名,如 myadmin_2024.php(详见「后台入口改名」章节)
  • 使用HTTPS — 到 ssl.douhao.com 申请免费SSL证书
  • 定期修改密码 — 建议每3个月修改一次管理员密码
  • 定期备份 — 定期备份数据库和 /set/img/ 目录
  • 及时更新 — 关注CMS版本更新,及时修复安全漏洞

阅读全文功能

后台「网站设置」中开启「阅读全文」后生效。

功能说明

  • 文章页默认只显示前三分之二的内容(按段落数计算)
  • 内容底部显示「阅读全文」按钮
  • 隐藏内容上方有渐变遮罩和向下跳动箭头,提示还有更多内容
  • 点击「阅读全文」后,如果「文章页阅读全文」广告位有广告,先显示广告弹窗
  • 广告弹窗显示倒计时(5秒),结束后自动显示全文
  • 按 ESC 键可关闭广告弹窗

广告位配置

「文章页阅读全文」广告位支持:

  • 投放页面固定为「文章详情页」,不可修改
  • 支持图片、代码、文字三种模板
  • 多个广告随机展示
如果文章总段落数少于3段,不会触发阅读全文功能,所有内容正常显示。

后台入口改名

为了提高网站安全性,防止攻击者扫描常见入口 admin.php,v6.6 支持后台入口文件名自定义,且改完后无需修改任何其他文件。

为什么需要改后台入口

  • 防止暴力破解:攻击者常用脚本扫描 /admin.php、/wp-admin.php 等常见入口,改名后大幅减少被扫描
  • 安全防护:结合登录失败锁定机制,进一步提升后台安全
  • 隐藏后台:一般访客无法通过常见路径找到后台

如何改名

  1. 通过 FTP 或宝塔文件管理,进入网站根目录
  2. 找到 admin.php 文件
  3. 重命名为任意你想要的名字,比如:
    • douhao.php
    • myadmin_2026.php
    • console.php
    • 或者更随意的名字,比如 x7k9m2.php
  4. 完成!其他文件无需任何改动

改名后的访问方式

比如你把 admin.php 改名为 douhao.php,那么:

  • 后台登录地址:https://你的域名/douhao.php
  • 旧地址 https://你的域名/admin.php 会直接返回 404(如果文件不存在)
  • 所有内部跳转、定时任务触发都会自动使用 douhao.php

注意事项

1. 改名后请勿保留旧的 admin.php:如果你既保留了 admin.php 又新建了 douhao.php,系统探测时可能会命中错误的文件。建议直接**重命名**而不是**复制**。
2. 改名后清一下缓存:如果你之前访问过后台,浏览器或 CDN 可能缓存了旧入口。改名后按 Ctrl + F5 强制刷新一下。
推荐:使用不易被猜测的文件名,比如 my_console_2026.php,既安全又好记。不要用 manage.php、backend.php 等常见名字。

自定义 404

当访客访问不存在的页面时,系统会自动跳转到 404 页面,而不是显示首页内容。

404 页面位置

404 页面文件位于:/set/404.php

你可以自行修改这个文件的样式和内容,让它更符合你的网站风格。

触发条件

以下情况会自动跳转 404:

  • 访问不存在的文章 ID:/article-999999.html
  • 访问不存在的分类 ID:/category-999999.html
  • 访问不存在的产品:/product-999999.html
  • 访问不存在的路径:/abcdefg.html
  • 访问任意未知 URL
SEO 友好:404 页面会返回正确的 HTTP 404 状态码,让搜索引擎知道该页面不存在,避免收录无意义页面。

自定义 404 页面

如果你想自定义 404 页面的外观,可以编辑 /set/404.php。默认样式包括:

  • 大号图标 + "页面未找到" 提示
  • 说明文字
  • 返回首页按钮
  • 404 Not Found 标记

前端路由配置

404 处理由前端路由的 parse_rewrite_url() 和 route_dispatch() 配合完成:

  • parse_rewrite_url():未知 URL 返回 '404' action
  • route_dispatch():检测到 '404' action 时加载 set/404.php

这两部分配置存储在 /cache/front_route_cache.php 中,可通过后台「前端路由管理」页面修改。

如果你想给 404 页面添加广告位、推荐内容等,只需编辑 /set/404.php 即可,无需改其他文件。

版本更新说明

版本更新流程

后台首页右上角会显示CMS版本更新提示,如有新版本可一键在线更新。

  1. 点击「更新 Vx.x」按钮
  2. 系统自动下载升级包并解压覆盖
  3. 自动执行 upgrade.sql 数据库升级脚本
  4. 更新完成后页面自动刷新

v6.6 更新内容

  • AI自动撰文接口升级 — 对接新的文章生成接口(api_id=67),新增文章类型、目标字数参数
  • 按千字计费 — 文章生成价格单位从「积分/篇」改为「积分/千字」
  • 8种文章类型 — 知识科普、观点评论、散文随笔、应用说明、商业营销、新闻资讯、故事小说、自由创作
  • 自定义目标字数 — 300 ~ 50000 字
  • 广告「不限页面」投放 — 广告可设置在所有页面显示,包括自定义页面
  • 后台入口改名自动化 — 改 admin.php 名字后无需改动其他文件
  • 自定义404 — 访问不存在的页面自动跳转404
  • 版本状态管理 — 总控台发布版本时可设置「发布/待审」,待审版本不会推送更新
  • 总控台自动拉黑阈值调整 — 从 10 次调整为 500 次

常见更新问题

⚠️ 更新一直卡在「更新中...」

如果点击「立即更新」后一直卡在更新中,请按以下步骤修复:

  1. 打开文件 /admin/cms_upgrade.php
  2. 找到 require_once __DIR__ . '/auth.php'; 这一行
  3. 在其下方增加一行:
require_once dirname(__DIR__) . '/functions.php';

完整示例:

require_once __DIR__ . '/auth.php';
require_once dirname(__DIR__) . '/functions.php';
修复后重新点击「立即更新」即可正常完成升级。

其他注意事项

  • 更新前请务必备份网站文件和数据库
  • 确保 /cache/ 目录有写入权限
  • 确保 PHP 的 max_execution_time 足够(建议 ≥ 120秒)
  • 更新完成后建议清空浏览器缓存

前端页面

首页

前端首页[\templates\default\index.php]包含以下模块:

  • 顶部导航栏 — 网站LOGO、分类菜单(排序前5个)、产品入口、搜索按钮
  • 轮播图 — 来自「网站轮播图」广告位,支持多图轮播
  • 推荐文章 — 标记为推荐的文章,卡片网格展示
  • 最新文章 — 最新发布的文章,列表展示
  • 热门排行 — 热门文章和热门产品排行榜(带排名徽章)
  • 热搜标签榜 — 来自热搜管理,只显示已发布的词条,卡片标题右侧有「更多」链接进入 /rs新增
  • 最新产品 — 最新发布的产品,卡片网格展示
  • 友情链接 — 后台添加的友情链接
  • 底部 — 版权信息、ICP备案号、统计代码

顶部导航分类 新增

顶部导航只显示排序前 5 个分类,其余分类通过「全部文章」页面的分类标签区查看。分类排序规则:数字越小越靠前。

分类列表页

文章分类列表页,URL格式取决于伪静态设置:

  • /list.html — 全部文章
  • /category-1.html — 指定分类(ID模式)
  • /category-abc123.html — 指定分类(哈希模式)

顶部有可左右滑动的分类标签,点击切换分类。文章以列表形式展示,支持左图右文/左文右图两种模式。

文章详情页

展示完整文章内容,URL格式:/article-123.html(取决于伪静态设置)。包含:

  • 文章标题、发布时间、阅读量、分类
  • 正文内容(封面图自动插入第一段后)
  • 阅读全文功能(后台开启后)
  • 上一篇/下一篇导航
  • 相关文章(同分类)
  • 热门文章侧边栏

阅读全文功能

后台「网站设置」中开启「阅读全文」后:

  • 文章页默认只显示前三分之二的内容
  • 底部显示「阅读全文」按钮
  • 如果「文章页阅读全文」广告位有广告,点击按钮后先显示广告,倒计时5秒后显示全文
  • 隐藏内容上方有朦胧遮罩和向下跳动箭头,提示还有内容未显示

产品页面

产品相关页面包含:

产品列表页

/product.html — 所有产品列表,支持按分类筛选。每个产品以卡片形式展示封面图、标题、价格。

产品详情页

/product-123.html — 单个产品详情,包含:

  • 图片展示(主图+缩略图,支持左右切换)
  • 产品标题、发布时间、浏览量、分类
  • 产品简介
  • 价格和联系方式(美化卡片)
  • 同分类其他产品
  • 详情介绍(富文本内容)

搜索功能 新增

点击导航栏搜索图标展开搜索框,输入关键词搜索文章。

搜索路由

搜索采用 /rs/{搜索词} 路径形式:

  • 用户在搜索框输入关键词,提交后跳转到 /rs/关键词
  • 例如搜索「逗号CMS」,跳转到 /rs/逗号CMS
  • 搜索词为空时,跳转到 /rs 聚合页
  • 分页格式:/rs/关键词?page=2

分词搜索 新增

系统支持多关键词分词搜索,用户可以用空格或多个词组合搜索:

  • 分词规则:按空格、标点符号(逗号、句号、问号、感叹号等)切分关键词
  • 停用字过滤:单字虚词(的、了、是、在、和、我、你、他等)会被自动过滤,比如「高中的家长」会切成「高中」和「家长」两个词
  • 保护词:常见的含虚词固定词(如「目的」「的确」「是否」「如何」等)会被保护,不会被误拆
  • 词数限制:最多取 5 个关键词
  • 长度限制:每个关键词至少 2 个字

结果排序 新增

搜索结果按「命中关键词数量」分梯队排序:

  1. 第一梯队:命中最多关键词的文章排最前
  2. 第二梯队:命中次多关键词的文章
  3. 第三梯队:命中更少关键词的文章
  4. 命中数量相同时,按阅读量降序排

举例:搜索「高中作文怎么写」,被切分为「高中」「作文」「怎么写」三个词,那么:

  • 标题同时包含这 3 个词的文章 → 排最前
  • 标题包含其中 2 个词的文章 → 排中间
  • 标题只包含其中 1 个词的文章 → 排最后

标题高亮 新增

搜索结果列表中,标题里匹配到的关键词会自动高亮显示(橙红色加粗 + 浅橙背景),方便用户一眼看到相关性。

敏感词过滤

搜索词会经过敏感词过滤,包含敏感词无法搜索。

搜索记录

  • 每次搜索的关键词会自动记录到系统的 search 表
  • 同时写入热搜表 search_hot,用于热搜排行榜
  • 如果「热搜标签审核」开启,新词默认进待审
  • 已存在的词只会累加搜索次数,不会重复创建

热搜标签页 新增

热搜标签聚合页,访问地址:/rs

展示全站所有已发布的热搜词,以标签云形式呈现,用户点击标签直接进入该词的搜索结果页。

两个 TAB

聚合页提供两个 TAB 切换(纯前端切换,不刷新页面):

TAB排序方式说明
热搜标签按搜索量降序默认 TAB,先显示置顶词,再按排序值,最后按搜索次数降序
最新标签按 ID 降序显示最近添加的热搜词

通过 URL 参数 /rs?tab=new 可以直接打开「最新标签」TAB。

视觉呈现

  • 字号动态:搜索次数越多,标签字号越大
  • 颜色分级:高热度词用橙红色渐变,中热度用橙黄色,普通热度用浅蓝,低热度用灰色
  • 置顶图标:置顶词标签左侧显示图钉图标
  • 搜索次数:每个标签右侧显示该词的搜索次数

数量上限

聚合页最多显示 200 条热搜词(按 TAB 对应的排序方式取前 200 条)。

SEO 配置

在「网站设置 → SEO设置 → 热搜标签聚合页」中,可以配置聚合页的 SEO 标题、关键词、描述。

缓存

聚合页本身不缓存。/rs/{词} 搜索结果页在后台开启「热搜标签结果页」缓存后,会缓存已发布热搜词的搜索结果(只缓存第 1 页)。

伪静态设置

服务器伪静态规则

正常情况下安装程序Apache/IIS自动创建伪静态文件,NGINX手动设置伪静态规则,具体伪静态规则如下:

Nginx(通用)

在网站配置文件的 server 块中添加:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?/$1 last;
    }
}

Nginx(宝塔面板)

宝塔面板 → 网站设置 → 伪静态,粘贴:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Apache(通用)

在网站根目录 .htaccess 文件中写入:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
</IfModule>

IIS(通用)

在网站根目录创建 web.config 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="douhao">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

后台设置及URL格式说明

后台 → 网站设置 → 伪静态设置 Tab。

页面类型格式示例
文章详情页【前缀】【ID/哈希/MD5】.htmlarticle-123.html
文章分类页【前缀】【ID/哈希/MD5】.htmlcategory-1.html
产品详情页【前缀】【ID/哈希/MD5】.htmlproduct-123.html
产品分类页【前缀】【ID/哈希/MD5】.htmlproduct-category-1.html

前缀自定义

每个页面类型的前缀都可以自定义,例如将 article- 改为 post-。

懒加载机制

系统采用懒加载方式处理伪静态URL:

  • 切换格式时无需批量更新数据,瞬间完成
  • 用户首次访问时自动生成对应的哈希/MD5值并保存到数据库
  • 后续访问直接使用已保存的值,无需重复计算
切换伪静态格式后,现有文章的URL会在首次访问时自动生成,无需逐个编辑文章,用户无感知。
网站页面已经被搜索引擎收录的情况下,不建议切换,因为切换伪静态格式或前缀后,搜索引擎已收录的链接可能会失效,建议提前做好301重定向或通知搜索引擎更新。

常见问题

顶部导航显示不出来?

到「网站设置 → 顶部导航」确认已添加并启用了导航;如果都确认,可能是权限问题,请你手动删除 /cache/nav_cache.php 文件,刷新前台即可。

首页文章列表不显示图片?或者最新文章没有显示在首页图文列表里面是什么情况?

部分主题文章需要有封面图或正文中含 <img> 标签才能抓取到图片。如果既没有封面图、正文也没有图片,则不显示。

后台登录提示登录超时访问受限,无法登录,要入口登录是什么情况?

这正是我们逗号CMS系统的安全限制,做了非常强大的安全识别,防止被黑客暴力或撞库入侵,所以设置了非入口文件一律禁止登录,所以你从入口登录就可以了!

拓展:入口登录是什么意思?

答:入口登录就是管理员登录页登录,默认后台入口是:admin.php  为了安全您可以改为任意文件名,以增加安全性!就从这个文件名登录就可以了,比如:你的域名 /admin.php

附防暴原理:

正确访问方式:你的域名/admin.php(或你改名后的入口文件名),系统会生成一个临时 token 并跳转到 /admin/login.php?token=xxx。

错误方式:直接访问 你的域名/admin/login.php,会被拦截并显示"访问受限"。

为什么这样做?防止黑客直接扫描 /admin/login.php 进行暴力破解。只有从入口文件跳转过来的请求才带合法 token。

例外情况:如果你已经登录过,session 有效期内直接访问 admin.php 会自动跳转到后台首页,无需重新登录。

其实我们的提示也有写:

老黄历API调用消耗积分会比较快怎么办?为什么会快?

1、老黄历与其他的API不一样,老黄历调用是只要你页面有出老黄历的结果就是调用,这个是基本常识,不像是文章生成必须要输入标题生成出文章才算调用,老黄历是有人或者有蜘蛛访问你的老黄历页面后只要调用出结果了都是调用;

2、具体详情你可以到逗号API后台,我的统计中查看详情: https://api.douhao.com/mydata.html   每个调用都有详细记录。

3、如果觉得积分消耗快的完全不需要用积分的,直接加盟初级代理,就能免费调用1万次/天。一天1万次足够新站使用了。如果你担心不够用,新站我们包你够用,超出全免。如果你一天消耗能超过1万次,你的收入肯定很高了。到时再升级中级代理就行了。

疑问:那我一天有几万IP访问,那一天消耗不是要几万API调用啊?

答:不是哦,每个日期都会有缓存,一年一共才365天,十年才3650天,所以就是100万IP蜘蛛爬取的只要是这10年内的,最多也只调用3650次。所以一般情况下头两天你会看着调用比较高,后来其实都几乎没有调用次数了,因为都直接命中缓存了。所以新站初级代理1万次我们包你够用,若有超出我们全免。

加盟代理详情: https://api.douhao.com/daili

如何将搜索标签的数量改为调用后台网站设置中的数量?

正常情况下模板都是自动调用后台的搜索标签数值,如果有模板不是的话,请在对应模板中找到 header.php 顶部文件,把:

$hot_search_list = get_hot_searches(10);

改为:

$hot_search_limit = intval($setting['hot_search_limit'] ?? 10);
if ($hot_search_limit <= 0) $hot_search_limit = 10;
$hot_search_list = get_hot_searches($hot_search_limit);


如何修改单次文章生成数量?

在两个文件:/admin/ai_write.php 和  /set/create.php 中请找到如下代码:

$sql = "SELECT c.*, cat.name as category_name 
        FROM {$prefix}ai_config c 
        LEFT JOIN {$prefix}category cat ON c.category_id = cat.id 
        WHERE $base_where 
        ORDER BY RAND() 
        LIMIT 2";

这里的 LIMIT 2 表示每次执行只随机选择2个栏目各生成一篇文章,如果只想随机一个栏目生成,改为1即可。如果想每次同时生成5个栏目就改为 5即可,注意:改为2以上比如N栏目,必须将PHP超时时间调整为 60*N 。一般在宝塔面板PHP版本--设置--配置修改(default_socket_timeout 60  Socket超时时间,60改为 60*N,超时时间也改为60*N)

如图:


联盟ID应该怎么获取填写?联盟文件在哪个目录?

V7.0版本开始网站设置新增联盟ID字段:

1、联盟ID是为了方便统一管理广告调用联盟ID所设置的字段,可以设置英文或者数字,

2、根据您所投放的第三方联盟来决定,万年历、吉日查询、起名等模板都是我们自带的联盟:伍柒联盟 union.632757.com   就是在联盟后台右上角获取ID,

3、如果是其他联盟,如百度联盟等,您自由安排广告代码将其ID换成调用后台即可。

4、其他联盟调用方法目前是在footer.php: window.__UNION_ID__ = '<?php echo htmlspecialchars($setting['union_id'] ?? '', ENT_QUOTES, 'UTF-8'); ?>';  输出具体值,然后JS调用,如果是直接写到模板里面的话,可以直接通过PHP来获取该字段的值即可。

5、如果是PHP页面直接获取的话,可以直接用:$union_id = get_setting('union_id');

用法 1:直接输出到页面文本,如:

<p>联盟ID:<?php echo htmlspecialchars($union_id, ENT_QUOTES, 'UTF-8'); ?></p>

用法 2:作为链接参数,如:

<a href="https://tg.ffceshi.com/xxx?dhid=<?php echo urlencode($union_id); ?>">前往</a>

用法 3:塞到 data 属性,供 JS 读取,如:

<button class="btn-union" data-dhid="<?php echo htmlspecialchars($union_id, ENT_QUOTES, 'UTF-8'); ?>">分析</button>

var id = this.dataset.dhid;

等等,不再举例。

文章详情页将广告代码放进去,文章就不显示了

这种一般都是放错位置造成CSS覆盖了文章正文,或者不小心删除了文章调用代码导致。

顶部导航如何删除产品链接,如何删除留言本链接?

进入对应模板(默认模板为templates/default),找到header.php,删除产品链接、留言本链接即可!

逗号CMS后台经常会员超时要重新登录怎么改?

方案 1:改 PHP 全局配置(推荐)

宝塔面板 → 软件商店 → 您的PHP版本 → 配置文件 → 搜索:

session.gc_maxlifetime = 1440

可以只是搜索:session.gc_maxlifetime  将后面的值改成 1 天(86400 秒)。也可以设 28800(8 小时)或其他你想要的值。

改完后重启 PHP-FPM。

这个方案只改服务器配置,不动你的代码,所有站点生效。


方案 2:在 config.php 里单独给逗号CMS 设置

如果你想只改逗号CMS、不影响服务器上其他站点,就在 config.php 的 session_start() 之前加:

ini_set('session.gc_maxlifetime', '86400');

完整段落改成:

if (session_status() === PHP_SESSION_NONE) {
    ini_set('session.gc_maxlifetime', '86400');
    ini_set('session.use_strict_mode', '1');
    ini_set('session.use_only_cookies', '1');
    ini_set('session.cookie_httponly', '1');
    ini_set('session.cookie_samesite', 'Lax');
    $cookie_secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
    if ($cookie_secure) {
        ini_set('session.cookie_secure', '1');
    }
    session_set_cookie_params([
        'lifetime' => 0,
        'path' => '/',
        'domain' => '',
        'secure' => $cookie_secure,
        'httponly' => true,
        'samesite' => 'Lax',
    ]);
    session_start();
}

方案 3:如果想让"关浏览器也不掉登录"

把 lifetime 从 0 改成具体秒数:

'lifetime' => 86400 * 7,

7 天。但安全性降低,不建议。而且这只解决"关浏览器后还要重新登录"的问题,不解决"24 分钟不操作被踢"的问题。