2012-03-29 5 views
0

ここまでは私の試みです。私はこれを行うための他の方法があるかもしれないことを認識します。オクトプレスのブレッドクラムを書き込んで失敗しようとしています

しかし、私のコールが失敗するのはなぜですか?

{% capture path %} 
    {{ page.url | remove: ".html" | remove_first:"/" }} 
{% endcapture %} 
{% capture breadcrumbs %} 
    {{ path | split:'/' }} 
{% endcapture %} 
{% for crumb in breadcrumbs %} 
    {{ crumb }} » 
{% endfor %} 

これをgithubにアップロードしていますが、何も得られません。

答えて

1

splitを正しく動作させることはできませんでしたが、breadcrumbs are still possibleです。以下はその答えの私のコードから修正されています(ifステートメントで修正する必要があるセクションに注意してください。これは読み取り可能なバージョンであり、期待どおりに正確に動作しません)。ユーザーが/a/b/c.htmlである場合、それらは/a/b/(または同等/a/b/index.html)である場合

{% capture url_parts %} {{ page.url | remove: "/index.html" | replace:'/'," " }}{% endcapture %} 
{% capture num_parts %}{{ url_parts | number_of_words }}{% endcapture %} 
{% assign previous="" %} 
{% if num_parts == "0" %} 
    <Handle being at the top of the site (i.e. "site.com/") here> 
{% else %} 
{% for unused in page.content limit:num_parts %} 
    {% capture first_word %}{{ url_parts | truncatewords:1 | remove:"&hellip;"}}{% endcapture %} 
    {{ first_word }} &#187; 
    {% capture url_parts %}{{ url_parts | remove_first:first_word }}{% endcapture %} 
{% endfor %} 
{% endif %} 

これはそれだけでa » b »を印刷します、a » b » c »を印刷します。

少なくとも、Markdownファイルの場合、毎回first_wordが印刷されるたびに改行が多すぎるため、別々の段落とみなされ、出力されます(これはHTMLファイルが、その後、より多くのタグが、それが正常に動作させるために必要とされている):

これは(これが使用されるべきコードである)1本のライン上のforループ全体を置くことによって解決することができます:

{% capture url_parts %} {{ page.url | remove: "/index.html" | replace:'/'," " }}{% endcapture %} 
{% capture num_parts %}{{ url_parts | number_of_words }}{% endcapture %} 
{% assign previous="" %} 
{% if num_parts == "0" %} 
    <Handle being at the top of the site (i.e. "site.com/") here> 
{% else %} 
{% for unused in page.content limit:num_parts %}{% capture first_word %}{{ url_parts | truncatewords:1 | remove:"..."}}{% endcapture %}{{ first_word }} &#187;{% capture url_parts %}{{ url_parts | remove_first:first_word }}{% endcapture %}{% endfor %} 
{% endif %} 

(NB。page.content forループで繰り返し処理するものを与えるだけで、魔法はlimit:num_partsによって行われます。ただし、page.contentの段落の数がnum_partsより少ない場合は、すべてのパンくずリストが表示されない場合はpage.contentの代わりにbreadcrumb_list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]のようなサイト変数を_config.ymlと定義し、プレースホルダとしてsite.breadcrumb_listを使用する可能性があります。 (私の他の答えから上がった)

(正確には上記と同じコードを使用していませんが、ほんの少しの変更であり、HTMLファイルにあります。段落はありません)。

+0

これは私が最初にこのことについて考えさせたのは、実際にあなたの答えでした。あなたの方法についてのさらなる説明をありがとう。私は誰かがスプリット方法で間違っていることを説明することを望んでいる、それは問題に近づくより自然な方法であるようだ。 – bluekeys

+0

私はあなたが実際にそれを見るためにWeb上の例を持っているとは思わない? – Toby

+0

@トビー、うん、私は今、質問の終わりを参照してください:) – huon

関連する問題