Golang静态站点生成器:排除「about」文章的列表语法问题
问题分析与修复
错误点1:模板语法嵌套错误
你写的条件判断{{ if ne {{ .Title }} "about" }}犯了模板语法基础错误——模板指令内部的变量不需要再用双大括号包裹。在{{ }}里调用判断函数(比如ne代表不等于)时,参数直接写变量名即可,不能额外嵌套{{ }}。
错误点2:循环结构不完整
修改代码时你删掉了{{ range .Posts }}对应的结束标签{{ end }},导致模板的循环结构未闭合,这也会触发语法解析错误。
正确的修改后代码
{{ define "body" }} {{ if .IsFiltered }} </br><h2>Topics: {{ .FilteredTag.Name }}</h2>&nbsp;&nbsp; {{ else }} </br><h2>All posts</h2> {{ end }} <div class ="list"> {{ range .Posts }} {{ if ne .Title "about" }} <a href="{{ .ID }}.html">{{ .Title }} </a>&nbsp;&nbsp;{{ .Time.Format "2006-1-2" }}<br/> {{ end }} {{ end }} </div> {{ end }}
修改后的逻辑:
- 遍历文章列表时,先判断当前文章标题是否不等于"about"
- 只有符合条件的文章才会被渲染到列表中
- 保留了
range对应的结束标签,保证循环结构完整
内容的提问来源于stack exchange,提问作者tyee
相关产品推荐
相关产品推荐

