# **模板分类**
> 分类思路与老多玩发布器的基本一致,只是更精简些。
- 普通模板
> 不含变量的HTML模板,可以直接当最终页使用
- 标签模板
> 在普通模板的基础上,加入了根据标签遍历文章列表的foreach语法,可能带有列表分页代码,并在页面中加入了跟标签有关的内容。
> 此类模板,不能直接作为最终页使用,应配合具体的标签ID,才可输出具体的最终页。
- 文章模板
> 在普通模板的基础上,加入了单篇文章的多个字段数据渲染。
> 此类模板,不能直接作为最终页使用,应配合具体的文章ID,才可输出具体的最终页。
---
# **模板语法**
> 废除了velocity,采用了smarty2.5,并延用了老多玩发布器的部分括号语法。
### 括号语法
- 包含
> - {[模板=xxx]}
> - {[模板=xxx;专区=yyy]}
> - {[模板ID=ddddddddddd]}
> > 新增模板时,将自动把`{[模板]}`换成`{[模板ID]}`格式,保存到数据库,编辑器展示时,恢复为`{[模板]}`格式。
> >
> >(核心代码: Tpl::replaceIncludeGramToHuman()。这点和老多玩发布器不太一样。即便子模板改名,也不影响母模板)
- 分页
> {[分页数=25]}
>
> 用法跟老多玩发布器的一样
### 文章及标签模板常用语法
> 详见
---
# **模板生成**
> 代码位于后台 /tpl/edit 的POST处理分支
### 过程
- 检查模板名、路径格式、专区等基本信息
- 检查模板语法错误
- 检查潜在的模板递归嵌套
> 代码:Tpl::recurseTpl()
- 生成模板
> 代码:Tpl::genStatic()
- 提供立即预览支持
> 代码:/tpl/preview
- 保存模板并生成链接
> 代码:Tpl::decideFullSavepathAndLink()
---