Meta支持

什么是Meta

Meta(元数据)是对一篇文章属性的额外扩展,在文章正文开始前,进行额外的声明。
除了系统默认会对应的url(一般作为日志的自定义路径)、date、status(文章是否公开)、tags这些属性之外,你也可以按照自己的想法随意自定义Metadata,再配合自己子定义模板对post.metadata这个属性的调用,来实现各种结构化的界面输出。

一般情况下,Meta是对一篇文章的属性进行扩展,如果是一个文件夹,文件夹内的一个以index为名的Markdown文件上的metadata,比如index.md,其Meta会直接存储到文件夹的metadata字段中。

基本语法

yaml 形式

---
date: 2015-01-10 19:55
layout: 'post'
title: 'Blogging Like a Hacker'
tags:
    - "hello"
    - 'world'
status: 'public'
---

然后这里是文章的开始

如上所示,首行以---开始,内部使用yaml格式,并最终以---单独一行结束的,会最终解析为文章的元信息(描述性信息),一般Jekyll、Hexo等静态博客用得比较多。

Bitcron、FarBox 式

另外,Bitcron的Markdown解析,也支持一种更简洁的Meta声明语法,就是首行开始,每行用key: value格式进行声明的,其中key必须是英文名。

比如

date: 2015-01-10 19:55
layout: 'post'
title: 'Blogging Like a Hacker'
tags: hello, world

然后这里是正文的开始...

注意事项

  1. 两种方式只能选择一种,两者无法同时生效。
  2. key的值必须是英文,并且不能以数字开头
  3. key的文字之间不能使用运算符号,比如+-x/post-x: value这种写法是错误的,正确的是post_x: value
  4. key不区分大小写,KEYkey的效果是一样的

Metadata 的字段说明

以下key是Bitcron系统会特殊对应的属性:

title

自定义日志的标题

tag

日志的标签,使用英文状态下的 , 区隔,如果不存在 ,,则以空格为区隔自动提取。

date

日志的发布时间, 类似2016-12-19 01:22:44

url

可以用来自定义日志的URL

status

默认为public,也是默认显示在网站中的日志类型。
它的value可以是任意值,但不能超过20个字符长。

toc

这个看具体的场景,有些模板呈现的时候,会读取这个属性,true or false,针对这个设定不同,来显示或者不显示TOC(内容索引)。

app

申明当前 Markdown 文档使用什么类型的 App 进行渲染,从而当其被访问的时候,会由指定的 App 进行渲染。
目前支持两种类型: markdown, page.

text / html

如果设置为 true 的时候,则网站直接访问 Markdown 的文件路径是存在的,进行内容返回(未设置的话,默认一般会触发404以保护原始的文档)。如果 html 设定了,则不会返回原始平文本,而是渲染后的 HTML。
接受值: true/false

as_template

是否作为模板。
如果可作为模板,那么通过URL 的 GET 方式传递的参数,会替换掉 Markdown 文档最终 HTML 内容中{{ key }}的内容。比如http://yourdomain.com/post/my.md?title=hello, 会将 {{ title }} 替换为 hello
此外,如果文档中的代码块声明的语言类型为code,那么在该代码块内可以直接调用模板语法。
接受值: true/false

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与正常的标题。

注意,position仅支持正序,即1.2会排在1.3之前。

nav

一般是一个 list 形式,每个 item 是title: url的形式。
根据不同场合用户不一,多数时候,是构建当前页面的导航栏。

nav:
        - title: url
        - title2: url2
2017-06-13 14:52
Comments
Write a Comment
  • 529666596 reply

    请问position具体怎么使用? 现在在wiki里想对文章进行排序, 没搞清楚这个怎么工作的

    • ddkk3000 reply

      @529666596 我也没搞清楚,目录内的我懂,那目录外的呢,多级目录的情况

      • Hepo reply

        @ddkk3000 也是一样,目录也有自己的 position, 数字+空格+名字 的格式命名目录,或者目录内有 index.md 里面的 meta 有 position 的声明。