2017-10-23 6 views
0

私はコンテンツ領域とサイドバー領域を持つgravでページを作成したいと思います。gravモジュラーページ - 別のコンテンツとサイドバー

modular.mdのルートテンプレートで使用したいのは、コンテンツとサイドバーモジュールの両方をループして表示するテンプレートです。

私の問題は、コンテンツとサイドバーを区別する方法です。

私のテンプレートは次のようになります。

{% block body %} 
    {% block content %} 
    <section id="info"> 
    <div class="container"> 
     <div class="row"> 
     <div class="col-sm-12"> 
      <div class="row"> 
      <div class="col-sm-8"> 
       <div id="content" class="site-content bg"> 
       <h2 class="heading">{{ page.title }}</h2> 
       {{ page.content }} 
       {% for module in page.collection() %} 
        {{ module.content }} 
       {% endfor %} 
       </div> 
      </div> 
      <div id="sidebar" class="col-sm-4 sidebar-inner"> 
       {% for module in page.collection() %} 
       {{ module.content }} 
       {% endfor %} 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
    </section> 
{% endblock %} 
{% endblock %} 

私は何を達成しようとすると、そのように一つのケースで唯一の「コンテンツ」、両方のpage.collectionsにフィルタを使用することです(taxonomy.tagがここに私の推測でした)それ以外の場合はサイドバーのみが使用されます。 私は命名規則(サイドバーモジュールは固定接頭辞を持っています)で暮らすことができましたが、わかりません。

答えて

0

大丈夫、私はハックに遭遇しました。モジュールのフォルダ名に「サイドバー」を含め、module.folder名をフィルタリングします。私はより良い解決策があると確信しています!

何ができるか
<section id="info"> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-sm-12"> 
     <div class="row"> 
      <div class="col-sm-8"> 
      {% if page.content %} 
       <div id="content" class="site-content bg"> 
       <h2 class="heading">{{ page.title }}</h2> 
       {{ page.content }} 
       </div> 
      {% endif %} 

      {% for module in page.collection() %} 
       {% if 'sidebar' not in module.folder %} 
       {{ module.content }} 
       {% endif %} 
      {% endfor %} 
      </div> 
      <div id="sidebar" class="col-sm-4 sidebar-inner"> 
      {% for module in page.collection() %} 
       {% if 'sidebar' in module.folder %} 
       {{ module.content }} 
       {% endif %} 
      {% endfor %} 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
0

は(と思う)モジュール

sidebar: true 

のfromtmatterに値を設定した後、あなたは後

{% for module in page.collection() %} 
    {% if page.header.sidebar %} 
     {{ module.content }} 
    {% endif %} 
{% endfor %} 
+0

ようなあなたのコレクションには、その値に基づいてフィルタリングすることができます https://learn.getgrav.org/content/collections#multiple-collections メインコンテンツのコレクションを作成して別のこの方法でサイドバーコンテンツのためのollection – user26432

関連する問題