HUGO
News Docs Themes Community GitHub

Ref shortcode

Insert a permalink to the given page reference using the ref shortcode.

To override Hugo’s embedded ref shortcode, copy the source code to a file with the same name in the layouts/shortcodes directory.

When working with the Markdown content format, this shortcode has become largely redundant. Its functionality is now primarily handled by link render hooks, specifically the embedded one provided by Hugo. This hook effectively addresses all the use cases previously covered by this shortcode.

Usage

The ref shortcode accepts either a single positional argument (the path) or one or more named arguments, as listed below.

Arguments

path
(string) The path to the target page. Paths without a leading slash (/) are resolved first relative to the current page, and then relative to the rest of the site.
lang
(string) The language of the target page. Default is the current language. Optional.
outputFormat
(string) The output format of the target page. Default is the current output format. Optional.

Examples

The ref shortcode typically provides the destination for a Markdown link.

Always use Markdown notation notation when calling this shortcode.

The following examples show the rendered output for a page on the English version of the site:

[Link A]({{% ref "/books/book-1" %}})

[Link B]({{% ref path="/books/book-1" %}})

[Link C]({{% ref path="/books/book-1" lang="de" %}})

[Link D]({{% ref path="/books/book-1" lang="de" outputFormat="json" %}})

Rendered:

<a href="https://example.org/en/books/book-1/">Link A</a>

<a href="https://example.org/en/books/book-1/">Link B</a>

<a href="https://example.org/de/books/book-1/">Link C</a>

<a href="https://example.org/de/books/book-1/index.json">Link D</a>

Error handling

By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.

refLinksErrorLevel: warning
refLinksNotFoundURL: /some/other/url
refLinksErrorLevel = 'warning'
refLinksNotFoundURL = '/some/other/url'
{
   "refLinksErrorLevel": "warning",
   "refLinksNotFoundURL": "/some/other/url"
}