A tag allows users to quickly and easily insert snippets into their posts.
概要 hexo.extend .tag .register ( name, function (args, content ) { }, options, );
Two arguments will be passed into the tag function: args
and content
. args
contains the arguments passed into the tag plugin and content
is the wrapped content from the tag plugin.
自 Hexo 3 開始,因為新增了非同步渲染功能,而改用 Nunjucks 作為渲染引擎,其行為可能會與過去使用的 Swig 有些許差異。 The behavior may be somewhat different from that in Swig .
Unregister Tags Use unregister()
to replace existing tag plugins with custom functions.
hexo.extend .tag .unregister (name);
Example
const tagFn = (args, content ) => { content = "something" ; return content; }; hexo.extend .tag .unregister ("youtube" ); hexo.extend .tag .register ("youtube" , tagFn);
選項 ends Use end tags. This option is false
by default.
async Enable async mode. This option is false
by default.
範例 Without End Tags 插入 Youtube 影片。
hexo.extend .tag .register ("youtube" , function (args ) { var id = args[0 ]; return ( '<div class="video-container"><iframe width="560" height="315" src="http://www.youtube.com/embed/' + id + '" frameborder="0" allowfullscreen></iframe></div>' ); });
With End Tags 插入 pull quote。
hexo.extend .tag .register ( "pullquote" , function (args, content ) { var className = args.join (" " ); return ( '<blockquote class="pullquote' + className + '">' + content + "</blockquote>" ); }, { ends : true }, );
非同步渲染 插入檔案。
var fs = require ("hexo-fs" );var pathFn = require ("path" );hexo.extend .tag .register ( "include_code" , function (args ) { var filename = args[0 ]; var path = pathFn.join (hexo.source_dir , filename); return fs.readFile (path).then (function (content ) { return "<pre><code>" + content + "</code></pre>" ; }); }, { async : true }, );
Front-matter and user configuration Any of the following options is valid:
hexo.extend .tag .register ('foo' , function (args ) { const [firstArg] = args; const { config } = hexo; const editor = config.author + firstArg; const { config : themeCfg } = hexo.theme ; if (themeCfg.fancybox ) const { title } = this ; const { _content } = this ; const { content } = this ; return 'foo' ; });
index.js hexo.extend .tag .register ("foo" , require ("./lib/foo" )(hexo));
lib/foo.js module .exports = hexo => { return function fooFn (args ) { const [firstArg] = args; const { config } = hexo; const editor = config.author + firstArg; const { config : themeCfg } = hexo.theme ; if (themeCfg.fancybox ) const { title, _content, content } = this ; return 'foo' ; }; };