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 Markdown this shortcode is obsolete. Instead, to properly resolve Markdown link destinations, use the embedded link render hook or create your own.
In its default configuration, Hugo automatically uses the embedded link render hook for multilingual single-host sites, specifically when the duplication of shared page resources feature is disabled. This is the default behavior for such sites. If custom link render hooks are defined by your project, modules, or themes, these will be used instead.
You can also configure Hugo to always
use the embedded link render hook, use it only as a fallback
, or never
use it. See details.
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"
}