You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll中jsonify过滤器异常导致JSON-LD关联链接格式错误

问题原因
  • 你使用的jsonify过滤器仅会对传入的单个URL字符串做JSON转义处理,本身不负责处理数组元素的逗号分隔逻辑
  • 原有代码的forloop.last判断的是当前分类下所有文章循环的末尾,而非符合「排除当前页面」条件的元素末尾,分隔符逻辑完全未生效
  • 如果当前页面属于多个分类,还会出现重复链接输出的问题
修复方案

推荐使用先收集符合条件的链接、再整体调用jsonify的方案,完全避免手动拼接JSON的格式错误:

{% assign related_links = "" | split: "" %}
{% for category in page.categories %}
  {% for post in site.categories[category] %}
    {% if post.url != page.url %}
      {% assign full_url = post.url | relative_url | prepend: site.url | replace:" ", "," %}
      {% unless related_links contains full_url %}
        {% assign related_links = related_links | push: full_url %}
      {% endunless %}
    {% endif %}
  {% endfor %}
{% endfor %}
"relatedLink": {{ related_links | jsonify }},

如果要保留手动拼接的写法,修正后的代码如下:

{% capture results %}[
{% assign valid_posts = "" | split: "" %}
{% for category in page.categories %}
  {% for post in site.categories[category] %}
    {% if post.url != page.url %}
      {% assign full_url = post.url | relative_url | prepend: site.url | replace:" ", "," %}
      {% unless valid_posts contains full_url %}
        {% assign valid_posts = valid_posts | push: full_url %}
      {% endunless %}
    {% endif %}
  {% endfor %}
{% endfor %}
{% for link in valid_posts %}
  {{ link | jsonify }}{% unless forloop.last %},{% endunless %}
{% endfor %}]{% endcapture %}
"relatedLink": {{ results }},
说明

两种方案都额外加了去重逻辑,避免多分类场景下的重复链接问题。整体调用jsonify的方案更稳妥,Liquid会自动处理所有JSON格式要求,不需要手动处理分隔符、转义等问题。

内容的提问来源于stack exchange,提问作者Denver Prophit Jr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:48:03