Table render hooks

Table render hooks


Create a table render hook to override the rendering of Markdown tables to HTML.

Context #

Table render hook templates receive the following [context]:

Attributes #

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

hugo.
     
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) 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:

layouts/_default/_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>