【发布时间】:2018-11-27 03:19:53
【问题描述】:
我正在尝试在我的 jekyll 站点中使用液体构建(简单的、未加权的)标签云。当我使用这段代码时,标签云渲染得很好:
{% assign sitetags = "" %}
{% for page in site.pages %}
{% for tag in page.tags %}
{% unless sitetags contains tag %}
{% assign sitetags = sitetags | append:tag | append:', ' %}
{% endunless %}
{% endfor %}
{% endfor %}
{% assign sitetags = sitetags | split:', ' | sort %}
{% for tag in sitetags %}
{% capture tag_name %}{{ tag }}{% endcapture %}
<div>
<a href="/tag/{{ tag_name }}">{{ tag_name }}</a>
</div>
{% endfor %}
但是,有一个问题:如果一个标签的名称包含在另一个标签中,它就不会出现在标签云中。例如,“艺术”包含在“艺术史”中,因此它不会出现。为了解决这个问题,我试图修复它,但是它不起作用。这是我的代码:
{% assign sitetags = "" %}
{% for page in site.pages %}
{% for tag in page.tags %}
{% if sitetags contains tag %}
{% assign sitetags = sitetags | split:', ' %}
{% assign truetag = true %}
{% for taggo in sitetags %}
{% if taggo != tag %}
{% continue %}
{% else %}
{% assign truetag = false %}
{% break %}
{% endif %}
{% endfor %}
{% if truetag == true %}
{% assign sitetags = sitetags | append:tag | append:', ' %}
{% endif %}
{% else %}
{% assign sitetags = sitetags | append:tag | append:', ' %}
{% endif %}
{% endfor %}
{% endfor %}
{% assign sitetags = sitetags | split:', ' | sort %}
{% for tag in sitetags %}
{% capture tag_name %}{{ tag }}{% endcapture %}
<div>
<a href="/tag/{{ tag }}">{{ tag }}</a>
</div>
{% endfor %}
我尝试这种方式而不是仅使用 site.tags 的原因是因为我在其他目录中有文章/论文,我想包含这些目录。当我使用 site.tags 时,它只包括博客文章上的标签,而不包括文章上的标签。本质上,我的网站在 /_blog 下既有常规博客文章,也有在不同位置的文章,但我想将所有这些的标签聚合在同一个标签云中。
非常感谢有关我做错了什么或如何解决问题的建议。谢谢!
【问题讨论】: