http.markdown
markdown会根据需要将Markdown文件作为HTML页面提供。您可以指定整个自定义模板,或者只指定页面上要使用的CSS和JavaScript文件,以给它们一个自定义的外观和行为。
语法
markdown [basepath] {
ext extensions...
[css|js] file
template [name] path
templatedir defaultpath
}
- basepath 是要匹配的基本路径。如果请求URL没有以此路径为前缀,则Markdown将不会激活。默认是站点根目录。
- extensions... 以空格分隔的文件扩展名列表,将其视为Markdown(默认为.md、.标记和.mdown);这与ext指令不同,ext指令假定文件扩展名缺失。
- css 指示下一个参数是要在页面上使用的CSS文件。
- js 表示下一个参数是要包含在页面上的JavaScript文件。
- file 是要添加到页面的JS或CSS文件。
- template 对给定路径定义一个给定名称的模板。若要指定默认模板,请省略名称。Markdown文件可以通过使用其前面的名称来选择模板。
- templatedir 在列出模板时使用给定的defaultpath设置默认路径。
可以多次使用js和css参数向默认模板添加更多文件。如果你想接受默认值,你应该完全省略大括号。
扉页(文档元数据)
标记文件可以从扉页(front matter)开始,是指关于文件的特殊格式的元数据块。例如,它可以描述用于呈现文件的HTML模板,或者定义内容的标签。前面的内容可以是YAML、TOML或JSON格式。
TOML 扉页使用+++
作为开始和结束:
+++
template = "blog"
title = "Blog Homepage"
sitename = "A Caddy site"
+++
YAML 通过---
包围:
---
template: blog
title: Blog Homepage
sitename: A Caddy site
---
JSON 直接通过{
和}
标识:
{
"template": "blog",
"title": "Blog Homepage",
"sitename": "A Caddy site"
}
扉页字段"author"、"copyright"、"description"和"subject"将用于在呈现的页面上创建<meta>
标记。
Markdown模板
模板文件只是带有模板标记(成为动作)的HTML文件,可以根据所服务的文件插入动态内容。元数据中定义的变量可以从{{.Doc.variable}}
之类的模板访问。其中"ariable"是变量的名称。{{.Doc.body}}
代表Markdown文件的主体。
下面是一个简单的示例模板(虚构的):
<!DOCTYPE html>
<html>
<head>
<title>{{.Doc.title}}</title>
</head>
<body>
Welcome to {{.Doc.sitename}}!
<br><br>
{{.Doc.body}}
</body>
</html>
除了这些模板操作之外,在Markdown模板中还可以使用所有标准的Caddy模板操作。请确保清除所有呈现为HTML的内容(使用html
、js
和urlquery
函数)!
示例
在/blog路径下提供Markdown页面服务,没有特殊的格式(设定.md是Markdown后缀):
markdown /blog
和上面类似,但是自定义CSS和JS文件:
markdown /blog {
ext .md .txt
css /css/blog.css
js /js/blog.js
}
使用自定义模板:
markdown /blog {
template default.html
template blog blog.html
template about about.html
}