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:"…"}}{% endcapture %}
{{ first_word }} »
{% 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 }} »{% 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ファイルにあります。段落はありません)。
これは私が最初にこのことについて考えさせたのは、実際にあなたの答えでした。あなたの方法についてのさらなる説明をありがとう。私は誰かがスプリット方法で間違っていることを説明することを望んでいる、それは問題に近づくより自然な方法であるようだ。 – bluekeys
私はあなたが実際にそれを見るためにWeb上の例を持っているとは思わない? – Toby
@トビー、うん、私は今、質問の終わりを参照してください:) – huon