tag ช่วยให้ผู้ใช้เสียบ snippet เข้าไปในโพสต์ของตนอย่างง่ายดายและรวดเร็ว
Synopsis 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.
Since the introduction of asynchronous rendering in Hexo 3, we are using Nunjucks for rendering. 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);
Options ends Use end tags. This option is false
by default.
async Enable async mode. ใช้แท็ก end ตัวเลือก default คือ false
Examples 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 }, );
Async Rendering เสียบไฟล์ลง
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' ; }; };