Back to Hugo

Table render hooks

docs/content/en/render-hooks/tables.md

0.161.12.4 KB
Original Source

{{< new-in 0.134.0 />}}

Context

Table render hook templates receive the following context:

Attributes : (map) The Markdown attributes, available if you configure your site as follows:

{{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] block = true {{< /code-toggle >}}

Ordinal : (int) The zero-based ordinal of the table on the page.

Page : (page) A reference to the current page.

PageInner : (page) A reference to a page nested via the RenderShortcodes method. See details.

Position : (string) The position of the table within the page content.

THead : (slice) A slice of table header rows, where each element is a slice of table cells.

TBody : (slice) A slice of table body rows, where each element is a slice of table cells.

Table cells

Each table cell within the slice of slices returned by the THead and TBody methods has the following fields:

Alignment : (string) The alignment of the text within the table cell, one of left, center, or right.

Text : (template.HTML) The text within the table cell.

Example

In its default configuration, Hugo renders Markdown tables according to the GitHub Flavored Markdown specification. To create a render hook that does the same thing:

go-html-template
<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>

{{% include "/_common/render-hooks/pageinner.md" %}}