diff --git a/exampleSite/content/basics/migration/_index.en.md b/exampleSite/content/basics/migration/_index.en.md
index 6945e86489..a3d8751a78 100644
--- a/exampleSite/content/basics/migration/_index.en.md
+++ b/exampleSite/content/basics/migration/_index.en.md
@@ -16,6 +16,8 @@ This document shows you what's new in the latest release. For a detailed list of
## 5.4.0
+- **Change**: The [`button` shortcode]({{% relref "shortcodes/button" %}}) has a new parameter `target` to set the destination frame/window for the URL to open. If not given, it defaults to a new window/tab for external URLs or is not set at all for internal URLs. Previously even internal URLs where opened in a new window/tab.
+
- **New**: The [`math` shortcode]({{% relref "shortcodes/math" %}}) and [`mermaid` shortcode]({{% relref "shortcodes/mermaid" %}}) now support alignment parameter also if codefence syntax is used.
- **New**: Translation for Finnish (Suomi).
diff --git a/exampleSite/content/shortcodes/button.en.md b/exampleSite/content/shortcodes/button.en.md
index 0e1c89fb29..66844c8794 100644
--- a/exampleSite/content/shortcodes/button.en.md
+++ b/exampleSite/content/shortcodes/button.en.md
@@ -51,6 +51,7 @@ Once the button is clicked, it opens another browser tab for the given URL.
| **style** | `transparent` | The color scheme used to paint the button.
- by severity: `info`, `note`, `tip`, `warning`
- by brand color: `primary`, `secondary`
- by color: `blue`, `green`, `grey`, `orange`, `red`
- by special color: `default`, `transparent` |
| **icon** | see notes | [Font Awesome icon name]({{%relref "cont/icons#finding-an-icon" %}}) set to the left of the title. Depending on the **style** there may be a default icon. Any given value will overwrite the default.
- for severity styles: a nice matching icon for the severity
- for all other colors: _<empty>_
If you want no icon for a severity style, you have to set this parameter to `" "` (a non empty string filled with spaces) |
| **iconposition** | `left` | Places the icon to the `left` or `right` of the title. |
+| **target** | see notes | The destination frame/window for the URL. This behaves similar to normal links. If the parameter is not given it defaults to:
- `_blank` for any address starting with `http://` or `https://`
- no specific value for all other links |
| _**<content>**_ | see notes | Arbitrary text for the button title. Depending on the **style** there may be a default title. Any given value will overwrite the default.
- for severity styles: the matching title for the severity
- for all other colors: _<empty>_
If you want no title for a severity style, you have to set this parameter to `" "` (a non empty string filled with spaces) |
## Examples
@@ -134,6 +135,15 @@ Once the button is clicked, it opens another browser tab for the given URL.
{{% button href="https://gohugo.io/" icon="dragon" style="warning" %}}Get Hugo{{% /button %}}
+### Target
+
+````go
+{{%/* button href="https://gohugo.io/" target="_self" %}}Get Hugo in same window{{% /button */%}}
+{{%/* button href="https://gohugo.io/" %}}Get Hugo in new Window/Frame (default){{% /button */%}}
+````
+{{% button href="https://gohugo.io/" target="_self" %}}Get Hugo in same Window/Frame{{% /button %}}
+{{% button href="https://gohugo.io/" %}}Get Hugo in new Window/Frame (default){{% /button %}}
+
### Other
#### Severity Style with all Defaults
@@ -143,3 +153,11 @@ Once the button is clicked, it opens another browser tab for the given URL.
````
{{% button href="https://gohugo.io/" style="tip" %}}{{% /button %}}
+
+#### Button to internal page
+
+````go
+{{%/* button href="/" %}}Home{{% /button */%}}
+````
+
+{{% button href="/" %}}Home{{% /button %}}
diff --git a/layouts/partials/shortcodes/button.html b/layouts/partials/shortcodes/button.html
index a536640d91..31747bbdbf 100644
--- a/layouts/partials/shortcodes/button.html
+++ b/layouts/partials/shortcodes/button.html
@@ -1,7 +1,11 @@
{{- $context := .context }}
{{- $content := .content }}
-{{- $href := .href }}
+{{- $href := .href | default "" }}
{{- $style := .style | default "transparent" }}
+{{- $target := .target | default "" }}
+{{- if and (eq (len $target) 0) (or (strings.HasPrefix $href "http://") (strings.HasPrefix $href "https://") ) }}
+ {{- $target = "_blank" }}
+{{- end }}
{{- $title := .title | default ($content) | default ($style | T) }}
{{- $icon := .icon | default "" }}
{{- if and (not $icon) (eq (len $icon) 0) }}
@@ -17,7 +21,7 @@
{{- $iconposition := .iconposition | default "left" }}
{{- with $context }}
-
+
{{- if and $icon (eq $iconposition "left") }}
{{- end }}
diff --git a/layouts/shortcodes/button.html b/layouts/shortcodes/button.html
index 20125fb500..b39e2c097e 100644
--- a/layouts/shortcodes/button.html
+++ b/layouts/shortcodes/button.html
@@ -7,4 +7,5 @@
"iconposition" ((.Get "iconposition") | default (.Get "icon-position"))
"style" (.Get "style")
"title" (.Get "title")
+ "target" (.Get "target")
) }}
\ No newline at end of file