nanoc

One master template or more templates?


I have group of pages on site that is statically generated using nanoc; each group represents one document kind and has it's own template. Each group template is a little different. For example, main template:

<html>
<body>
    <--header-->
    <--news-->
    <--content-->
    <--sidebar-->
</body>
</html>

And then some other template maybe will not have news section, but will have the footer:

<html>
<body>
    <--header-->
    <--content-->
    <--sidebar-->
    <--footer-->
</body>
</html>

and so on. What would be better thing to do:

[A] to have one master template and then to have a flag to turn on/off certain imports

or

[B] to have many smaller templates that include common chunks of html?


Solution

  • I have a relatively large site on nanoc, and I do [B], mostly. I have a fairly complex nested hierarchy of layouts. Article pages are something like this (not these actual tags, I'm just using pseudo-xml to indicate how the layouts are nested):

    <default>
      <content>
        <article>
          <post> <!-- or image, or link, or quote, or ... -->
            <%= yield %>
          </post>
        </article>
      </content>
    </default>
    

    While a tag or archive page would be:

    <default>
      <content>
        <list>
          <%= yield %>
        </list>
      </content>
    </default>
    

    Every page on my site uses the default layout. Most pages use content, with the exception of a few pages that are "chromeless"… Everything else is some combination of these or other layouts. I think I've got about 25 layouts in total :)