返回首页

开发指南

欢迎使用 DCSHOP 应用开发文档!本文档将帮助您快速了解如何为 DCSHOP 发卡系统开发插件、支付接口和模板。

应用类型

DCSHOP 支持插件和多种模板应用开发:

类型 说明 存放目录
插件 功能扩展插件,如支付接口、美化效果、功能增强等 content/plugins/插件名/
首页模板 前台网站模板,控制商品展示、下单页面等;应用类型使用 template content/templates/模板名/
用户后台模板 用户中心/商户后台模板 content/user_templates/模板名/
底部导航模板 移动端底部导航模板 content/bottom_nav_templates/模板名/

开发环境准备

  1. 安装 PHP 7.4+ 环境(推荐 PHP 8.0+)
  2. 安装 MySQL 5.7+ 数据库
  3. 部署 DCSHOP 发卡系统
  4. 准备代码编辑器(推荐 VS Code)

快速开始

1. 创建插件目录

content/plugins/
└── my_plugin/ # 插件目录名(英文小写+下划线)
    ├── my_plugin.php # 主文件(必须与目录同名)
    └── my_plugin_setting.php # 设置页面(可选)

2. 编写插件头部声明

<?php
/*
Plugin Name: 我的插件
Version: 1.0.0
Plugin URL: https://your-website.com
Description: 这是一个示例插件
Author: 作者名
Author URL: https://your-website.com
Ui: Layui
*/

defined('DC_ROOT') || exit('access denied!');
重要:Ui: Layui 声明是必须的!这样插件配置页面才会以弹窗方式打开。

3. 使用钩子扩展功能

// 注册钩子
addAction('钩子名称', '回调函数名');

// 示例:在后台页脚添加内容
function myPluginFooter() {
    echo '<script>console.log("Hello from my plugin!");</script>';
}
addAction('adm_footer', 'myPluginFooter');

开发规范

禁止使用 CDN!绝对不要使用 CDN 引入 CSS/JS 资源,CDN 容易加载失败。必须将资源文件保存到本地项目中。
统一使用 Remix Icon:所有图标必须使用 Remix Icon,禁止使用 emoji 或 layui-icon。
引入方式:<link rel="stylesheet" href="./assets/remixicon/remixicon.css">
支持深色模式:所有插件输出的前端内容必须支持深色模式,使用 html[data-theme="dark"] 选择器。

数据存储

使用 Storage 类存储插件配置:

// 获取存储实例
$storage = Storage::getInstance('插件名');

// 保存配置
$storage->setValue('key', 'value');

// 读取配置
$value = $storage->getValue('key');

常用函数

函数说明
addAction($hook, $func)注册钩子回调函数
doAction($hook, ...)触发钩子
Option::get($key)获取系统配置
Input::getStrVar($key)获取 GET 字符串参数
Input::postStrVar($key)获取 POST 字符串参数
Output::ok($data)返回成功 JSON
Output::error($msg)返回错误 JSON
isMobile()判断是否移动端
getClientIP()获取客户端 IP
Database::getInstance()获取主程序数据库实例
Ret::success() / Ret::error()前台/用户接口常用 JSON 输出
PluginLicense::verify($slug)付费应用授权校验

金额与表前缀约定

  • 发卡主程序商品、SKU、订单金额多数以「分」存储,展示时通常除以 100。
  • 授权中心用户余额、应用价格、代理收益多数以「元」存储。
  • 不要硬编码 dc_lic_,所有 SQL 均应使用 DB_PREFIX
  • 主程序与授权中心是两套配置,开发时注意当前脚本加载的是哪一个 config.php

移动端与模板默认值约定

  • 新页面必须在 375px 宽度下可用,按钮、弹窗、表格、底部导航不得横向溢出。
  • 分店前台模板、用户后台模板未设置时默认回落 default,不要把空模板当作关闭态。
  • 分店底部导航未设置时默认回落 default,但允许显式 em_null_tpl 关闭。
  • 用户后台移动 APP 页应优先复用现有主题变量和默认模板资源,不要引入外部 UI 截图式固定布局。

付费应用授权守护

上架到应用商店并需要授权控制的插件,建议在主文件顶部加入授权校验:

defined('DC_ROOT') || exit('access denied!');

$__slug = 'my_plugin';
if (basename(__DIR__) !== $__slug) {
    return; // 防止改目录名绕过授权
}

require_once DC_ROOT . '/include/lib/plugin_license.php';
if (!PluginLicense::verify($__slug)) {
    return; // 未授权、过期或封禁时不加载插件逻辑
}