做一个主题
从建一个主题目录到看见自己的页面:要哪几个模板文件、怎么边改边看、卡住时怎么查变量。
成品放在:templates/你的主题名/ | 边改边看:地址后面加 ?nc_debug=1
一、一套主题就是一个目录
在 templates/ 下新建一个目录,名字随意(字母数字下划线),比如 mytheme。
最少要有这几个文件:
| 文件 | 管哪一页 |
|---|---|
index.html | 首页 |
list.html | 栏目列表页 |
detail.html | 内容页 |
page.html | 单页 |
404.html | 找不到页面时 |
其它页面(搜索、标签、商城、会员中心…)没建的话会退回到上面这几个,站点不会报错,只是样子一样。 所以可以一个文件一个文件地补,不用一次做全。
二、让站点用上它
「站点设置」里把前台主题换成 mytheme,刷新前台即可。
更省事的做法:子主题。不做全新主题,而是放一份
theme.json,里面写上 "parent": "default" ——
之后你只放要改的那几个文件,没放的自动用父主题的。父主题升级时,你改过的那几个文件不会被冲掉。
官方那几套可选主题就是这么做的。
三、写第一段标签
<h1>{naicha:site name="title"}</h1>
{naicha:list cid="1" num="10"}
<a href="{list.url}">{list.title}</a> · {list.publish_time format="Y-m-d"}
{/naicha:list}
四、卡住时先看变量,别猜
引擎对「取不到的值」一律输出空串、不报错 —— 名字拼错、字段不存在,页面都照常 200,只是那一块空了。
所以写模板最该养成的习惯是:登录站点超管,在页面地址后面加 ?nc_debug=1。
页面右下角会浮出一个调试面板,列出两样东西:
- 本页此刻真有的变量:名字、类型、当前的值;列表类的还会列出每行能取哪些字段
- 认不出的标签:模板里写了、但引擎不认识的标签名(这类是静默忽略的,不扫就发现不了)
对不上就改名字,改完刷新,直到面板里出现你要的那个。去掉地址里的参数就关闭。
五、改完多久生效
模板编译缓存是按文件内容失效的,改完刷新即可,不用手动清缓存。 刷新了还是老样子,先确认改的是当前启用主题目录里的那个文件。
