Skip to content

Commit

Permalink
added support for layoutsDir config option
Browse files Browse the repository at this point in the history
  • Loading branch information
erin-noe-payne committed Jan 16, 2013
1 parent 9708358 commit 5fb46a3
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
6 changes: 5 additions & 1 deletion example/app.js
Expand Up @@ -7,7 +7,11 @@ var hbs = require('..'); // should be `require('express-hbs')` outside of this e
app.use(express.static(__dirname + '/public'));

// Hook in express-hbs and tell it where partials are found
app.engine('hbs', hbs.express3({partialsDir: __dirname + '/views/partials', defaultLayout: __dirname + '/views/layout/default.hbs'}));
app.engine('hbs', hbs.express3({
partialsDir: __dirname + '/views/partials',
layoutsDir: __dirname + '/views/layout',
defaultLayout: __dirname + '/views/layout/default.hbs'
}));
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');

Expand Down
4 changes: 2 additions & 2 deletions example/views/fruits/index.hbs
@@ -1,5 +1,5 @@
<!-- relative path to layout -->
{{!< ../layout/fruits}}
<!-- name of layout -->
{{!< fruits}}

{{#contentFor "pageStyles"}}
<style>
Expand Down
10 changes: 9 additions & 1 deletion lib/hbs.js
Expand Up @@ -24,6 +24,11 @@ var blocks = {};
*/
var partialsDir;

/**
* Absolute path to the layouts directory
*/
var layoutsDir;

/**
* Keep copy of options configuration.
*/
Expand Down Expand Up @@ -128,6 +133,7 @@ function cachePartials() {
* handlebars: "override handlebars",
* defaultLayout: "path to default layout",
* partialsDir: "absolute path to partials",
* layoutsDir: "absolute path to the layouts",
* extname: "extension to use"
* }
*
Expand All @@ -144,6 +150,8 @@ exports.express3 = function(options) {
partialsDir = _options.partialsDir;
if (partialsDir) cachePartials();

layoutsDir = _options.layoutsDir;

return _express3;
};

Expand Down Expand Up @@ -196,7 +204,7 @@ var _express3 = function(filename, options, cb) {
var layout = matches[1];

// cacheLayout expects absolute path
layout = path.resolve(path.join(path.dirname(filename), layout));
layout = path.resolve(path.join(layoutsDir?layoutsDir:path.dirname(filename), layout));
cacheLayout(layout, options.cache, cb);
}
else {
Expand Down

0 comments on commit 5fb46a3

Please sign in to comment.