Hugo模板中带有if语句的错误消息

时间:2018-07-26 11:46:54

标签: hugo

我有一个Hugo模板,该模板检查数组中是否存在name属性,然后应用一组HTML,否则应用另一组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"},
        ]
    }
  ]

建立网站时出现错误:

  

在“”中呈现“主页”时出错:模板:index.html:4:10:   在以下位置执行“主要”:错误调用局部:   模板:“ partials / portfolio / skills.html”不完整或为空   模板

1 个答案:

答案 0 :(得分:0)

替换此代码:

{{ 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 }}

问题出在上述代码片段的第一行:

{{ 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 }}