Post
Post本质上是一个dict对象,因为主要的都是属性,没有特别的函数可供调用。它的最基础属性,默认从 BaseFile 中继承。
基本属性
属性名 | 说明 |
---|---|
title | 文档的名称 |
url | 文章的URL地址,默认类似`/post/xxxx`,如果网站设置中设定无前缀,则会是`/xxxx`的形式 |
url_path | 接近url,但是没有前缀,比如 `post.url` 为 `/post/xxxx` 的时候,对应的 url_path 为 `xxxx` |
status | 当前文章的状态,默认为`public`,可以自定义,由用户书写当前文章的Metadata中的`status`这个key决定 |
toc | 当前文章的TOC内容(各层级标题的索引),HTML结构的源码,数据格式为`字符串` |
tags | 等同`post.metadata.tags`,视为文档的标签,类型为`list` |
date | 日志的发布时间,数据类型为 Date |
content | 已经(由Markdown)编译为HTML格式的内容, 数据类型为Text |
raw_content | 文章的原始内容(未编译) |
position | 用户自己声明的排序序号 |
cover | 日志的封面,如果`metadata.cover`不存在,则默认提取文章内的第一张图片作为封面;如果都不存在,则是一个空值 |
metadata | 用户对该文档声明的元数据,具体参考本页面的`Metadata` |
visits | 访问数 (PV) |
text_length | 字符长度, 但不同于 utf8 编码, 这是 unicode 编码的计数,一个中文字或者一个字母,都计数为 1 |
text_words | 字数长度, 英文的单词计数为1, 中日韩文一个字计数为1 (误差率 2% 左右) |
status 的特别说明
另外,status设置,也基于根目录规则
的优先级最高,比如site_foder/_draft
,其中_draft
这是一个根目录,同时又以_
开始,则认为这个目录下的所有日志的status都为draft
,同理类推,如果是_system
目录,则是system
这个status。
Metadata 的字段说明
调用 post.metadata.xxx 即可, 比如 post.metadata.title; 如果不在系统默认处理的字段外,比如
my_field
,也是类同, post.metadata.my_field 即可。
Metadata是通过Markdown的的Meta声明获得,具体请参考Markdown Meta支持
title
如果有定义title,则会覆盖写入至对应的{{post.title}}
字段。
如果没有定义title,则会自动取文件名作为日志的标题; 如果文章中有、且仅有一个H1的一级标题,则会以之作为title。
date
日志的发布时间,如果没有声明,我们会按照以下的规则获取文章的发表时间:
2012-12-12 Title.txt
这样的文件名,我们会取出前面符合日期规则的字符作为发表时间;- 默认取文件的最后修改时间作为发表时间。
url
可以用来自定义日志的URL
它会写入到 {{post.url_path}}
这个字段中去。
status
默认为public
,也是默认显示在网站中的日志类型。
它的value可以是任意值,但不能超过20个字符长。
toc
一篇日志如果使用多级标题(H1、H2、H3 .etc),那么'post.toc'这个属性则对应多级标题的索引,即Table of Contents。
单篇文章的toc
配置信息, 优先级高于站点上的配置。
接受值: true/false
app
申明当前 Markdown 文档使用什么类型的 App 进行渲染,从而当其被访问的时候,会由指定的 App 进行渲染。
目前支持两种类型: markdown
, page
.
homepage
如果是网站根目录下的以index
为名的 Markdown 文档,比如 index.md
,那么如果设置 homepage 为是
的话,则访问网站首页的时候,以当前渲染的 Markdown 文档为页面内容。
接受值: true/false
raw_allowed / html_allowed
如果设置为 true
的时候,则网站直接访问 Markdown 的文件路径是存在的,进行内容返回(未设置的话,默认一般会触发404以保护原始的文档)。如果 html_allowed 设定了,则不会返回原始平文本,而是渲染后的 HTML。
接受值: true/false
as_template
是否作为模板。
如果可作为模板,那么通过URL 的 GET 方式传递的参数,会替换掉 Markdown 文档最终 HTML 内容中{{ key }}
的内容。比如http://yourdomain.com/post/my.md?title=hello
, 会将 {{ title }}
替换为 hello
。
此外,如果文档中的代码块声明的语言类型为code
,那么在该代码块内可以直接调用模板语法。
接受值: true/false
nav
一般是一个 list 形式,每个 item 是title: url
的形式。
根据不同场合用户不一,多数时候,是构建当前页面的导航栏。
nav:
- title: url
- title2: url2
position
这个字段,可以作为排序的依据,要配合d.get_data
这类的函数使用,并声明sort='position'
。
除了在metada中对position进行支持之外,文档的原文件名也会为position提供支持,比如1.2 my article.txt
或者1.3 my other tiltes
, 分别获得的position为1.2
1.3
,其中(空格符)用以分割position与正常的标题。
slot1
特殊的扩展属性,全文搜索的时候,可以指定对这个字段进行搜索。
slot2
特殊的扩展属性,全文搜索的时候,可以指定以这个字段进行排序。