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

Jekyll Liquid语法错误求助:Expected dotdot but found pipe问题

Jekyll标签页Liquid语法警告修复方案

问题原因

你遇到的语法警告,根源是代码里错误地将**变量赋值(assign)和循环(for)**语法混写在了同一行:

{% assign sorted_tags = (site.tags | sort:0) for tag in sorted_tags %}

Liquid解析器无法识别这种混乱的结构,误将其当作范围表达式(比如1..5,其中..就是提示里的"dotdot")来解析,所以抛出了"Expected dotdot but found pipe"的警告。

修复后的完整代码

---
title: Tags
permalink: /tags/
layout: page
excerpt: Sorted article by tags.
---

<div class="archive-tags">
  {% assign sorted_tags = site.tags | sort: 0 %}
  {% for tag in sorted_tags %}
    {% capture name %}{{ tag | first }}{% endcapture %}
    <a class="tag-item" href="#{{name}}">{{ name }}</a> 
  {%- endfor -%}
</div>

{% assign sorted_tags = site.tags | sort: 0 %}
{% for tag in sorted_tags %}
  {%- capture name -%}{{ tag | first }}{%- endcapture -%}
  <h2 id="{{ name }}">{{ name | upcase }}</h2>
  {%- for post in site.tags[name] -%}
    <article class="post-item" id="results-container">
      <span class="post-item-date">{{ post.date | date: "%b %d, %Y" }}</span>
      <h3 class="post-item-title">
        <a href="{{ post.url }}">{{ post.title | escape }}</a>
      </h3> 
    </article>
  {%- endfor -%}
{%- endfor -%}

核心修改说明

  • 拆分混合语法:先单独执行{% assign sorted_tags = site.tags | sort: 0 %}完成标签排序并赋值给变量,再用独立的{% for tag in sorted_tags %}启动循环
  • 移除赋值语句中多余的括号,Liquid的过滤器语法无需额外包裹括号

修改后重新构建Jekyll项目,语法警告会完全消失,标签页功能保持正常运行。

内容的提问来源于stack exchange,提问作者anterrysocial

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:48