diff --git a/content/2020-12/applicator/allOf.markdown b/content/2020-12/applicator/allOf.markdown
index dce1789d..95a2d2a6 100644
--- a/content/2020-12/applicator/allOf.markdown
+++ b/content/2020-12/applicator/allOf.markdown
@@ -28,7 +28,7 @@ related:
keyword: not
---
-The `allOf` keyword is used to specify that a given instance must validate against all of the subschemas provided within an array. It's essentially a logical "AND" operation where all conditions must be met for validation to pass.
+The {{}} keyword is used to specify that a given instance must validate against all of the subschemas provided within an array. It's essentially a logical "AND" operation where all conditions must be met for validation to pass.
## Examples
@@ -129,7 +129,7 @@ The `allOf` keyword is used to specify that a given instance must validate again
{{}}
{ "foo": "foo" }
{{}}
-* _Remember, if any subschema within the `allOf` keyword fails validation or has a boolean `false` value, the entire validation will always fail._
+* _Remember, if any subschema within the {{}} keyword fails validation or has a boolean `false` value, the entire validation will always fail._
{{}}
{
diff --git a/layouts/shortcodes/link.html b/layouts/shortcodes/link.html
new file mode 100644
index 00000000..ce40b6c5
--- /dev/null
+++ b/layouts/shortcodes/link.html
@@ -0,0 +1,12 @@
+{{- $dialect := .Get "dialect" | default .Page.Section -}}
+{{- $vocabulary := .Get "vocabulary" | default .Page.Parent.Params.title -}}
+{{- $keyword := .Get "keyword" -}}
+
+{{- if (not $keyword) -}}
+{{- errorf "keyword parameter is required for this shortcode." -}}
+{{- end -}}
+
+{{ $vocabularyURL := $vocabulary | lower | printf "%s/%s" $dialect }}
+{{ $keywordURL := (replace $keyword "$" "") | lower | printf "/%s/%s" $vocabularyURL }}
+
+{{ $keyword }}