模板开发文档
MacCMS-Laravel 模板制作指南
本文档详细介绍了 MacCMS-Laravel 的模板开发规范、可用变量、标签语法等内容。
一、模板目录结构
template/
└── your_template/
├── info.json # 模板信息
├── config.json # 模板配置
├── screenshot.png # 预览图
└── html/ # 模板文件
├── index.blade.php
├── layouts/
│ └── app.blade.php
└── vod/
├── detail.blade.php
└── play.blade.php
二、公共变量
以下变量在所有模板页面中自动可用:
2.1 网站配置 $siteConfig
| 变量 | 说明 | 用法示例 |
|---|---|---|
| $siteConfig['name'] | 网站名称 | {{ $siteConfig['name'] }} |
| $siteConfig['url'] | 网站URL | {{ $siteConfig['url'] }} |
| $siteConfig['logo'] | 网站LOGO路径 | <img src="{{ $siteConfig['logo'] }}"> |
| $siteConfig['keywords'] | SEO关键词 | 用于meta标签 |
| $siteConfig['description'] | SEO描述 | 用于meta标签 |
| $siteConfig['icp'] | ICP备案号 | 京ICP备xxxxx号 |
| $siteConfig['copyright'] | 版权信息 | © 2026 公司名 |
| $siteConfig['email'] | 联系邮箱 | admin@example.com |
| $siteConfig['qq'] | 联系QQ | 123456789 |
| $siteConfig['statcode'] | 统计代码(HTML) | {!! $siteConfig['statcode'] !!} |
2.2 导航分类 $navTypes
@foreach($navTypes as $type)
<a href="{{ route('vod.type', $type->type_id) }}">
{{ $type->type_name }}
</a>
@endforeach
2.3 模板配置 $__config__
模板自定义配置项,在模板 config.json 中定义,可通过 $__config__['key'] 访问
三、循环标签(用于.html模板)
适用于苹果CMS原生 .html 格式模板
3.1 视频列表 {maccms:vod}
{maccms:vod num="12" order="vod_time" by="desc" type="1"}
<div class="item">
<a href="{$vod.url}">
<img src="{$vod.pic}">
<span>{$vod.name}</span>
<span>{$vod.remarks}</span>
</a>
</div>
{/maccms:vod}
可用属性:
- num - 数量限制
- order - 排序字段 (vod_time, vod_hits, vod_score等)
- by - 排序方向 (desc/asc)
- type - 分类ID
可用变量: {$vod.id}, {$vod.name}, {$vod.pic}, {$vod.blurb}, {$vod.remarks}, {$vod.year}, {$vod.area}, {$vod.lang}, {$vod.score}, {$vod.hits}, {$vod.url}, {$index}
3.2 分类列表 {maccms:type}
{maccms:type pid="0" num="10"}
<a href="{$type.url}">{$type.name}</a>
{/maccms:type}
可用变量: {$type.id}, {$type.name}, {$type.en}, {$type.pic}, {$type.url}, {$index}
3.3 演员列表 {maccms:actor}
{maccms:actor num="20" order="actor_id" by="desc"}
<a href="{$actor.url}">{$actor.name}</a>
{/maccms:actor}
可用变量: {$actor.id}, {$actor.name}, {$actor.pic}, {$actor.url}, {$index}
3.4 文章列表 {maccms:article}
{maccms:article num="10" type="1" order="art_time" by="desc"}
<a href="{$article.url}">{$article.title}</a>
{/maccms:article}
四、Blade模板语法
推荐使用 .blade.php 格式,功能更强大
4.1 布局模板 layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
<title>@yield('title', $siteConfig['name'])</title>
<meta name="keywords" content="{{ $siteConfig['keywords'] }}">
<meta name="description" content="{{ $siteConfig['description'] }}">
</head>
<body>
@yield('content')
<footer>
{{ $siteConfig['copyright'] }}
<a href="https://beian.miit.gov.cn/">{{ $siteConfig['icp'] }}</a>
{!! $siteConfig['statcode'] !!}
</footer>
</body>
</html>
4.2 首页 index.blade.php
@extends('layouts.app')
@section('title', $siteConfig['name'] . ' - 首页')
@section('content')
<h2>热门视频</h2>
@foreach($hotVods as $vod)
<div class="card">
<img src="{{ $vod->vod_pic }}">
<h5>{{ $vod->vod_name }}</h5>
<span>{{ $vod->vod_remarks }}</span>
</div>
@endforeach
@endsection
4.3 详情页变量 vod/detail.blade.php
$vod 对象包含以下属性:
- vod_id - 视频ID
- vod_name - 视频名称
- vod_pic - 封面图
- vod_blurb - 简介
- vod_content - 详细介绍
- vod_play_url - 播放地址
- vod_actor - 演员
- vod_director - 导演
- vod_year - 年份
- vod_area - 地区
- vod_lang - 语言
- vod_score - 评分
- vod_hits - 点击量
- vod_remarks - 备注(如:更新至第10集)
4.4 播放页变量 vod/play.blade.php
- $vod - 视频信息对象
- $playerGroup - 播放器分组
- $playIndex - 当前播放集数索引
- $playUrl - 当前播放地址
- $player - 播放器配置
五、静态资源
<!-- 方式1: 放在 public/template/模板名/ 目录 --> <link href="/template/your_template/css/style.css" rel="stylesheet"> <script src="/template/your_template/js/main.js"></script> <!-- 方式2: 使用CDN --> <link href="https://cdn.example.com/bootstrap.min.css" rel="stylesheet">
六、模板配置文件
6.1 info.json - 模板信息
{
"name": "模板名称",
"version": "1.0.0",
"author": "作者名",
"description": "模板描述",
"homepage": "https://example.com"
}
6.2 config.json - 模板配置项
{
"primary_color": "#007bff",
"footer_text": "自定义底部文字",
"show_sidebar": true,
"ads_enabled": false
}
配置项可通过 $__config__['primary_color'] 在模板中访问
七、常用路由
| 路由名称 | 说明 | 用法 |
|---|---|---|
| vod.detail | 视频详情 | route('vod.detail', $vod->vod_id) |
| vod.play | 视频播放 | route('vod.play', [$vod->vod_id, $index]) |
| vod.type | 分类列表 | route('vod.type', $type_id) |
| search | 搜索 | route('search') |
| actor.detail | 演员详情 | route('actor.detail', $actor_id) |
| topic.detail | 专题详情 | route('topic.detail', $topic_id) |
八、注意事项
- 模板文件支持 .blade.php 和 .html 两种格式,推荐使用前者
- .html 文件使用 {maccms:xxx} 标签,.blade.php 使用 Laravel Blade 语法
- 输出HTML内容使用
{!! $var !!},输出纯文本使用{{ $var }} - 建议将公共部分(头部、底部、侧边栏)提取到 layouts/ 目录
- 修改网站配置后会自动清除模板缓存
- 开发时可执行
php artisan cache:clear手动清除缓存 - 图片懒加载建议使用 loading="lazy" 属性
九、调试技巧
<!-- 查看所有可用变量 -->
@dump($siteConfig)
@dump($navTypes)
@dump($vod)
<!-- 条件判断 -->
@if(!empty($siteConfig['logo']))
<img src="{{ $siteConfig['logo'] }}">
@endif
<!-- 循环带索引 -->
@foreach($vods as $index => $vod)
<span>{{ $index + 1 }}.</span> {{ $vod->vod_name }}
@endforeach
专题视频 0
暂无视频