hugo进阶学习17-19

Variable #

文件结构 #

实战 #

{% raw %} 
{{/*layouts\_default\single.html*/}}
{{ define "main" }}
  This is the single template<br>
  {{/* 常见变量 */}}
   title: {{ .Params.title }}<br>
   title: {{   .Title }}<br>
   date: {{ .Date }}<br>
  url: {{ .URL }}<br>
  myvar: {{ .Params.myVar }}<br>
  {{/* 定义变量 */}}
  {{ $myVarname := "aString" }}
  myVarname:{{ $myVarname }}<br>
  <h1 style="color: {{ .Params.color }} ;" >Single Template</h1>
{{ end }}  
{% endraw %} 
{% raw %} 
---
title: "E-title"
date: 2024-12-07T12:43:21+08:00
draft: true
myVar: "myvalue"
color: "red"
---

This is dir3/e.md 
{% endraw %} 

其他两个文件效果

{% raw %} 
---
title: "F"
date: 2024-12-07T12:43:21+08:00
draft: true
color: "green"
---

This is dir3/f.md 
{% endraw %} 

{% raw %} 
---
title: "This is A's title"
date: 2004-12-04T12:42:49+08:00
draft: true
author: "Mike"
color: "blue"
---

This is A,/a. 
{% endraw %} 

效果:

官网详细默认变量 #

hugo variables

Functions函数 #

文件结构 #

代码(模板) #

注意,下面全是dir1下的模板,只对/dir1/及其下文件有效
baseof.html

{% raw %} 
{{/*layouts\_default\baseof.html*/}}
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  {{ block "main" . }}
    33
  {{ end }}
</body>
</html> 
{% endraw %} 

single.html

{% raw %} 
{{/*layouts\dir1\single.html*/}}
<html>
<head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document111</title>
</head>
<body> 
  Dir1Template,see!
  <h1>Header</h1>
  <h3>{{.Title}}</h3>
  <h4>{{.Date}}</h4> <!--特殊项-->
  {{.Content}}
  <h1>Footer</h1>
  <hr>
  {{ truncate 10 "This is a really long string"}}<br>
  {{ add 1 5 }}<br>
  {{ sub 1 5 }}<br>
  {{ singularize "dogs" }} <br>
  {{/*下面完全没有输出,因为不是list page*/}}
  {{ range .Pages }}
    {{ .Title }}<br>
  {{ end }}
</body>
</html> 
{% endraw %} 

对于上面的single.html生成的html源码:

{% raw %} 
<html>
<head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document111</title> <!--注意这里,说明完全使用layouts\dir1\single.html作为模板,跟baseof.html无关-->
</head>
<body> 
  Dir1Template,see!
  <h1>Header</h1>
  <h3>B-title</h3>
  <h4>2024-12-07 12:43:21 &#43;0800 CST</h4> 
  <p>This is dir1/b.md</p>

  <h1>Footer</h1>
  <hr>
  This is a …<br>
  6<br>
  -4<br>
  dog <br>
  
  
<script data-no-instant>document.write('<script src="/livereload.js?port=1313&mindelay=10"></' + 'script>')</script></body>
</html>  
{% endraw %} 

list.html

{% raw %} 
{{/* layouts\dir1\list.html  */}}
{{ define "main" }}
     This is the listTemplate for dir1;<br>
  {{/*下面只输出了dir1下的所有文件(包括子文件夹)*/}}
  {{ range .Pages }}
    {{ .Title }}<br>
  {{ end }}
{{ end }}  
{% endraw %} 

IfStatements #

文件结构 #

if代码演示 #

{% raw %} 
{{/* layouts\_default\single.html */}}
{{ define "main" }}
     This is the listTemplate<br>
     {{ $var1 := "dog" }}
     {{ $var2 := "cat" }}
     {{ if ge $var1 $var2 }}
          True
     {{ else }}
          False
     {{ end }}
     <br>
     {{ $var3 := 6 }}
     {{ $var4 := 4 }}
     {{ $var5 := 1 }}
     
     {{ if and (le $var3 $var4) (lt $var3 $var5) }}
          var3 is minist
     {{ else if and (le $var4 $var3) (lt $var4 $var5)}}
          var4 is minist
     {{ else }}
          var5 is minist
     {{ end }}
     <br> 
{{ end }}  
{% endraw %} 

其他代码展示 #

{% raw %} 
<!--layouts\dir1\single.html-->
<html>
<head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document111</title>
</head>
<body> 
  
{{ $title := .Title }}
{{/* 注意,这里遍历的是整个网站(.Site)的文件 */}}
{{ range .Site.Pages }}
   <a href="{{.URL}}" style=" {{ if eq .Title $title }} background-color: red; {{ end }} ">{{.Title}}</a> 
{{ end }}
  <hr>
</body>
</html> 
{% endraw %}