2

私は現在のプロジェクトのために Docpad を掘り下げ始めました。これまでのところ、コンテンツを含める 3 つの方法を発見しました。

  • コンテンツテンプレート データ変数を使用して、子レイアウト/ドキュメントをレイアウトに含めます。
  • 指定されたパスに別のファイルのコンテンツを含めるための include(relativePath) メソッドがあります
  • 最後に、ドキュメントを他のドキュメントに挿入し、docpad レンダリング エンジンから渡される方法を提供するパーシャルプラグインがあります。

content変数は、ドキュメントごとに 1 回だけ使用できます。しかし、多くの場合、コンテンツを含める必要がある静的テンプレート内に複数の場所があります。では、たとえばincludeパーシャル(インストールされている場合) を常に使用できるのに、ドキュメントごとに 1 回しか使用できないという制限がないのに、なぜcontent変数を使用する必要があるのでしょうか? コンテンツを含める方法ごとに、独自の長所、短所、およびユースケースがあると思います。では、1 つのレイアウトにコンテンツを複数回含めたいと仮定すると、どの方法が最も適切で、どのような場合に適しているのでしょうか?

4

1 に答える 1

0

OK - 私はあなたが何をしようとしているのか知っていると思います. ページには、コンテンツを配置したい場所がさまざまにある場合があります。標準的な方法は、コンテンツが必要な各場所でパーシャルを使用することです。また、パーシャル内からパーシャルを呼び出すこともできることを覚えておいてください。これは、私のブログ用のページの例です。

 <% 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>
于 2013-10-05T19:29:26.493 に答える