苹果CMS开发

苹果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,兼容附件存储。模板调试过程中需要频繁清理缓存,修改模板后不更新缓存页面不会生效。

标签:二次开发
最新信息
热门推荐
TAGS 详情 列表 提现 专题 sql 收藏 详情页 网址 接口 代码 制作 二开