2017-01-04 3 views
1

私はJekyllプロジェクトにcategory-archive pluginを使用しています。私は各カテゴリアーカイブページのカテゴリリストメニューを持っているので、ユーザは異なるカテゴリアーカイブ間をナビゲートすることができます。現在表示されているカテゴリアーカイブページのカテゴリリストリンクにclass = "active"を追加したいと思います。私はサイトのナビゲーションと同じようなものがありますが、page.urlとnavitem.urlを比較すると、違いはサイトナビの場合はconfig.ymlのnavitem.urlsのリストを指定し、カテゴリアーカイブの場合はカテゴリ名のリストは投稿自体に指定されたカテゴリに基づいて生成されたもので、{{category |最初の{%以内}}変数は%}演算子もしそうなら、私は「==」をチェックすることができいずれか、またはこれは私が現時点で持っているものですが、Jekyllの現在選択されているカテゴリアーカイブページにアクティブなクラスを追加します

<ul class="product-categories"> 
{% for category in site.categories %} 
    {% if page.url == {{ category | first }} %} 
    {% assign class = "active" %} 
    {% else %} 
    {% assign class = "" %} 
    {% endif %} 
<li> 
    <a href="/{{ category | first }}/" class="{{ class }}">{{ category | first }}</a> 
</li> 
{% endfor %} 
を動作していないよう

「が含まれています」

=助けてください)

答えて

0

クラス液体変数を使用すると、範囲外のそれを使用する際に空であるforループ内で、また、それはパスが含まれているため、代わりに==の「含まれている」でなければなりませんカテゴリには存在しないより多くの文字。

<ul class="product-categories"> 
{% assign class = "" %} 
{% for category in site.categories %} 
{% assign cat=category|first %} 
{% if page.url contains cat %} 
{% assign class = "active" %} 
{% endif %} 
<li> 
<a href="/{{ category | first }}/" class="{{ class }}">{{ category | first }}</a> 
</li> 
{% endfor %} 
+0

これは私が恐れる問題を解決しません。 /_layouts/category_archive.htmlの "{category | first}}"が含まれている "page.url"の予期しない文字は、警告が表示されます。アクティブなクラスは現在のページリンクに追加されていません。それは、{{category |最初の}}演算子の中か、containsには文字列が必要なのでしょうか?これを文字列に変換できますか? – ntnlbd

+0

@ntnlbd私の悪い、それは 'if'文の外に出なければなりません:' {%assign cat = category | first%}そして{%if page.url cat%} .. ' – marcanuy

+1

これは成功しました! '{site.categories%のカテゴリの%} {%assign cat = category |最初%} page.urlは猫%が含まれている場合 {%} {%アサインクラスは= "アクティブ" %} {%他%} {%アサインクラス= "" %} {%ENDIF%}

  • {{ category | first }}
  • {%endfor%} ' – ntnlbd

    関連する問題