模板开发
模板语法速查
MacCMS 传统 HTML 模板的变量输出、默认值、条件、循环、嵌套与包含文件示例。
MacCMS V10 · 更新于 · MacCMS Club 编辑部 · 版本与验证范围
本页适用于传统 ThinkPHP 标签模板。先完成第一个模板,再按需求查语法;Twig 或其他独立渲染器不能直接照搬。
变量、默认值和函数
{$maccms.site_name}
{$obj.vod_sub|default='暂无副标题'}
{$obj.vod_time|date='Y-m-d',###}
{:mac_url_vod_detail($obj)}date 的 ### 表示把前面的时间字段放到该参数位置。变量必须由当前页面提供;默认值不能让一个完全不存在的对象自动出现。
条件判断
{if condition="$obj.vod_isend eq 1"}
<span>已完结</span>
{else /}
<span>更新中</span>
{/if}
{notempty name="obj.vod_sub"}<p>{$obj.vod_sub}</p>{/notempty}常用比较为 eq、neq、gt、egt、lt、elt。判断条件要对应字段类型,不把字符串状态与数值编号混用。
循环与嵌套
{maccms:type mid="1" num="4" order="asc" by="sort" id="category"}
<h2>{$category.type_name}</h2>
{maccms:vod num="3" type="'.$category['type_id'].'" order="desc" by="time" id="video"}
<a href="{:mac_url_vod_detail($video)}">{$video.vod_name}</a>
{/maccms:vod}
{/maccms:type}外层与内层使用不同 id。若两层都叫 vo,内层会覆盖你想引用的外层对象。先测试一个分类三条内容,再扩大范围。
foreach 和 volist
{volist name="list" id="row"}
<!-- 输出这份 list 中实际存在的字段 -->
{/volist}
{maccms:foreach name="obj.vod_play_list" id="source"}
<p>{$source.from}</p>
{/maccms:foreach}list 必须已由控制器赋值。模板循环只能遍历已有数据,不会因为写了变量名而自动查询数据库。
包含与赋值
{assign name="sectionTitle" value="最新内容" /}
<h2>{$sectionTitle}</h2>
{include file="public/head" /}包含文件不自动执行另一个控制器,也不能形成循环包含。修改公共片段后清理本站模板缓存,纯静态页面重新生成。
常见语法错误
缺少右括号、标签没有闭合、在 PHP 块里使用模板点语法,都会导致解析失败。把错误缩小到一个示例,再看 PHP 日志;不要通过关闭错误检查来掩盖错误。