--- title: Blockquote render hooks linkTitle: Blockquotes description: Create blockquote render hook templates to override the rendering of Markdown blockquotes to HTML. categories: [] keywords: [] --- ## Context Blockquote _render hook_ templates receive the following [context](g): `AlertType` : (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert type converted to lowercase. See the [alerts](#alerts) section below. `AlertTitle` : {{< new-in 0.134.0 />}} : (`template.HTML`) Applicable when [`Type`](#type) is `alert`, this is the alert title. See the [alerts](#alerts) section below. `AlertSign` : {{< new-in 0.134.0 />}} : (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert sign. Typically used to indicate whether an alert is graphically foldable, this is one of `+`, `-`, or an empty string. See the [alerts](#alerts) section below. `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 blockquote 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](#pageinner-details). `Position` : (`string`) The position of the blockquote within the page content. `Text` : (`template.HTML`) The blockquote text, excluding the first line if [`Type`](#type) is `alert`. See the [alerts](#alerts) section below. `Type` : (`string`) The blockquote type. Returns `alert` if the blockquote has an alert designator, else `regular`. See the [alerts](#alerts) section below. ## Examples In its default configuration, Hugo renders Markdown blockquotes according to the [CommonMark][] specification. To create a render hook that does the same thing: ```go-html-template {file="layouts/_markup/render-blockquote.html" copy=true}
{{ .Text }}``` To render a blockquote as an HTML `figure` element with an optional citation and caption: ```go-html-template {file="layouts/_markup/render-blockquote.html" copy=true}
{{ .Text }}{{ with .Attributes.caption }}
{{ else }}{{ transform.Emojify (index $emojis .AlertType) }} {{ with .AlertTitle }} {{ . }} {{ else }} {{ or (i18n .AlertType) (title .AlertType) }} {{ end }}
{{ .Text }}
{{ .Text }}{{ end }} ``` To override the label, create these entries in your i18n files: {{< code-toggle file=i18n/en.toml >}} caution = 'Caution' important = 'Important' note = 'Note' tip = 'Tip' warning = 'Warning' {{< /code-toggle >}} Although you can use one template with conditional logic as shown above, you can also create separate templates for each [`Type`](#type) of blockquote: ```tree layouts/ └── _markup/ ├── render-blockquote-alert.html └── render-blockquote-regular.html ``` {{% include "/_common/render-hooks/pageinner.md" %}} [CommonMark]: https://spec.commonmark.org/current/ [GitHub]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts [Markdown attributes]: /content-management/markdown-attributes/ [Obsidian]: https://help.obsidian.md/Editing+and+formatting/Callouts [Typora]: https://support.typora.io/Markdown-Reference/#callouts--github-style-alerts [`RenderShortcodes`]: /methods/page/rendershortcodes/