标签插件(Tag Plugins) | 南风

标签插件(Tag Plugins)

说在前面

标签插件是使Hexo支持特殊类型内容的一种方法。例如,我们不能在标准MarkDown中显示自定义大小的图片。Hexo和Next主题都提供了各自的标签插件。下面先介绍Hexo提供的。

Hexo提供的标签插件

引用块

在文章中插入引言,可包含作者、来源和标题。
引用:quote

1
2
3
{% blockquote [author[, source]] [link] [source_link_title] %}
content
{% endblockquote %}

样例

没有提供参数,则只输出普通的blockquote

1
2
3
{% blockquote %}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.
{% endblockquote %}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.

引用书上的例子

1
2
3
{% blockquote David Levithan, Wide Awake %}
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
{% endblockquote %}

Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.

David LevithanWide Awake

引用Twitter

1
2
3
{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}
NEW: DevDocs now comes with syntax highlighting. http://devdocs.io
{% endblockquote %}

NEW: DevDocs now comes with syntax highlighting. http://devdocs.io

引用网络上的文章

1
2
3
{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}
Every interaction is both precious and an opportunity to delight.
{% endblockquote %}

Every interaction is both precious and an opportunity to delight.

代码块

在文章中插入代码
别名:code

1
2
3
{% codeblock [title] [lang:language] [url] [link text] [additional options] %}
code snippet
{% endcodeblock %}

Specify additional options inoption:valueformat, e.gline_number:false first_line:5

Extra Options Description Default
line_number Show line number true
highlight Enable code highlighting true
first_line Specify the first line number 1
mark Line highlight specific line(s), each value separated by a comma. Specify number range using a dash
Example: mark:1,4-7,10 will mark line 1, 4 to 7 and 10.
wrap Wrap the code block in <table> true

样例

普通的代码块

1
2
3
{% codeblock %}
alert('Hello World!');
{% endcodeblock %}

1
alert('Hello World!');

指定语言

1
2
3
{% codeblock lang:objc %}
[rectangle setX: 10 y: 10 width: 20 height: 20];
{% endcodeblock %}

1
[rectangle setX: 10 y: 10 width: 20 height: 20];

附加说明

1
2
3
{% codeblock Array.map %}
array.map(callback[, thisArg])
{% endcodeblock %}

Array.map
1
array.map(callback[, thisArg])

附加说明和网址

1
2
3
4
{% codeblock _.compact http://underscorejs.org/#compact Underscore.js %}
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]
{% endcodeblock %}

_.compactUnderscore.js
1
2
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]

反引号代码块

另一种形式的代码块,不同的是它使用三个反引号来包裹。
``` [language] [title] [url] [link text] code snippet ```

Pull Quote

在文章中插入Pull quote。

1
2
3
{% pullquote [class] %}
content
{% endpullquote %}

jsFiddle

在文章中嵌入jsFiddle。

1
{% jsfiddle shorttag [tabs] [skin] [width] [height] %}

Gist

在文章中嵌入Gist。

1
{% gist gist_id [filename] %}

iframe

在文章中插入iframe。

1
{% iframe url [width] [height] %}

Image

在文章中插入指定大小的图片。

