如何自定义模板 - lizheming/PMBlog GitHub Wiki
第一步,了解模板目录所在的位置
主题存放于tmp
文件夹下,自定义模板必须存放在主题文件夹的根目录,比如说你现在使用的主题名称为Default
,你的自定义模板为guestbook.html
,那么你的自定义模板的路径必须为./tmp/Default/guestbook.html
。
第二步,了解模板的基本语法
由于程序使用了Twig模板引擎,Twig的最大特点是采用了Django和Jinjia的模板语法,所以基本上你只要会这两个模板语法就OK了。如果不懂也没关系,可以去Twig的官方网站看看:Twig
基本语法
模板语法就是普通的HTML,但是用{{}} {%%}可以嵌入特殊的API代码。
{{ 使用变量或者运行函数 }}
{% 逻辑运算 %}
如果循环、判断,则会有对应起止,示例如下:
{% if site.title %}我有名字{% endif %} --> 如果没有 {% endif %} 会报错
{%for post in posts %}
文章的标题: {{post.title}}
{% endfor %} --> 如果没有{% endfor %} 也会报错
除了{% if %}、{% endif %}、{% for %}、{% endfor %}这些基本逻辑运算外,这几个也是常见的:{% block %}、{% endblock %}、{% extends 'something.html' %}、{% include 'something.html' %}, 下面会做具体的解释。
模板的继承
父模板(比如名为base.html),它负责的是一个基本的框架,
Title Here
{% block head %}{% endblock %}
{% block content %}{% endblock %}
子模板(比如名为detail.html),它继承父模板的框架,并最终渲染页面
{% extends "base.html" %} # 这里申明从哪个父模板继承
{% block content %} # 声明block
具体的内容
{% endblock %}
**没有在block里面的内容,最终不会呈现,比如我这一行文字。**
{% block abc %}
在base.html中,并没有声明一个abc的block,所以,这段文字也是不会被呈现。
{% endblock %}
模板的引用
比如名为t1.html的源码如下:
1234567
{% include 't2.html' %}
89
而t2.html的源码如下:
我是嵌入的文字或者代码
那么最终呈现为:
1234567
我是嵌入的文字或者代码
89
补充说明
静态资源的访问
由于主题需要使用一些静态资源,比如CSS
, JS
, 图片等,但是程序无法自动将其拷贝至site.config.html
(文章输出)目录,需要使用者自己手动将相关资源复制过去。比如说我在模板中使用了style.css这个资源,目前文件的结构是这样的:
|-- html
|-- index.html
|-- tmp
|-- Default
|-- css
|-- style.css
|-- index.html
在Default主题中,index.html页面使用了'./css/style.css'资源,那么你需要手动将css文件夹复制到html目录,即
|-- html
|-- css
|-- style.css
|-- index.html
|-- tmp
|-- Default
|-- css
|-- style.css
|-- index.html