+++ title = "Shortcodes" weight = 40 +++ While Markdown is good at writing, it isn't great when you need write inline HTML to add some styling for example. To solve this, Gutenberg borrows the concept of [shortcodes](https://codex.wordpress.org/Shortcode_API) from WordPress. In our case, the shortcode corresponds to a template that is defined in the `templates/shortcodes` directory or a built-in one. ## Writing a shortcode Let's write a shortcode to embed YouTube videos as an example. In a file called `youtube.html` in the `templates/shortcodes` directory, paste the following: ```jinja2
{{ body }}``` We could use it in our markup file like so: ```md {% quote(author="Vincent") %} A quote {% end %} ``` The `body` variable used in the shortcode template will be implicitly passed down to the rendering context automatically. ## Built-in shortcodes Gutenberg comes with a few built-in shortcodes. If you want to override a default shortcode template, simply place a `{shortcode_name}.html` file in the `templates/shortcodes` directory and Gutenberg will use that instead. ### YouTube Embed a responsive player for a YouTube video. The arguments are: - `id`: the video id (mandatory) - `class`: a class to add the `div` surrounding the iframe - `autoplay`: whether to autoplay the video on load Usage example: ```md {{ youtube(id="dQw4w9WgXcQ") }} {{ youtube(id="dQw4w9WgXcQ", autoplay=true) }} {{ youtube(id="dQw4w9WgXcQ", autoplay=true, class="youtube") }} ``` Result example: {{ youtube(id="dQw4w9WgXcQ") }} ### Vimeo Embed a player for a Vimeo video. The arguments are: - `id`: the video id (mandatory) - `class`: a class to add the `div` surrounding the iframe Usage example: ```md {{ vimeo(id="124313553") }} {{ vimeo(id="124313553", class="vimeo") }} ``` Result example: {{ vimeo(id="124313553") }} ### Streamable Embed a player for a Streamable video. The arguments are: - `id`: the video id (mandatory) - `class`: a class to add the `div` surrounding the iframe Usage example: ```md {{ streamable(id="2zt0") }} {{ streamable(id="2zt0", class="streamble") }} ``` Result example: {{ streamable(id="2zt0") }} ### Gist Embed a [Github gist](). The arguments are: - `url`: the url to the gist (mandatory) - `file`: by default, the shortcode will pull every file from the URL unless a specific filename is requested - `class`: a class to add the `div` surrounding the iframe Usage example: ```md {{ gist(id="https://gist.github.com/Keats/e5fb6aad409f28721c0ba14161644c57") }} {{ gist(id="https://gist.github.com/Keats/e5fb6aad409f28721c0ba14161644c57", class="gist") }} ``` Result example: {{ gist(url="https://gist.github.com/Keats/e5fb6aad409f28721c0ba14161644c57") }}
-- {{ author}}