Loads partial handlebars templates from files in a directory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Helps with this problem: | |
// http://stackoverflow.com/questions/8059914/express-js-hbs-module-register-partials-from-hbs-file | |
var hbs = require('hbs'); | |
var fs = require('fs'); | |
var partialsDir = __dirname + '/../views/partials'; | |
var filenames = fs.readdirSync(partialsDir); | |
filenames.forEach(function (filename) { | |
var matches = /^([^.]+).hbs$/.exec(filename); | |
if (!matches) { | |
return; | |
} | |
var name = matches[1]; | |
var template = fs.readFileSync(partialsDir + '/' + filename, 'utf8'); | |
hbs.registerPartial(name, template); | |
}); |
on line 18 you want to return hbs.registerPartial(name, template);
I belive
Highly useful. Thanks.
Brilliant! Thank you for this :)
Thanks.. It works..
If you want to read the directory recursively. Use below code
var dir = path.join(__dirname, 'views');
//console.log(partialsDir);
const walkSync = (dir, filelist = []) => {
fs.readdirSync(dir).forEach(file => {
filelist = fs.statSync(path.join(dir, file)).isDirectory()
? walkSync(path.join(dir, file), filelist)
: filelist.concat(path.join(dir, file));
});
return filelist;
}
var filelist = walkSync(dir);
if (filelist.length > 0) {
filelist.forEach(function (filename) {
var matches = /^([^.]+).hbs$/.exec(path.basename(filename));
if (!matches) {
return;
}
var name = matches[1];
console.log(name);
var template = fs.readFileSync(filename, 'utf8');
Handlebars.registerPartial(name, template);
});
}
thanks you very helpful!
thanks a lot about it!!
@tapankumar thank you very much for the code. I have a question.
let's say our template structure is like below
Index.hbs
----partials
--------partial1.hbs
--------subfolder
------------partials-under-subfolder.hbs
Now how should I include the partials-under-subfolder
within index.hbs
template file?
@tapankumar thank you very much for the code. I have a question.
let's say our template structure is like belowIndex.hbs ----partials --------partial1.hbs --------subfolder ------------partials-under-subfolder.hbs
Now how should I include the
partials-under-subfolder
withinindex.hbs
template file?
had the same problem. seems like {{> subfolder_name/partial_under_subfolder.hbs}} should work
nm.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, very useful.