先判断文章的描述是否存在,如果存在,再判断文章描述的长度是否大于30个字符,如果大于30个字符,直接使用文章描述作为meta描述;如果小于30个字符,则使用文章标题和config.toml Params中description的定义作为meta描述。如果文章没有描述,则使用文章标题作为meta描述。 这样可以保证每篇文章都有描述信息,并且描述信息足够充分。

{{ $description := .Description }}
{{ if ne $description "" }}
  {{ if ge (len $description) 30 }}
    {{ $description }}
  {{ else }}
    {{ .Title }} - {{ .Site.Params.description }}
  {{ end }}
{{ else }}
  {{ .Title }}
{{ end }}

需要注意的是,在模板中需要先定义一个变量来存储文章的描述,然后再使用变量来判断长度。

改版后的逻辑:

判断文章的描述是否存在, 如果存在, 则不用动,直接使用md文章头部定义的description描述作为meta描述; 如果文章没有描述, 再判断文章描述的长度是否大于30个字符,如果大于30个字符,直接使用文章描述作为meta描述; 如果小于30个字符,则使用文章标题和config.toml Params中description的定义作为meta描述。 可以使用以下代码来实现这个需求:

{{ if not .Description }}
  {{ if ge (len .Content) 30 }}
    {{ .Content | plainify | truncate 30 }}
  {{ else }}
    {{ .Title }} - {{ .Site.Params.description }}
  {{ end }}
{{ else }}
  {{ .Description }}
{{ end }}

这段代码首先判断文章的描述是否存在,如果不存在。再判断文章的内容长度是否大于30个字符,如果大于30个字符,直接使用文章的前30个字符作为meta描述,如果小于30个字符,则使用文章标题和config.toml Params中description的定义作为meta描述。如果文章有描述,则直接使用文章描述作为meta描述。

需要注意的是,在这里我们是使用文章的内容来作为meta描述的,如果文章的内容长度也不够30个字符,那么就会使用文章标题和config.toml Params中description的定义来作为meta