Back to Hugo

Introduction

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

0.161.12.2 KB
Original Source

When rendering Markdown to HTML, render hooks override the conversion. Each render hook is a template, with one template for each supported element type:

[!note] Hugo supports multiple content formats including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText.

The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats.

For example, consider this Markdown:

text
[Hugo](https://gohugo.io)

![kitten](kitten.jpg)

Without link or image render hooks, the example above is rendered to:

html
<p><a href="https://gohugo.io">Hugo</a></p>
<p></p>

By creating link and image render hooks, you can alter the conversion from Markdown to HTML. For example:

html
<p><a href="https://gohugo.io" rel="external">Hugo</a></p>
<p></p>

Each render hook is a template, with one template for each supported element type:

text
layouts/
  └── _markup/
      ├── render-blockquote.html
      ├── render-codeblock.html
      ├── render-heading.html
      ├── render-image.html
      ├── render-link.html
      ├── render-passthrough.html
      └── render-table.html

The template lookup order allows you to create different render hooks for each page type, kind, language, and output format. For example:

text
layouts/
├── _markup/
│   ├── render-link.html
│   └── render-link.rss.xml
├── books/
│   └── _markup/
│       ├── render-link.html
│       └── render-link.rss.xml
└── films/
    └── _markup/
        ├── render-link.html
        └── render-link.rss.xml

The remaining pages in this section describe each type of render hook, including examples and the context received by each template.