RandomEtc / ejs-locals

Express 3.x layout, partial and block template functions for the EJS template engine.
298 stars 63 forks source link

add contentFor #31

Open sr3d opened 11 years ago

sr3d commented 11 years ago

Inspired by ejs-layout, I update the code to support contentFor block with following syntax:

inside the view

<%- contentFor('leftNav') -%>
<ul>
 ...
</ul>

<%- contentFor('someOtherSection') -%>
....

inside the layout

<%- contentFor.leftNav -%>
.. // snipped ...
<%- contentFor.someOtherSection -%>
RandomEtc commented 11 years ago

Sounds great! Apologies if it takes a few days to get to testing/merging this. Thanks for the contribution!

medanat commented 11 years ago

+1

Vadorequest commented 10 years ago

This would be awesome. I'm wondering about one thing, when is stopped the code included into a contentFor in the View?

I mean, if I want to set some contentFor, in the example it looks like it pass all the code until the next contentFor. But what if I want to have some kind of end to have source code that won't be in any contentFor?

<%- contentFor('leftNav') -%>
<ul>
 ...
</ul>
// Stop it, the block for leftNav ends here.
<%- contentForEnd('leftNav') -%>

// This isn't in any contentFor block.
<div>tralala</div>

// Another contentFor block?
<%- contentFor('someOtherSection') -%>
....

Here we could end a block manually to stop and it would allow to have some code after the block that belongs to the view.

The issue with the current solution is that we need to set the contentFor blocks at the end of the file, else we wouldn't be able to "stop" a block. I hope I've been clear.