我试图在我的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 %} {% endunless %}
{% endfor %}
</span>
</div>
这就是问题所在
<a href="{{ "/categories/#{{category | slugify}}" | relative_url}}">{{category}}</a>
不知怎的,这将返回当前帖子的网址。
<a href="/categories/#{{category | slugify}}">{{category}}</a>
这将返回正确的链接,但在网站在子目录中的情况下不工作。
为什么它返回的是帖子的url?
这里有多个问题。
首先,Liquid不评估嵌套的构造,因此,下面的代码。
{{ "/categories/#{{category | slugify}}" | relative_url}}
需要重写成
{% capture url %}/categories/{{ category | slugify }}{% endcapture %}
{{ url | relative_url }}
第二,没有全局 post
对象。因此 {% if post %}
总是要评价为负数,即是多余的。