1
{% img [class names] /path/to/image [width] [height] `"title text" "alt text"' %}

在文章中插入链接,并自动给外部链接添加target="_blank"属性。

1
{% link text url [external] [title] %}

Include Code

插入source/downloads/code文件夹内的代码文件。source/downloads/code不是固定的,取决于你在配置文件中code_dir的配置。

1
{% include_code [title] [lang:language] [from:line] [to:line] path/to/file %}

样例

嵌入test.js文件全文

1
{% include_code lang:javascript test.js %}

只嵌入第3行

1
{% include_code lang:javascript from:3 to:3 test.js %}

嵌入第5行至第8行

1
{% include_code lang:javascript from:5 to:8 test.js %}

嵌入第5行至文件结束

1
{% include_code lang:javascript from:5 test.js %}

嵌入第1行至第8行

1
{% include_code lang:javascript to:8 test.js %}

Youtube

在文章中插入YOUtube视频。

1
{% youtube video_id %}

Vimeo

在文章中插入Vimeo视频。

1
{% vimeo video_id %}

引用文章

引用其他文章的链接。

1
2
{% post_path filename %}
{% post_link filename [title] [escape] %}

在使用此标签时可以忽略文章所在的路径或者文章的永久链接信息、如语言、日期。
例如,在文章中使用时,只需要一个名为how-to-bake-a-cake.md的文章文件即可。即使这个文件位于站点文件夹的source/posts/2015-02-my-family-holiday目录下、或者文章的永久链接是2018/en/how-to-bake-a-cake,都没有影响。
默认链接文字是文章的标题,你也可以自定义要显示的文本。此时不应该使用Markdown语法[]()
默认对文章的标题和自定义标题里的特殊字符进行转义。可以使用escape选项,禁止对特殊字符进行转义。
链接使用文章的标题

链接使用自定义文字

对标题的特殊字符进行转义

1
{% post_link hexo-4-released 'How to use <b> tag in title' %}

禁止对标题的特殊字符进行转义

1
{% post_link hexo-4-released '<b>bold</b> custom title' false %}

引用资源

引用文章的资源。

1
2
3
{% asset_path filename %}
{% asset_img filename [title] %}
{% asset_link filename [title] [escape] %}

Raw

如果您想在文章中插入Swig标签,可以尝试使用Raw标签,以免发生解析异常。

1
2
3
{% raw %}
content
{% endraw %}

文章摘要和截断

在文章中使用 <!-- more -->,那么 <!-- more --> 之前的文字将会被视为摘要。首页中将只出现这部分文字,同时这部分文字也会出现在正文之中。
例如:

1
2
3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<!-- more -->
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

首页中将只会出现
1
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

正文中则会出现
1
2
3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

注意,摘要可能会被Front Matter中的excerpt覆盖。


NexT主题提供的标签插件

居中引用(Centered Quote)

这个标记将在它之前和之后的两行中创建一个引用,引用的文本将居中。当使用居中引用时,如果我们有多行文本,而且每行有不同的长度,引用就不是对称的,所以建议在只有单行文本时使用。例如文章前都要做文章后的总结。

使用方法

center-quote.js

1
2
3
{% centerquote %}Something{% endcenterquote %}
<!-- Tag Alias -->
{% cq %}Something{% endcq %}

样例

1
{% cq %}Elegant in code, simple in core{% endcq %}

Elegant in code, simple in core

注释(Note)

设置

next/_config.yml
1
2
3
4
5
6
7
8
9
10
11
note:
# Note tag style values:
# - simple bs-callout old alert style. Default.
# - modern bs-callout new (v2-v3) alert style.
# - flat flat callout style with background, like on Mozilla or StackOverflow.
# - disabled disable all CSS styles import of note tag.
style: simple
icons: false
# Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
# Offset also applied to label tag variables. This option can work with disabled note tag.
light_bg_offset: 0

使用方法

note.js

1
2
3
4
5
6
7
8
{% note [class] [no-icon] %}
Any content (support inline tags too.io).
{% endnote %}

[class] : default | primary | success | info | warning | danger.
[no-icon] : Disable icon in note.

All parameters are optional.

注意事项

如果你不想看到出bug就不要把这个标签写成一行。
例如,下面是用错误的语法写出来的内容:

1
{% note danger %}note text, note text, note text{% endnote %}
或者像这样的:
1
2
3
4
{% note danger %}note text
note text
note text
{% endnote %}
需要把内容写到新的一行,像这样:
1
2
3
4
5
{% note danger %}
note text, note text, note text
note text, note text, note text
note text, note text, note text
{% endnote %}

样例

1
2
3
4
{% note %}
#### Header
(without define class style)
{% endnote %}

(without define class style)

1
2
3
4
{% note default %}
#### Default Header
Welcome to [Hexo!](https://hexo.io)
{% endnote %}

Default Header

Welcome to Hexo!

1
2
3
4
{% note primary %}
#### Primary Header
**Welcome** to [Hexo!](https://hexo.io)
{% endnote %}

Primary Header

Welcome to Hexo!

1
2
3
4
{% note info %}
#### Info Header
**Welcome** to [Hexo!](https://hexo.io)
{% endnote %}

Info Header

Welcome to Hexo!

1
2
3
4
{% note success %}
#### Success Header
**Welcome** to [Hexo!](https://hexo.io)
{% endnote %}

Success Header

Welcome to Hexo!

1
2
3
4
{% note warning %}
#### Warning Header
**Welcome** to [Hexo!](https://hexo.io)
{% endnote %}

Warning Header

Welcome to Hexo!

1
2
3
4
{% note danger %}
#### Danger Header
**Welcome** to [Hexo!](https://hexo.io)
{% endnote %}

Danger Header

Welcome to Hexo!

1
2
3
4
5
6
7
8
{% note info no-icon %}
#### No icon note
Note **without** icon: `note info no-icon`

note info, note info, note info
note info, note info, note info
note info, note info, note info
{% endnote %}

No icon note

Note without icon: note info no-icon

note info, note info, note info
note info, note info, note info
note info, note info, note info

1
2
3
4
5
6
7
8
{% note success %}
#### Codeblock in note
{% code %}
code block in note tag
code block in note tag
code block in note tag
{% endcode %}
{% endnote %}

Codeblock in note

1
2
3
code block in note tag
code block in note tag
code block in note tag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{% note default %}
#### Lists in note
* ul
* ul
* ul
* ul
* ul

1. ol
2. ol
1. ol
2. ol
3. ol
{% endnote %}

Lists in note

  • ul
  • ul
    • ul
    • ul
  • ul
  1. ol
  2. ol
    1. ol
    2. ol
  3. ol
1
2
3
4
5
6
7
8
{% note default %}
#### Table in Note
| 1 | 2 |
| - | - |
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
{% endnote %}

Table in Note

12
34
56
78