这个片段在 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/
它能够精美地生成以下链接
在
html 文件中。layout
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 }}
^显然,这是行不通的。我想知道有什么作用。
在 Hugo 论坛上,有人暗示了一个解决方案,我能够想出以下内容。
{{ 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 文档是这样说的:
如果条件和类似条件在内部定义的变量在外部不可见。
这是一种临时存储该值的解决方法。 这里有更多关于刮擦的内容
到目前为止,我觉得这段代码还不完整。它有效,但是它根据提交显示作者。因此多次提交会多次生成同一作者。我将这个限制提请您注意,以开发一个创造性的解决方案。当我得到满意的答案时,我会更新这个答案。同时,欢迎提出建议。
这里是我对hugo discourse的原始回答。
您可以通过以下方式加入他们:
1 个参数
{{ $variable := printf "%s" $args_1st_in_string | printf "%s" }}
2 个参数
{{ $variable := printf "%s" $args_1st_in_string | printf "%s%s" $args_2nd_in_string | printf "%s" }}
多个参数
{{ $variable := printf "%s" $args_1st_in_string | ..... | printf "%s%s" $args_last_args_in_string | printf "%s" }}