在Docpad中将内容多次包含在一个布局中的哪种方式最合适?

时间:2013-09-24 18:35:53

标签: docpad

我已经开始深入研究我当前项目的Docpad,到目前为止,我已经发现了3种包含内容的方法。

  • 我们使用内容模板数据变量将子布局/文档包含到布局中。
  • 我们有 include(relativePath)方法,以在给定路径中包含另一个文件的内容。
  • 最后我们有 partials 插件,它提供了将文档插入其他文档的方法,也可以通过docpad渲染引擎传递。

我们每个文档只能使用内容变量一次。但通常我们在静态模板中有多个位置需要包含内容。那么为什么我们需要使用内容变量,如果我们总是可以使用包含,或部分(安装时),而不是这个限制只限于每个文件的单次使用?我想包含内容的每种方式都有自己的优点,缺点和用例。所以我想知道哪种方式最合适,假设我们想在一个布局中多次包含内容?

1 个答案:

答案 0 :(得分:0)

好的 - 我想我知道你要做什么。页面上可能有您想要拥有内容的各个位置。标准方法是在您想要内容的每个位置使用部分。另外,请记住,您也可以从局部内部调用部分内容。这是我的博客页面的一个示例:

 <% for doc in @getCollection('posts').toJSON(): %>
       <%- @partial('content/post.html.eco',{document:doc,showComments:false}) %>
<div class="hr clearfix">&nbsp;</div>
 <% end %> 

在我所拥有的部分中:

 <article class="panel">

    <header>
        <h3 class="title"><a href="<%= @document.url.replace(/\\/g, '/') %>"><%=@document.title%></a><time datetime="<%=@document.date.toISOString()%>" class="postdate"><%=@document.date.toDateString()%></time></h3>
    </header>

    <!-- Post Data -->
    <p class="sub"><strong class="tag_bg"></strong>
    <%for tag in @document.tags: %>
        <a class="catlink" href="/"><%=tag%></a> 
    <%end%>
    <a class="commentlink" href="#">0</a>
    </p>

    <% if (@document.image):%>
    <figure>

        <a class="islink_m" href="#" data-rel="prettyPhoto[mixed]" title="<%=@document.title%>"></a>
        <span class="image-holder-medium">
            <img class="thumb" style="display:block;margin-left:auto;margin-right:auto;" alt="" src="<%=@document.image%>"></span>

    </figure>
    <%end%>

    <p><%-@document.content%></p>

    <footer>
        <%if(@showComments):%>
    <%- @partial('content/social.html') %>
    <%- @partial('content/disqus.html.eco', {site:@site,document: @document}) %>
        <%end%>
    </footer>

</article>