HUGO
Menu
GitHub 87548 stars Mastodon

表格渲染钩子

创建表格渲染钩子模板以覆盖 Markdown 表格到 HTML 的渲染。
New in v0.134.0

上下文

表格_渲染钩子_ 模板接收以下 上下文

Attributes
(map) Markdown 属性,如果您的站点配置如下则可用:
markup:
  goldmark:
    parser:
      attribute:
        block: true
[markup]
  [markup.goldmark]
    [markup.goldmark.parser]
      [markup.goldmark.parser.attribute]
        block = true
{
   "markup": {
      "goldmark": {
         "parser": {
            "attribute": {
               "block": true
            }
         }
      }
   }
}
Ordinal
(int) 页面上表格的从零开始的序号。
Page
(page) 对当前页面的引用。
PageInner
(page) 对通过 RenderShortcodes 方法嵌套的页面的引用。详见
Position
(string) 表格在页面内容中的位置。
THead
(slice) 表格标题行的切片,其中每个元素是表格单元格的切片。
TBody
(slice) 表格主体行的切片,其中每个元素是表格单元格的切片。

表格单元格

THeadTBody 方法返回的切片切片中的每个表格单元格具有以下字段:

Alignment
(string) 表格单元格内文本的对齐方式,leftcenterright 之一。
Text
(template.HTML) 表格单元格内的文本。

示例

在默认配置中,Hugo 根据 GitHub Flavored Markdown 规范 渲染 Markdown 表格。要创建执行相同操作的渲染钩子:

layouts/_markup/render-table.html
<table
  {{- range $k, $v := .Attributes }}
    {{- if $v }}
      {{- printf " %s=%q" $k $v | safeHTMLAttr }}
    {{- end }}
  {{- end }}>
  <thead>
    {{- range .THead }}
      <tr>
        {{- range . }}
          <th
            {{- with .Alignment }}
              {{- printf " style=%q" (printf "text-align: %s" .) | safeHTMLAttr }}
            {{- end -}}
          >
            {{- .Text -}}
          </th>
        {{- end }}
      </tr>
    {{- end }}
  </thead>
  <tbody>
    {{- range .TBody }}
      <tr>
        {{- range . }}
          <td
            {{- with .Alignment }}
              {{- printf " style=%q" (printf "text-align: %s" .) | safeHTMLAttr }}
            {{- end -}}
          >
            {{- .Text -}}
          </td>
        {{- end }}
      </tr>
    {{- end }}
  </tbody>
</table>

PageInner 详情

PageInner 的主要用途是相对于包含的 Page 解析链接和 页面资源。例如,创建一个 “include” 短代码,从多个内容文件组合页面,同时保留脚注和目录的全局上下文:

layouts/_shortcodes/include.html
{{ with .Get 0 }}
  {{ with $.Page.GetPage . }}
    {{- .RenderShortcodes }}
  {{ else }}
    {{ errorf "短代码 %q 无法找到 %q。参见 %s" $.Name . $.Position }}
  {{ end }}
{{ else }}
  {{ errorf "短代码 %q 需要一个位置参数来指示要包含的文件的逻辑路径。参见 %s" .Name .Position }}
{{ end }}

然后在您的 Markdown 中调用短代码:

content/posts/post-1.md
{{% include "/posts/post-2" %}}

在渲染 /posts/post-2 时触发的任何渲染钩子将获得:

  • 调用 Page 时获得 /posts/post-1
  • 调用 PageInner 时获得 /posts/post-2

如果不相关,PageInner 会回退到 Page 的值,并且始终返回一个值。

PageInner 方法仅与调用 RenderShortcodes 方法的短代码相关,并且您必须使用 Markdown 表示法 调用短代码。

作为实际示例,Hugo 的嵌入式链接和图像渲染钩子使用 PageInner 方法来解析 Markdown 链接和图像目标。请参阅各自的源代码:


Last updated: January 1, 0001
Improve this page