到目前为止,这是我的尝试。我意识到可能有其他方法可以做到这一点。
但为什么我的分裂失败了?
{% capture path %}
{{ page.url | remove: ".html" | remove_first:"/" }}
{% endcapture %}
{% capture breadcrumbs %}
{{ path | split:'/' }}
{% endcapture %}
{% for crumb in breadcrumbs %}
{{ crumb }} »
{% endfor %}
我将这个上传到github并且什么也没得到。
答案 0 :(得分:1)
我从未能让split
正常工作,但breadcrumbs are still possible。以下内容改编自我在该答案中的代码(请注意应在if
语句中修改的部分,并且这是可读版本,并且不能按预期精确工作。)
{% 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/c.html
,则会打印a » b » c »
,如果他们位于/a/b/
(或等效/a/b/index.html
),则只会打印a » b »
。
至少,它将接近于:对于Markdown文件,每次打印first_word
之间的换行符太多,因此它们被视为单独的段落,输出将是(这不是HTML文件中的问题,但需要更多标签才能使其正常工作):
a »
b »
c »
这可以通过将整个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 %}
(注意.for循环中的page.content
只是为了给迭代提供一些东西,魔术是由limit:num_parts
完成的。但是,这意味着如果page.content
有更少的段落不是num_parts
,并非所有面包屑都会出现,如果有可能在_config.yml
中定义一个网站变量,例如breadcrumb_list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
并使用site.breadcrumb_list
作为占位符而不是{{1 (取决于我的另一个答案。)
Here is an example(它没有使用与上面完全相同的代码,但它只是一些小修改,并且它在HTML文件中,因此创建段落的新行的问题不存在)。