苹果CMSV10模板二次开发完整教程
2026-08-30 共人阅读自定义模板目录搭建
想要自己开发一套苹果CMS模板,首先要在template目录新建自定义模板文件夹theme_tpl,内部再创建html目录存放全部模板页面文件,同时配套css、js资源目录。苹果站提醒大家,做模板开发需要掌握基础HTML、CSS、JavaScript前端知识,不具备前端基础很难完成定制开发。
└─ template └─ theme_tpl ├─ css ├─ js └─ html
模板必备JS引入代码
home.js是系统自带脚本,封装大量通用功能,浏览历史、顶踩、收藏、访问统计、评论功能全部依赖它,开发模板必须引入这三段基础代码。
<script src="{$maccms.path}static/js/jquery.js"></script>
<script>var maccms={"path":"__ROOT__","mid":"{$maccms['mid']}","url":"{$maccms['site_url']}","wapurl":"{$maccms['site_wapurl']}","mob_status":"{$maccms['mob_status']}"};</script>
<script src="{$maccms.path}static/js/home.js"></script>模板标签基础使用
苹果CMS V10完全兼容ThinkPHP5模板语法,变量使用大括号{}包裹,数组可以使用点语法简化书写。列表标签成对书写,拥有开始标签和闭合标签,循环内部读取数据库字段以$vo作为变量前缀。
示例:{$maccms.site_name},视频列表标签 {maccms:vod type="all" num="10"}{/maccms:vod},循环内输出字段 {$vo.vod_name}、{$vo.vod_id}。
变量调用函数过滤
模板输出变量可以直接调用函数处理,使用竖线|分隔变量与函数。
{$data.name|md5}多参数函数,使用###占位代表当前变量位置。
{$create_time|date="y-m-d",###}变量作为函数第一个参数,不需要写占位符。
{$data.name|substr=0,3}支持连续多个函数链式处理,从左向右顺序执行。
{$name|md5|strtoupper|substr=0,3}也可以使用冒号函数写法直接调用PHP函数。
{:substr(strtoupper(md5($name)),0,3)}提示:函数支持PHP内置函数、自定义函数、静态方法。
系统内置常用处理函数
{:mac_url_img}:统一处理图片地址,兼容远程附件存储,开发模板图片输出建议全部调用该函数。
{:mac_data_count(0,'all','vod')}:获取视频总数量
{:mac_data_count(0,'today','vod')}:获取今日更新视频数量
{:mac_data_count(0,'all','art')}:获取文章总数量
{:mac_data_count(0,'today','art')}:获取今日更新文章数量
{:mac_data_count(1,'all')}:传入分类ID,读取该分类总数据
{:mac_data_count(1,'today')}:传入分类ID,读取该分类今日更新数量
{:mac_url('map/index')}:生成站内路由链接
{$obj.vod_content|mac_url_content_img}:替换内容中mac协议图片地址为http链接
{$vo.vod_content|mac_substring=100}:字符串截取100字符
{$vo.vod_content|mac_filter_html}:清除内容里面HTML标签
{$vo.actor|mac_url_create='actor','vod','search',''}:把逗号分割字符串批量生成搜索链接,演员、标签、导演字段适用
{$vo.vod_time|mac_day}:格式化输出日期
{$vo.vod_time|mac_friend_date}:友好时间,几秒前、几小时前、几天前
{$vo.vod_year|mac_default='未知'}:字段为空输出默认文字
{$user.user_login_ip|mac_long2ip}:解析IP地址
{$user.user_id|mac_get_user_portrait}:获取用户头像地址
JS交互标签(home.js封装)
依靠class类名绑定事件,不需要手写JS逻辑,直接写入HTML即可实现收藏、浏览记录、顶踩、点击统计。
收藏功能
<a href="javascript:;" class="mac_ulog" data-type="2" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}">收藏视频</a><a href="javascript:;" class="mac_ulog" data-type="2" data-mid="{$maccms.mid}" data-id="{$obj.art_id}">收藏文章</a>写入浏览记录(隐藏标签)
<span style="display:none" class="mac_ulog_set" data-type="1" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}"></span>顶踩功能
<a class="digg_link" data-id="{$obj.vod_id}" data-mid="{$maccms.mid}" data-type="up" href="javascript:;">顶<em class="digg_num">{$obj.vod_up}</em></a>
<a class="digg_link" data-id="{$obj.vod_id}" data-mid="{$maccms.mid}" data-type="down" href="javascript:;">踩<em class="digg_num">{$obj.vod_down}</em></a>访问量统计标签
<span class="mac_hits hits" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-type="hits"></span>
<span class="mac_hits hits_day" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-type="hits_day"></span>
<span class="mac_hits hits_week" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-type="hits_week"></span>
<span class="mac_hits hits_month" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-type="hits_month"></span>前台历史记录入口
<a href="javascript:;" class="mac_history">浏览历史</a>
变量默认值输出
字段为空的时候输出预设文字,使用|default="文字"。
{$obj.vod_actor|default="暂无演员信息"}模板运算符
模板支持加减乘除取模、自增自减运算。运算符模式不能搭配函数过滤语法。
| 运算符 | 示例写法 |
| + | {$a + $b} |
| - | {$a - $b} |
| * | {$a * $b} |
| / | {$a / $b} |
| % | {$a % $b} |
| 自增 | {$a++} 、{++$a} |
| 自减 | {$a--} 、{--$a} |
三元运算符
{$status?'正常':'错误'}{$varname.aa ?? '默认内容'}{$varname ?: '无数据'}模板继承block
模板继承适合公共头部底部复用,定义block区块,子模板extend继承基础模板,重写block里面的内容。{__block__}代表保留父模板原有内容。
{block name="title"}<title>网站标题</title>{/block}子模板继承示例
{extend name="base" /}
{block name="title"}<title>页面标题</title>{/block}比较标签
| 标签 | 作用 |
| eq / equal | 等于 |
| neq / notequal | 不等于 |
| gt | 大于 |
| egt | 大于等于 |
| lt | 小于 |
| elt | 小于等于 |
| heq | 恒等于 |
| nheq | 不恒等于 |
{eq name="vo.vod_id" value="100"}匹配成功{else/}不匹配{/eq}条件判断标签
switch标签
{switch name="$vo.type_id"}
{case value="1"}分类一{/case}
{case value="2"}分类二{/case}
{default /}其他分类
{/switch}if标签
{if condition="$vo.vod_id gt 100"}大于100{elseif condition="$vo.vod_id eq 50"/}等于50{else /}其他{/if}范围判断标签
in、notin 判断变量是否在逗号分隔集合;between、notbetween判断数值区间。
{in name="id" value="1,2,3"}命中{else/}未命中{/in}{between name="id" value="1,10"}区间内{else/}区间外{/between}变量存在、空值判断
present / notpresent:检测变量是否已经定义
empty / notempty:检测变量是否为空
defined / notdefined:检测常量是否定义
{empty name="vo.vod_name"}内容为空{else/}有内容{/empty}标签嵌套循环
多层循环的时候,每一层循环id、key变量名称必须不一样,防止变量覆盖数据错乱。
{maccms:type id="vo1"}
{maccms:vod type="$vo1.type_id" id="vo2"}
{$vo1.type_name}:{$vo2.vod_name}
{/maccms:vod}
{/maccms:type}模板内写PHP代码
两种方式,推荐使用{php}{/php}标签,注意php标签内部不能书写模板标签语法。
{php}echo '测试输出';{/php}模板内部自定义变量
assign标签,在模板页面直接赋值变量。
{assign name="num" value="10" /}define标签,模板内定义常量。
{define name="PAGE_SIZE" value="20" /}开发总结
苹果CMS V10模板开发基于ThinkPHP5模板引擎,核心就是熟悉各类系统标签、内置函数。开发自定义模板,先搭建目录结构,务必引入home.js必备脚本。循环嵌套开发,一定要区分id变量避免数据冲突。图片输出统一调用mac_url_img,兼容附件存储。模板调试过程中需要频繁清理缓存,修改模板后不更新缓存页面不会生效。
- 二次开发完整教程0热度
- 视频模板制作常用函数51热度
- 会员积分记录页面调用代码52热度
- 苹果cms内置ajax数据接口说明83热度
- 会员权限列表模板调用教程65热度
- 专题搜索教程84热度
- 更换模板报错解决方法106热度
- 自定义标签使用教程94热度
- 视频筛选调用教程98热度
- 专题标签参数使用教程80热度
