2016-05-12 11 views
2

jakyllにlaravelの@section('')ブロックと同等のものがありますか?私がしようとしているのは、複数のジキールページ間で共有されているHTMLを凝縮するテンプレートを作成することです。たとえば、次のようにジキル内のサブテンプレート

それはジキルの現在の製品は、あなたがサブテンプレートを使用することができますように見えますが、それは別のファイルであることを{{content}}ブロックを制限

--- 
layout: default 
permalink: xxx 
--- 
<head> 
    <title>My title</title> 
{% include header.html %} 
... 
<div> <!-- A shared block between pages with different content --> </div> 
.... 
<div> <!-- Another shared block between pages with different content --> </div> 
{% include footer.html %} 
</html> 

PAGE_1

<html> 
    <div class="page-content"> 
     <div class="wrapper"> 
     {{ content }} 
     </div> 
    </div> 
</html> 

default_layoutまた、子テンプレートを継承します。私は最終的なhtmlページを作成するために固有のファイルをたくさん作成する必要があります(または私が考える)。

何Laravelに私のために働いたことは簡単に共有テンプレートに動的データを挿入するために複数@yield@sectionステートメントを使用していました。私はジキルがネストされたサブテンプレートの束を作成せずにこれを行うことができるとは思わないが、私は間違っていると思う。

答えて

0

解決方法1:

あなたはそのためのJekyll's include filesを使用することができます。

これはあなたの質問のレイアウトファイルで使用しているので、おそらくすでにincludeについて知っていると思います。

共有ブロックがHTMLだけの場合は、インクルードを使用するだけで十分です。

でも、(私は分かりません)共有ブロックはテキストで、これは書式設定にMarkdownを使用することを意味しますか?

デフォルトでは、Jekyllはマークダウンをインクルードファイルに表示しませんが、ちょっとしたトリックでMarkdownファイルを含めることは可能です。

私は複数のページに(書式やリンクで)テキストの同じブロックに必要なサイトを持っているので、私はこれをしなかった:

  1. _includesフォルダにマークダウンファイル内のテキストを入れて、例えば_includes/info.md

  2. そのファイル、それをキャプチャして、markdownifyリキッドフィルターを使用してマークダウンをレンダリング含める:

    {% capture tmp %}{% include info.md %}{% endcapture %} 
    {{ tmp | markdownify }} 
    

をソリューション2:

共有ブロックの場合特定のグループのページで同じですが、複数のレイアウトファイルを使用したいことがあります。 すべてページを共有こと(...ナビゲーション、サイドバー、フッター)

あなたが持っている「基本的」なレイアウト、としている:

この最良の例は、ジキルで構築されたブログになります「通常の」ページで直接使用されます。

次に、メインのものから「継承」する2番目のレイアウトがあります。投稿の日付、タグなどが追加されます。これはすべてのブログ投稿で使用されます。

Here's a simple Jekyll example for this