Jekyll/Liquid 相对 URL 过滤器中断链接
Jekyll/Liquid Relative URL filter breaks links
我正在尝试在我的 Jekyll 主题的大部分 link 中使用 relative_url,所以如果有人想让这个主题在子目录中工作,他可以做到。
我对 post 的类别列表有疑问,每个类别都应 link 存档。
在 _layouts/post.html 我有这个代码:
{% if site.data.settings.categories.active %}
{% include categories.html %}
{% endif %}
categories.html 有这个代码:
<div class="categories">
<span><p>Categories:</p>
{% if post %}
{% assign categories = post.categories %}
{% else %}
{% assign categories = page.categories %}
{% endif %}
{% for category in categories %}
<a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>
{% unless forloop.last %} {% endunless %}
{% endfor %}
</span>
</div>
这是问题所在:
<a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>
不知何故,这 returns 当前 post url。
<a href="/categories/#{{category | slugify}}">{{category}}</a>
这 returns 是正确的 link,但如果站点位于子目录中则不起作用。
为什么会 returns post url?
这里有多个问题。
首先,Liquid 不会计算嵌套结构。
因此,如下代码:
{{ "/categories/#{{category | slugify}}" | relative_url}}
需要重写为:
{% capture url %}/categories/{{ category | slugify }}{% endcapture %}
{{ url | relative_url }}
其次,没有全局post
对象。因此 {% if post %}
总是会被评估为负数。即,它是多余的。
我正在尝试在我的 Jekyll 主题的大部分 link 中使用 relative_url,所以如果有人想让这个主题在子目录中工作,他可以做到。 我对 post 的类别列表有疑问,每个类别都应 link 存档。
在 _layouts/post.html 我有这个代码:
{% if site.data.settings.categories.active %}
{% include categories.html %}
{% endif %}
categories.html 有这个代码:
<div class="categories">
<span><p>Categories:</p>
{% if post %}
{% assign categories = post.categories %}
{% else %}
{% assign categories = page.categories %}
{% endif %}
{% for category in categories %}
<a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>
{% unless forloop.last %} {% endunless %}
{% endfor %}
</span>
</div>
这是问题所在:
<a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>
不知何故,这 returns 当前 post url。
<a href="/categories/#{{category | slugify}}">{{category}}</a>
这 returns 是正确的 link,但如果站点位于子目录中则不起作用。
为什么会 returns post url?
这里有多个问题。
首先,Liquid 不会计算嵌套结构。 因此,如下代码:
{{ "/categories/#{{category | slugify}}" | relative_url}}
需要重写为:
{% capture url %}/categories/{{ category | slugify }}{% endcapture %}
{{ url | relative_url }}
其次,没有全局post
对象。因此 {% if post %}
总是会被评估为负数。即,它是多余的。