模板基础语法

墨迹语 CMS 使用自定义模板引擎,语法简洁易用。本文档介绍模板的基础语法规则。

变量输出

转义变量(推荐用于文本内容)

语法:{$变量名}

<h2>{$article.title}</h2>
<p>作者:{$article.author_name}</p>
<span>{$category.name}</span>

不转义变量(用于 HTML 内容)

语法:{!$变量名}

<div class="content">
    {!$article.content}
</div>
⚠️ 警告:仅对完全可控的内容使用不转义变量,避免 XSS 漏洞!

数组变量访问

当变量是数组时,可以通过点号(.)访问其键值。

语法:{$数组名.键名}

<div class="article">
    <h3>{$article.title}</h3>
    <time>{$article.published_at}</time>
    <p>{$article.description}</p>
    <span>{$article.views} 次阅读</span>
</div>

条件判断

简单条件

语法:{if $变量名}...{/if}

{if $article.thumb}
<div class="image">
    <img src="{$article.thumb}" alt="图片">
</div>
{/if}

带 else 分支

{if $user.avatar}
<img src="{$user.avatar}" class="avatar">
{else}
<img src="/default-avatar.png" class="avatar">
{/if}

取反条件

语法:{if !$变量名}...{/if}

{if !$articles}
<p class="empty-tip">还没有发布任何文章</p>
{/if}

比较运算符

支持 ==!=<><=>=

{if $article.status == 'published'}
<span class="status">已发布</span>
{/if}

{if $article.views > 1000}
<span class="popular">热门</span>
{/if}

循环语法

语法:{loop $数组名 $项目名}...{/loop}

{loop $articles $article}
<div class="article-item">
    <h3>{$article.title}</h3>
    <p>{$article.description}</p>
    <time>{$article.published_at}</time>
</div>
{/loop}

循环中的条件

{loop $articles $article}
<div class="article">
    <h3>{$article.title}</h3>
    
    {if $article.thumb}
    <img src="{$article.thumb}">
    {/if}
    
    {if $article.status == 'published'}
    <span class="status">已发布</span>
    {/if}
</div>
{/loop}

模板包含

语法:{include file="模板文件路径"}

{include file="common/header.html"}
{include file="common/footer.html"}

特殊变量

BASE_URL

自动注入的全局变量,表示网站的基础 URL:

<a href="{$BASE_URL}/articles">文章列表</a>
<img src="{$BASE_URL}/images/logo.png">

限制和约束

不支持的语法

变量命名规范

提示: 更多详细信息请查看 模板标签系统 文档。