开发文档

系统安装步骤

  1. 将源码上传至网站根目录。
  2. 确保目录 storage/、public/uploads/ 可写。
  3. 浏览器访问 http://您的域名/install.php 进入安装向导。
  4. 填写数据库信息(MySQL 5.7+ / 8.0)。
  5. 设置管理员账号密码,点击安装。
  6. 安装完成后删除 install.php,登录后台开始使用。

Nginx 伪静态配置

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

Apache 伪静态配置

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

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

模板目录结构

V2.0 前台模板位于 template/{模板目录}/,包含 header.php、footer.php、index.php、list.php、show.php、page.php 等文件,新版模块另含 product_list.php、product_detail.php、search.php、download_list.php、contact.php。可直接修改 HTML/CSS/JS 自定义网站外观。静态资源放在 public/static/templates/{模板目录}/。模板清单文件为 config.php(V2.0 标准)或 template.json(旧格式)。

模板标签说明

  • {$变量名}:输出转义后的变量(如 {$site_name})。
  • {include file="header"}:引入公共模板片段。
  • url() / asset() / upload_url():分别生成页面 URL、静态资源 URL、上传文件 URL。
  • csrf_field():输出表单 CSRF 隐藏域。

插件钩子使用教程

V2.0 内核提供统一的钩子(Hook)机制。前台模板只需在合适位置调用渲染钩子,插件即可向页面注入内容,模板与插件彻底解耦,模板内不写死任何插件代码。

一、模板预埋钩子挂载点

在模板 header.php 的 </head> 之前调用页面头部钩子:

<?php echo \App\Core\Hook::render(\App\Core\Hook::PAGE_HEAD); ?>

在 footer.php 的 </body> 之前调用页脚 / 侧边悬浮位钩子:

<?php echo \App\Core\Hook::render(\App\Core\Hook::PAGE_FOOTER); ?>

二、可用钩子一览

  • system.init:插件全局初始化,缓存常用数据。
  • page.head:前台 <head> 内输出,用于注入样式与预加载资源。
  • page.footer:前台 </body> 前输出,用于注入 DOM 节点(如悬浮客服窗)与脚本。
  • content.render:文章 / 单页正文渲染时追加内容。
  • article.publish:文章发布 / 更新后触发,用于写入业务数据。
  • admin.head / admin.footer:后台页面头部 / 页脚输出。

三、插件注册钩子

插件在自身 config.php 清单中声明钩子与处理文件,内核加载插件时自动注册,无需手动调用:

<?php
// plugin/my_demo/config.php  插件清单
return [
    'id'      => 'my_demo',
    'name'    => '演示插件',
    'version' => '2.0.0',
    'hooks'   => [
        'page.head'   => 'hooks/page_head.php',
        'page.footer' => 'hooks/page_footer.php',
    ],
];

钩子开发示例

钩子处理文件需 return 一个可调用对象(闭包)。输出型钩子的回调返回字符串即可,内核会自动拼接输出:

<?php
// plugin/my_demo/hooks/page_footer.php
// 前台页脚 / 侧边悬浮位挂载:返回 HTML 字符串,内核统一拼接
return function () {
    // 若插件开关关闭,直接返回空串即可不输出任何内容
    return '<div id="my-demo-float">演示插件悬浮位</div>';
};

说明:每个钩子回调由内核独立捕获异常执行,单个插件回调报错会被记录并跳过,不会中断其它插件与模板的渲染,即插件故障隔离。

AI 智能客服插件部署说明

  1. 登录后台,进入「插件中心」。
  2. 点击「上传插件」,选择 dzdz_ai_cs.zip 安装包并上传。
  3. 安装完成后点击「启用」,插件自动创建专属数据表,不影响系统原有数据。
  4. 进入插件配置页,设置开关、欢迎语、客服名称、主题色、悬浮位置、知识库与 IP 限流策略。
  5. 前台刷新任意页面,右下角 / 左下角出现客服悬浮图标,点击即可打开对话窗口。
  6. 如需卸载,在插件中心点击「卸载」,插件数据表会被自动清理,系统数据不受影响。

注:插件所有回答仅基于本地预设知识库与站内已有内容,遵循「预设 FAQ > 预设官方文档 > 站内内容 > 大模型兜底」四级优先级,全程不联网抓取外部内容。

栏目与文章使用教程

  • 栏目管理:后台 → 栏目管理 → 添加栏目,设置栏目名称、别名(用于 URL)、类型(文章栏目/单页栏目)。
  • 文章发布:后台 → 文章管理 → 添加文章,选择所属栏目,填写标题、摘要、正文,上传缩略图,设置置顶/推荐。
  • 产品管理:后台 → 产品管理 → 添加产品,前台通过 /products/ 展示。
  • 单页管理:后台 → 单页管理 → 添加单页,设置 slug 和内容,前台通过 /{slug}.html 访问。
  • SEO 设置:每个栏目、文章、单页均可独立设置 SEO 标题、关键词、描述。