【问题标题】:Error message with an if statement in a Hugo templateHugo 模板中带有 if 语句的错误消息
【发布时间】:2018-07-31 16:47:00
【问题描述】:

我有一个 Hugo 模板,它检查数组中是否有 name 属性,然后应用一组 HTML,如果没有,则应用另一组。

我还需要检查数组是否包含某个字符串,然后使用不同的 HTML 集。

模板:

    <section class="resume-section p-3 p-lg-5 d-flex flex-column" id="skills">
      <div class="my-auto" id="skills-content">
        <h2 class="mb-5">Skills</h2>
        {{ range $.Site.Data.skills }}
            <div class="subheading mb-3 skills-heading">{{ .grouping }}</div>
                <ul>
                {{ range .skills }}
                    {{ if isset . "name" }}
                        <li class="list-inline-item">
                          <i class="devicon-{{ cond (in $.Site.Data.devicon (lower .name)) (lower .name) "devicon" }}-plain"></i>
                          <a href="{{.link}}">{{ .name }}</a>
                        </li>
                    {{ else }} {{if in . "express"}}
                      <li class="list-inline-item">
                        <i class="devicon-express-plain"></i>
                        {{ . }}
                      </li>
                      {{ else }}
                      <li class="list-inline-item">
                        <i class="devicon-{{ cond (in $.Site.Data.devicon (lower .)) (lower .) "devicon" }}-plain"></i>
                        {{ . }}
                      </li>
                    {{ end }}
                {{ end }}
                </ul>
        {{ end }}
      </div>
    </section>

JSON 文件:

[
    {
        "grouping":"Architecture",
        "skills":[ "IP Networking","DNS","Firewalls","Load Balancing","Microservices","RESTful APIs","SaaS/PaaS/IaaS"]
    },{
        "grouping":"Languages, Operating Systems & Tools",
        "skills":["Skills", "Go", "Here"]
    },
    {
        "grouping":"Platform Development & Administration",
        "skills":[ "Skills", "Redacted"]
    },
    {
      "grouping":"Containers & Cloud",
        "skills":[
            {"name":"Redacted","link":"https://example.com"},
          {"name":"AmazonWebServices","link":"https://aws.amazon.com"},
            {"name":"Etc","link":"https://example.com"},
        ]
    }
  ]

我在构建网站时遇到错误:

在“”中渲染“home”时出错:模板:index.html:4:10: 在以下位置执行“main”:错误调用部分: 模板:“partials/portfolio/skills.html”不完整或为空 模板

【问题讨论】:

    标签: hugo


    【解决方案1】:

    替换此代码:

    {{ else }} {{if in . "express"}}
      <li class="list-inline-item">
        <i class="devicon-express-plain"></i>
        {{ . }}
      </li>
      {{ else }}
      <li class="list-inline-item">
        <i class="devicon-{{ cond (in $.Site.Data.devicon (lower .)) (lower .) "devicon" }}-plain"></i>
        {{ . }}
      </li>
    {{ end }}
    

    与:

    {{ else if in . "express"}}
      <li class="list-inline-item">
        <i class="devicon-express-plain"></i>
        {{ . }}
      </li>
      {{ else }}
      <li class="list-inline-item">
        <i class="devicon-{{ cond (in $.Site.Data.devicon (lower .)) (lower .) "devicon" }}-plain"></i>
        {{ . }}
      </li>
    {{ end }}
    

    问题出在上面sn -p的第一行:

    {{ else }} {{if in . "express"}}
    

    对比:

    {{ else if in . "express"}}
    

    您可能仍然收到错误消息,因为您的代码可能比此处发布的要多。但是这个更正至少修复了 if/else 语句的错误。


    在 Hugo 中创建级联 if 语句的默认模式如下:

    {{ if ... }}
    
    {{ else if ... }}
    
    {{ end }}
    

    如果你想在另一个内部创建一个嵌套的 if 语句,这也是可能的:

    {{ if ... }}
        {{ if ... }}
    
        {{ end }}
    {{ end }}
    

    您的代码已创建:

    {{ if ... }}
    
    {{ else }} {{ if ... }}
    
        {{ else }}
    {{ end }}
    

    这里的问题是第二个 if 语句没有结束标记。可以这样解决:

    {{ if ... }}
    
    {{ else }} {{ if ... }}
    
        {{ end }}
        {{ else }}
    {{ end }}
    

    或者我们可以使用:

    {{ if ... }}
    
    {{ else if ... }}
    
        {{ else }}
    {{ end }}
    

    【讨论】:

      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多