2025-2-26-fixed
This commit is contained in:
37
themes/next/scripts/renderer.js
Normal file
37
themes/next/scripts/renderer.js
Normal file
@ -0,0 +1,37 @@
|
||||
/* global hexo */
|
||||
|
||||
'use strict';
|
||||
|
||||
const nunjucks = require('nunjucks');
|
||||
const path = require('path');
|
||||
|
||||
function njkCompile(data) {
|
||||
const templateDir = path.dirname(data.path);
|
||||
const env = nunjucks.configure(templateDir, {
|
||||
autoescape: false
|
||||
});
|
||||
env.addFilter('attr', (dictionary, key, value) => {
|
||||
dictionary[key] = value;
|
||||
return dictionary;
|
||||
});
|
||||
env.addFilter('json', dictionary => {
|
||||
return JSON.stringify(dictionary || '');
|
||||
});
|
||||
return nunjucks.compile(data.text, env, data.path);
|
||||
}
|
||||
|
||||
function njkRenderer(data, locals) {
|
||||
return njkCompile(data).render(locals);
|
||||
}
|
||||
|
||||
// Return a compiled renderer.
|
||||
njkRenderer.compile = function(data) {
|
||||
const compiledTemplate = njkCompile(data);
|
||||
// Need a closure to keep the compiled template.
|
||||
return function(locals) {
|
||||
return compiledTemplate.render(locals);
|
||||
};
|
||||
};
|
||||
|
||||
hexo.extend.renderer.register('njk', 'html', njkRenderer);
|
||||
hexo.extend.renderer.register('swig', 'html', njkRenderer);
|
||||
Reference in New Issue
Block a user