Hugo中的连接变量

时间:2017-10-16 13:24:17

标签: hugo

这个片段在Hugo上非常有效:

   {{ if and (or .IsPage .IsSection) .Site.Params.contentCommitsURL }}
                  {{ $File := .File }}
                  {{ $Site := .Site }}
                  {{with $File.Path }}
                  <a href="{{ $Site.Params.contentCommitsURL }}{{ replace $File.Dir "\\" "/" }}{{ $File.LogicalName }}" target="blank">Link to API call</a>
                  {{ end }}
                {{ end }}
  

用,

[Params]
contentCommitsURL = https://api.github.com/repos/csitauthority/CSITauthority.github.io/commits?path=HUGO/content/
     

它能够精美地生成以下链接

     

Link to API call

     

layout html文件中。

问题描述

生成URL。现在,我试图弄清楚如何在页面变量{ $Site.Params.contentCommitsURL }}{{ replace $File.Dir "\\" "/" }}{{ $File.LogicalName }}

中连接命令{{ $url }}

例如:

{{ $url := {{ $Site.Params.contentCommitsURL }}{{ replace $File.Dir "\\" "/" }}{{ $File.LogicalName }} }}

不起作用

但以下是:

{{ $url := "https://api.github.com/repos/csitauthority/CSITauthority.github.io/commits?path=HUGO/content/post/vlan-101.md"}}
  

我希望能够做到这样的事情:

{{ $url := $Site.Params.contentCommitsURL + (replace $File.Dir "\\" "/") + $File.LogicalName }}

^显然,这不起作用。我想知道是什么。

1 个答案:

答案 0 :(得分:0)

在雨果话语论坛上,有人hinted a solution和我能够提出以下内容。

{{ if and (or .IsPage .IsSection) .Site.Params.contentCommitsURL }}
      {{ $File := .File }}
      {{ $Site := .Site }}
      {{with $File.Path }}
      {{ $fileDir := replace $File.Dir "\\" "/"}}
        {{ $url := $File.LogicalName | printf "%s%s" $fileDir | printf "%s%s" $Site.Params.contentCommitsURL }}
        {{ $.Scratch.Set "url" $url }}
      {{ end }}
    {{ end }}

我希望它出现在哪里,我使用Scratch函数,如下所示:

{{ $url := $.Scratch.Get "url"}}
  {{ range getJSON $url }}
    <div style="display:inline-block; width:40px;"><a href="{{.author.html_url}}" target="_blank">
    <img src="{{.author.avatar_url}}" alt="{{.author.login}}" text="{{.author.login}}" class="inline" width="40" height="40" style="height: 40px;height: 40px; vertical-align:middle; margin: 0 auto;"></a>
  </div>
  {{ end }}

代码是不言自明的,所以我不打算用冗长的描述。相反,我想把重点放在实施上。您会注意到Scratch功能已被使用。

hugo文档说明了这一点:

  

如果条件和类似内容在外部不可见,则在内部定义变量。

     

(see this issue)

这是一种涉及临时存储值的解决方法。 here's more on scratch

限制

截至目前,我觉得此代码不完整。它工作但是,它显示作者基于提交。因此,多次提交将多次生成同一作者。我将此限制提请您注意,以开发创意解决方案。当我得到满意的答案时,我会更新这个答案。同时,随时建议。

here我对hugo话语的原始答案。