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
相关产品推荐
相关产品推荐

