Docs

Link

Posted on August 17, 2024  (Last modified on June 20, 2025) • 5 min read • 994 words
Share via

Use the link shortcode to add a managed link to your page content.

Overview  

Since Hinode v0.16.8 you can add a managed link to your page content using a configurable shortcode. Managed links refer to an external URL that is centrally maintained in the site’s parameters. The shortcode also supports internal links that refer to a regular page or published asset.

markdown
{{< link mozilla_image />}}

Arguments  

  Important

The link shortcode recognizes language-specific pages, identified by a language prefix. For example, use /fr/about to link to the French translation of the about page. Do not use the alias /fr/a-propos in this case.

The shortcode supports a single unnamed parameter, or various named parameters. The unnamed parameter is recognized as a url if it starts with http, else it is treated as either a named link or relative internal reference (in that order). Any inner text is rendered as the link title, otherwise it uses the host name (for external links), link title (for internal links), or anchor name (for any local references containing a #). The shortcode supports the following named arguments:

Name Type Required Default Comment
case bool true Flag to indicate if the retrieved title (e.g. no inner text is provided) of an internal link should use its original case. If false, the title is set to lower case.
class string Class attributes of the element. It supports Bootstrap attributes to modify the styling of the element.
cue bool Flag to indicate if an external link should show a visual cue, defaults to the setting main.externalLinks.cue in the site’s parameters.
external bool Flag to indicate if a link that contains a baseURL host should be forced as external.
force bool v0.27.20      Flag to indicate a link should bypass any language redirection. Only applicable when the site param enableLanguageSelectionStorage is set to true. When force is true, the link to a local page is kept as is.
href string, template.URL, url Address for the button or hyperlink. When set for a card group, a button is added if the list exceeds the maximum number of cards to display.
name string v1.0.0      Use href instead. Alias of href.
tab bool Flag to indicate if an external link should open in a new tab, defaults to setting main.externalLinks.tab in the site’s parameters.
title string, hstring.RenderedString, hstring.HTML, template.HTML v0.26.0      Title of the element. If the element references a (local) page, the title overrides the referenced page’s title.
url string v1.0.0      Use href instead. Alias of href.
Name Type Required Default
case bool true
Flag to indicate if the retrieved title (e.g. no inner text is provided) of an internal link should use its original case. If false, the title is set to lower case.
class string
Class attributes of the element. It supports Bootstrap attributes to modify the styling of the element.
cue bool
Flag to indicate if an external link should show a visual cue, defaults to the setting main.externalLinks.cue in the site’s parameters.
external bool
Flag to indicate if a link that contains a baseURL host should be forced as external.
force bool
v0.27.20      Flag to indicate a link should bypass any language redirection. Only applicable when the site param enableLanguageSelectionStorage is set to true. When force is true, the link to a local page is kept as is.
href string, template.URL, url
Address for the button or hyperlink. When set for a card group, a button is added if the list exceeds the maximum number of cards to display.
name string
v1.0.0      Use href instead. Alias of href.
tab bool
Flag to indicate if an external link should open in a new tab, defaults to setting main.externalLinks.tab in the site’s parameters.
title string, hstring.RenderedString, hstring.HTML, template.HTML
v0.26.0      Title of the element. If the element references a (local) page, the title overrides the referenced page’s title.
url string
v1.0.0      Use href instead. Alias of href.

Site Configuration  

  Important

The --minify flag of hugo purges HTML whitespace by default. Unfortunately, this also removes the spacing behind the visual cue of external links. Add the following configuration to your main configuration to prevent this:

[minify]
 [minify.tdewolff.html]
   keepWhitespace = true

You can Configure the Behavior of Managed Links in the /config/_default/params.toml file in the main.externalLinks section. Manage the named links in the links section of the same file:

[links]
    mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"

Examples  

Use either named links or common url’s to generate a managed link. If a link name cannot be found, Hinode tries to find the reference relative to the current page instead. The reference may include a cross-reference #, although the reference itself is not validated.

Use the cue and tab arguments to override the default behavior of displaying and opening external links. Omit the link’s content to generate a reference to the host (for external links) or the target page’s title (for internal links). Lastly, set case to false to set the obtained page title to lower case.

markdown
- {{< link mozilla_image >}}Named link with default settings{{< /link >}}
- {{< link href=mozilla_image cue=false tab=false >}}Named link opening in current tab w/o icon{{< /link >}}
- {{< link href=mozilla_image cue=true tab=true >}}Named link opening in new tab with icon{{< /link >}}
- {{< link mozilla_image />}}
- {{< link "https://developer.mozilla.org" >}}External link{{< /link >}}
- {{< link "../getting-started/introduction" >}}Internal link with title{{< /link >}}
- {{< link "../about/license" >}}Internal link with relative path{{< /link >}}
- {{< link "/docs/about/license" >}}Internal link with absolute path{{< /link >}}
- {{< link "docs/about/license" >}}Internal link with full path{{< /link >}}
- {{< link href="../about/license" case=false />}}
- {{< link "#arguments" />}}
- {{< link "image#examples" />}}