docs: Document shortcode error handling
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 7 Nov 2018 09:20:08 +0000 (10:20 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 7 Nov 2018 09:38:58 +0000 (10:38 +0100)
Closes https://github.com/gohugoio/hugoDocs/issues/660

docs/content/en/templates/shortcode-templates.md
docs/content/en/variables/shortcodes.md

index cf0d7bc6fc08c48678e02b493bed9fe1e5e712ee..d5ea493990c7060ed418e8535e9bd2e4f80be114 100644 (file)
@@ -346,6 +346,24 @@ This will output the following HTML. Note how the first two `img` shortcodes inh
 <img src="/images/three.jpg">
 ```
 
+
+## Error Handling in Shortcodes
+
+Use the [errorf](/functions/errorf) template func and [.Position](/variables/shortcodes/) variable to get useful error messages in shortcodes:
+
+```bash
+{{ with .Get "name" }}
+{{ else }}
+{{ errorf "missing value for param 'name': %s" .Position }}
+{{ end }}
+```
+
+When the above fails, you will see an `ERROR` log similar to the below:
+
+```bash
+ERROR 2018/11/07 10:05:55 missing value for param name: "/Users/bep/dev/go/gohugoio/hugo/docs/content/en/variables/shortcodes.md:32:1"
+```
+
 ## More Shortcode Examples
 
 More shortcode examples can be found in the [shortcodes directory for spf13.com][spfscs] and the [shortcodes directory for the Hugo docs][docsshortcodes].
index 3484df7a036c86374964c2c869c30187bbffe92e..10b779396a223012703250dfea4cd9cba2fede7d 100644 (file)
@@ -26,6 +26,12 @@ toc: false
 .Parent
 : provides access to the parent shortcode context in nested shortcodes. This can be very useful for inheritance of common shortcode parameters from the root.
 
+.Position
+: Contains [filename and position](https://godoc.org/github.com/gohugoio/hugo/common/text#Position) for the shortcode in a page. Note that this can be relatively expensive to calculate, and is meant for error reporting. See [Error Handling in Shortcodes](/templates/shortcode-templates/#error-handling-in-shortcodes).
+
+
+
+
 .IsNamedParams
 : boolean that returns `true` when the shortcode in question uses [named rather than positional parameters][shortcodes]