diff --git a/layouts/shortcodes/conditional-text.html b/layouts/shortcodes/conditional-text.html new file mode 100644 index 0000000000..a343b495d1 --- /dev/null +++ b/layouts/shortcodes/conditional-text.html @@ -0,0 +1,36 @@ + +{{ $condition := lower $.Site.Params.buildCondition }} + +{{ if ne $condition "" }} + + + {{ $include_if := lower (.Get "include-if") }} + {{ $exclude_if := lower (.Get "exclude-if") }} + + {{ if and (in $include_if $condition) (in $exclude_if $condition) }} + + {{- errorf "Build condition %q appears in both include-if and exclude-if parameters of conditional-txt shortcode on page %s" $condition .Position -}} + {{ end }} + + {{ if isset $.Params "include-if" }} + + {{ if in $include_if $condition }} + +{{ .Inner }} + {{ else }} + {{ end }} + {{ else }} + + {{ if isset $.Params "exclude-if" }} + + {{ if in $exclude_if $condition }} + {{ else }} + +{{ .Inner }} + {{ end }} + {{ end }} + + {{ end }} + +{{ end }} diff --git a/userguide/content/en/docs/Adding content/Shortcodes/index.md b/userguide/content/en/docs/Adding content/Shortcodes/index.md index 3a503306ae..08192b3366 100644 --- a/userguide/content/en/docs/Adding content/Shortcodes/index.md +++ b/userguide/content/en/docs/Adding content/Shortcodes/index.md @@ -662,3 +662,17 @@ starting with `/`. The root directory is the `/content` folder. | code | false | Boolean value. If `true` the contents is treated as code| | lang | plain text | Programming language | +## Conditional text + +The `conditional-text` shortcode allows you to show or hide parts of your content depending on the value of the `buildCondition` parameter set in your configuration file. This can be useful if you are generating different builds from the same source, for example, using a different product name. This shortcode helps you handle the minor differences between these builds. + +```text +{{%/* conditional-text include-if="foo" */%}} +This text appears in the output only if `buildCondition = "foo" is set in your config file`. +{{%/* /conditional-text */%}} +{{%/* conditional-text exclude-if="bar" */%}} +This text does not appear in the output if `buildCondition = "bar" is set in your config file`. +{{%/* /conditional-text */%}} +``` + +If you are using this shortcode, note that when evaluating the conditions, substring matches are matches as well. That means, if you set `include-if="foobar"`, and `buildcondition = "foo"`, you have a match!