模板控制 DCSHOP 前台的展示样式,包括商品列表、商品详情、下单页面、订单查询等。
| 文件 | 说明 | 可用变量 |
|---|---|---|
header.php |
公共头部,包含 HTML head、导航等 | $site_name, $site_logo, $navs |
goods_list.php |
商品列表/首页 | $goods_list, $sorts, $page_info |
goods.php |
商品详情页 | $goods, $skus, $attach_fields |
confirm.php |
订单确认/支付页 | $order, $payments |
order_query.php |
订单查询页 | - |
order_result.php |
订单结果/卡密展示页 | $order, $order_list, $deliver_content |
// 站点信息
$site_name = Option::get('blogname'); // 站点名称
$site_url = DC_URL; // 站点URL
$site_logo = Option::get('site_logo'); // 站点Logo
// 导航菜单
$navs = $CACHE->readCache('navi'); // 导航数组
// 分类列表
$sorts = $CACHE->readCache('sort'); // 商品分类
// 当前用户
$is_login = ISLOGIN; // 是否登录
$user_id = UID; // 用户ID
// $goods_list 商品数组,每个元素包含:
[
'id' => 1, // 商品ID
'title' => '商品名称', // 商品标题
'cover' => '/uploads/xxx.jpg', // 封面图
'price' => 1000, // 价格(分)
'stock' => 100, // 库存
'sales' => 50, // 销量
'sort_id' => 1, // 分类ID
'is_on_shelf' => 'y', // 是否上架
]
// 分页信息
$page_info = [
'total' => 100, // 总数
'page' => 1, // 当前页
'limit' => 20, // 每页数量
]
// $goods 商品详情
[
'id' => 1,
'title' => '商品名称',
'cover' => '/uploads/xxx.jpg',
'content' => '商品描述HTML',
'price' => 1000, // 原价(分)
'stock' => 100,
'sales' => 50,
'is_sku' => 'y', // 是否有规格
'type' => 'goods_once', // 商品类型
]
// $skus 规格列表(如果 is_sku='y')
[
[
'sku' => '1-2', // 规格ID组合
'sku_name' => '红色/大号',
'stock' => 50,
'guest_price' => 1000, // 游客价(分)
'user_price' => 900, // 会员价(分)
],
// ...
]
// $attach_fields 附加字段
[
['name' => '邮箱', 'required' => 'y'],
['name' => '备注', 'required' => 'n'],
]
<?php
/**
* 模板配置定义
* 使用 TplOptions 类定义可配置项
*/
!defined('DC_ROOT') && exit('access denied!');
$options = TplOptions::getInstance();
// 定义配置项
$options->defineGroup('基础设置', [
'site_title' => [
'type' => 'text',
'label' => '站点标题',
'default' => 'DCSHOP 发卡系统',
'description' => '显示在浏览器标签页的标题'
],
'primary_color' => [
'type' => 'color',
'label' => '主题色',
'default' => '#667eea',
],
'show_sales' => [
'type' => 'switch',
'label' => '显示销量',
'default' => 'y',
],
]);
$options->defineGroup('首页设置', [
'banner_image' => [
'type' => 'image',
'label' => '首页横幅',
'default' => '',
],
'announcement' => [
'type' => 'textarea',
'label' => '公告内容',
'default' => '',
],
]);
// 方式1:使用 _g() 函数
$site_title = _g('site_title') ?: '默认标题';
$primary_color = _g('primary_color') ?: '#667eea';
// 方式2:使用 TplOptions
$options = TplOptions::getInstance();
$show_sales = $options->getOption('show_sales');
| 函数 | 说明 | 示例 |
|---|---|---|
Url::goods($id) |
生成商品详情URL | /goods/1.html |
Url::sort($id) |
生成分类URL | /sort/1.html |
formatMoney($fen) |
格式化金额(分转元) | 10.00 |
smartDate($timestamp) |
智能日期格式化 | 3分钟前 |
subString($str, $len) |
截取字符串 | - |
模板必须支持深色模式,通过检测 html[data-theme="dark"] 属性:
<style>
/* 浅色模式 */
body { background: #f5f5f5; color: #333; }
.card { background: #fff; }
/* 深色模式 */
html[data-theme="dark"] body { background: #1a1a1a; color: #e0e0e0; }
html[data-theme="dark"] .card { background: #1e1e1e; }
</style>