From 3f8e771258d3ba824ba50961c33031ed48dfbcee Mon Sep 17 00:00:00 2001 From: GustaveWPM Date: Wed, 6 Mar 2024 23:35:58 +0100 Subject: [PATCH] docs: blog tags --- doc/blog/05.tags.md | 117 ++++++++++++++++++++ doc/blog/Assets/05.tags/final-result-en.png | Bin 0 -> 7501 bytes doc/blog/Assets/05.tags/final-result-fr.png | Bin 0 -> 7874 bytes 3 files changed, 117 insertions(+) create mode 100644 doc/blog/05.tags.md create mode 100644 doc/blog/Assets/05.tags/final-result-en.png create mode 100644 doc/blog/Assets/05.tags/final-result-fr.png diff --git a/doc/blog/05.tags.md b/doc/blog/05.tags.md new file mode 100644 index 000000000..45a5751f8 --- /dev/null +++ b/doc/blog/05.tags.md @@ -0,0 +1,117 @@ +# Blog tags + +Let's explore the tags feature! + +--- + +## The blog documents front-matter + +Let's create a dummy blog document. + +```markdown +--- +title: Note +metadescription: Meta description +description: Description +date: 2019-08-14 21:00 +--- + +Hello world! +``` + +By default, this document will not have any tag. + +You can tweak it to enable the tags feature just like so: + +```markdown +--- +tags: ['hello', 'world'] +title: Note +metadescription: Meta description +description: Description +date: 2019-08-14 21:00 +--- + +Hello world! +``` + +You can also write it as follows: + +```markdown +--- +tags: + - hello + - world +title: Note +metadescription: Meta description +description: Description +date: 2019-08-14 21:00 +--- + +Hello world! +``` + +Because of a weird Contentlayer bug, keep the `tags` field at the top of the document properties. Otherwise, it could break its parsing on Windows. + +**Don't forget to describe the tags for your blog post in all its different languages.** + +## The Blog Tags Config file + +It is possible to manage the blog tags thanks to the [_blog tags config file_.](/interop/config/contentlayer/blog/blogTags.ts) + +Let: + +```ts +// interop/config/contentlayer/blog/blogTags.ts +const _blogTagOptions = [] as const satisfies string[]; +``` + +Become: + +```ts +// interop/config/contentlayer/blog/blogTags.ts +const _blogTagOptions = ['hello', 'world'] as const satisfies string[]; // * ... Added 'hello' and 'world' tags +``` + +Then, you'll notice a new error in your [locale files.](/src/i18n/locales) + +For instance: + +> Type '{}' is missing the following properties from type 'MakeHomogeneousValuesObjType, string>': hello, world + +This is because your [i18n schema file](/src/i18n/locales/schema.ts) injects i18n constraints to force you to declare the translations of your blog +tags: + +```ts +// src/i18n/locales/schema.ts +'blog-tags': blogTagOptionsVocabSchema +``` + +Let's fix it! + +Turn this: + +```ts +// src/i18n/locales/fr.ts +'blog-tags': {} +``` + +Into this: + +```ts +// src/i18n/locales/fr.ts +'blog-tags': { + hello: 'Bonjour', + world: 'Monde' +} +``` + +Adapt all your locales like this, then, go to your blog category page. + +--- + +

Result (en)

+

Result (fr)

+ +Congrats! +You made it! diff --git a/doc/blog/Assets/05.tags/final-result-en.png b/doc/blog/Assets/05.tags/final-result-en.png new file mode 100644 index 0000000000000000000000000000000000000000..bc38d5a02ed078d3911a0c86a6fb01082d2e5677 GIT binary patch literal 7501 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%0DnV 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 X=1*jOe0L3)6r}Y~U#;?i{i}Zim4%oI literal 0 HcmV?d00001