JekyllLiquid相对URL过滤器破坏链接

问题描述 投票:0回答:1

我试图在我的Jekyll主题的大多数链接中使用相对url,所以如果有人想让这个主题在子目录中工作,他可以这样做。我对帖子的类别列表有问题,每个类别都应该链接到存档。

在_layoutspost.html中,我有这样的代码。

{% if site.data.settings.categories.active %}
  {% include categories.html %}
{% endif %}

category.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 %}&nbsp;{% endunless %} 
    {% endfor %}
  </span>
</div>

这就是问题所在

 <a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>

不知怎的,这将返回当前帖子的网址。

<a href="/categories/#{{category | slugify}}">{{category}}</a>

这将返回正确的链接,但在网站在子目录中的情况下不工作。

为什么它返回的是帖子的url?

jekyll liquid
1个回答
1
投票

这里有多个问题。

首先,Liquid不评估嵌套的构造,因此,下面的代码。

{{ "/categories/#{{category | slugify}}" | relative_url}}

需要重写成

{% capture url %}/categories/{{ category | slugify }}{% endcapture %}
{{ url | relative_url }}

第二,没有全局 post 对象。因此 {% if post %} 总是要评价为负数,即是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.