http.markdown

markdown会根据需要将Markdown文件作为HTML页面提供。您可以指定整个自定义模板,或者只指定页面上要使用的CSS和JavaScript文件,以给它们一个自定义的外观和行为。

语法

  1. markdown [basepath] {
  2. ext extensions...
  3. [css|js] file
  4. template [name] path
  5. templatedir defaultpath
  6. }
  • 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 扉页使用+++作为开始和结束:

  1. +++
  2. template = "blog"
  3. title = "Blog Homepage"
  4. sitename = "A Caddy site"
  5. +++

YAML 通过---包围:

  1. ---
  2. template: blog
  3. title: Blog Homepage
  4. sitename: A Caddy site
  5. ---

JSON 直接通过{}标识:

  1. {
  2. "template": "blog",
  3. "title": "Blog Homepage",
  4. "sitename": "A Caddy site"
  5. }

扉页字段”author”、”copyright”、”description”和”subject”将用于在呈现的页面上创建<meta>标记。

Markdown模板

模板文件只是带有模板标记(成为动作)的HTML文件,可以根据所服务的文件插入动态内容。元数据中定义的变量可以从{{.Doc.variable}}之类的模板访问。其中”ariable”是变量的名称。{{.Doc.body}}代表Markdown文件的主体。

下面是一个简单的示例模板(虚构的):

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>{{.Doc.title}}</title>
  5. </head>
  6. <body>
  7. Welcome to {{.Doc.sitename}}!
  8. <br><br>
  9. {{.Doc.body}}
  10. </body>
  11. </html>

除了这些模板操作之外,在Markdown模板中还可以使用所有标准的Caddy模板操作。请确保清除所有呈现为HTML的内容(使用htmljsurlquery函数)!

示例

在/blog路径下提供Markdown页面服务,没有特殊的格式(设定.md是Markdown后缀):

  1. markdown /blog

和上面类似,但是自定义CSS和JS文件:

  1. markdown /blog {
  2. ext .md .txt
  3. css /css/blog.css
  4. js /js/blog.js
  5. }

使用自定义模板:

  1. markdown /blog {
  2. template default.html
  3. template blog blog.html
  4. template about about.html
  5. }