这个片段在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/
它能够精美地生成以下链接
在
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 }}
^显然,这不起作用。我想知道是什么。
答案 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文档说明了这一点:
如果条件和类似内容在外部不可见,则在内部定义变量。
这是一种涉及临时存储值的解决方法。 here's more on scratch
截至目前,我觉得此代码不完整。它工作但是,它显示作者基于提交。因此,多次提交将多次生成同一作者。我将此限制提请您注意,以开发创意解决方案。当我得到满意的答案时,我会更新这个答案。同时,随时建议。
here我对hugo话语的原始答案。