From ba815891075d2ac23e3fdb0f8c1e6e96f23e51a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Weber?= Date: Sun, 29 Sep 2024 23:48:56 +0200 Subject: [PATCH] docs: first draft chapter 2 #567 --- README.md | 26 +- .../content/basics/releasenotes/2/0.en.md | 2 +- .../content/basics/releasenotes/2/6.en.md | 2 +- .../content/basics/releasenotes/2/8.en.md | 2 +- .../content/basics/releasenotes/3/0.en.md | 10 +- .../content/basics/releasenotes/3/2.en.md | 2 +- .../content/basics/releasenotes/3/3.en.md | 2 +- .../content/basics/releasenotes/3/4.en.md | 2 +- .../content/basics/releasenotes/4/1.en.md | 2 +- .../content/basics/releasenotes/5/11.en.md | 2 +- .../content/basics/releasenotes/5/16.en.md | 2 +- .../content/basics/releasenotes/5/19.en.md | 2 +- .../content/basics/releasenotes/5/21.en.md | 4 +- .../content/basics/releasenotes/5/22.en.md | 2 +- .../content/basics/releasenotes/5/23.en.md | 14 +- .../content/basics/releasenotes/5/24.en.md | 10 +- .../content/basics/releasenotes/5/26.en.md | 2 +- .../content/basics/releasenotes/5/27.en.md | 2 +- .../content/basics/releasenotes/5/3.en.md | 2 +- .../content/basics/releasenotes/5/4.en.md | 2 +- .../content/basics/releasenotes/5/6.en.md | 2 +- .../content/basics/releasenotes/5/9.en.md | 2 +- .../content/basics/releasenotes/6/0.en.md | 2 +- .../content/basics/releasenotes/6/2.en.md | 2 +- .../content/basics/releasenotes/7/0.en.md | 2 +- .../configuration/appearance/_index.en.md | 8 + .../configuration/appearance/_index.pir.md | 7 + .../{ => appearance}/branding/_index.en.md | 150 +++++----- .../appearance/branding/_index.pir.md | 6 + .../{ => appearance}/generator/_index.en.md | 6 +- .../appearance/generator/_index.pir.md | 6 + .../appearance/topbar/_index.en.md | 50 ++++ .../appearance/topbar/_index.pir.md | 6 + .../configuration/branding/_index.pir.md | 6 - .../configuration/content/_index.en.md | 8 + .../configuration/content/_index.pir.md | 7 + .../content/headings/index.en.md | 23 ++ .../content/headings/index.pir.md | 6 + .../configuration/content/hidden/_index.en.md | 27 ++ .../content/hidden/_index.pir.md | 6 + .../configuration/content/image/_index.en.md | 7 + .../configuration/content/image/_index.pir.md | 6 + .../configuration/content/layouts/index.en.md | 30 ++ .../content/layouts/index.pir.md | 6 + .../configuration/content/width/_index.en.md | 23 ++ .../configuration/content/width/_index.pir.md | 6 + .../configuration/customization/_index.en.md | 277 ------------------ .../configuration/customization/_index.pir.md | 5 - .../configuration/generator/_index.pir.md | 6 - .../content/configuration/i18n/_index.en.md | 102 ------- .../content/configuration/i18n/_index.pir.md | 6 - .../content/configuration/i18n/i18n-menu.gif | Bin 76204 -> 0 bytes .../configuration/menushortcuts.pir.md | 5 - .../configuration/modifications/_index.en.md | 8 + .../configuration/modifications/_index.pir.md | 7 + .../modifications/dependencies/_index.en.md | 68 +++++ .../modifications/dependencies/_index.pir.md | 6 + .../modifications/outputformats/_index.en.md | 24 ++ .../modifications/outputformats/_index.pir.md | 6 + .../modifications/partials/index.en.md | 45 +++ .../modifications/partials/index.pir.md | 6 + .../{ => modifications}/topbar/_index.en.md | 9 +- .../{ => modifications}/topbar/_index.pir.md | 3 +- .../topbar/topbar-areas.png | Bin .../topbar/topbar-closed.png | Bin .../configuration/options/_index.en.md | 13 +- .../configuration/options/_index.pir.md | 5 +- .../configuration/sidebar/_index.en.md | 8 + .../configuration/sidebar/_index.pir.md | 7 + .../sidebar/headerfooter/_index.en.md | 40 +++ .../sidebar/headerfooter/_index.pir.md | 6 + .../headerfooter}/home_button_defaults.png | Bin .../sidebar/navigationmenu/_index.en.md | 35 +++ .../sidebar/navigationmenu/_index.pir.md | 6 + .../configuration/sidebar/search/_index.en.md | 61 ++++ .../sidebar/search/_index.pir.md | 6 + .../shortcutmenu/_index.en.md} | 46 ++- .../sidebar/shortcutmenu/_index.pir.md | 6 + .../configuration/sidebar/width/_index.en.md | 33 +++ .../configuration/sidebar/width/_index.pir.md | 6 + .../siteorganization/_index.en.md | 8 + .../siteorganization/_index.pir.md | 7 + .../deploymentscenarios/_index.en.md | 58 ++++ .../deploymentscenarios/_index.pir.md | 6 + .../multilingual/_index.en.md | 92 ++++++ .../multilingual/_index.pir.md | 6 + .../siteorganization/structure/_index.en.md | 42 +++ .../siteorganization/structure/_index.pir.md | 6 + .../content/frontmatter/frontmatter.toml | 8 +- .../content/shortcodes/highlight.en.md | 2 +- .../content/shortcodes/openapi/_index.en.md | 2 +- 91 files changed, 1023 insertions(+), 579 deletions(-) create mode 100644 exampleSite/content/configuration/appearance/_index.en.md create mode 100644 exampleSite/content/configuration/appearance/_index.pir.md rename exampleSite/content/configuration/{ => appearance}/branding/_index.en.md (62%) create mode 100644 exampleSite/content/configuration/appearance/branding/_index.pir.md rename exampleSite/content/configuration/{ => appearance}/generator/_index.en.md (93%) create mode 100644 exampleSite/content/configuration/appearance/generator/_index.pir.md create mode 100644 exampleSite/content/configuration/appearance/topbar/_index.en.md create mode 100644 exampleSite/content/configuration/appearance/topbar/_index.pir.md delete mode 100644 exampleSite/content/configuration/branding/_index.pir.md create mode 100644 exampleSite/content/configuration/content/_index.en.md create mode 100644 exampleSite/content/configuration/content/_index.pir.md create mode 100644 exampleSite/content/configuration/content/headings/index.en.md create mode 100644 exampleSite/content/configuration/content/headings/index.pir.md create mode 100644 exampleSite/content/configuration/content/hidden/_index.en.md create mode 100644 exampleSite/content/configuration/content/hidden/_index.pir.md create mode 100644 exampleSite/content/configuration/content/image/_index.en.md create mode 100644 exampleSite/content/configuration/content/image/_index.pir.md create mode 100644 exampleSite/content/configuration/content/layouts/index.en.md create mode 100644 exampleSite/content/configuration/content/layouts/index.pir.md create mode 100644 exampleSite/content/configuration/content/width/_index.en.md create mode 100644 exampleSite/content/configuration/content/width/_index.pir.md delete mode 100644 exampleSite/content/configuration/customization/_index.en.md delete mode 100644 exampleSite/content/configuration/customization/_index.pir.md delete mode 100644 exampleSite/content/configuration/generator/_index.pir.md delete mode 100644 exampleSite/content/configuration/i18n/_index.en.md delete mode 100644 exampleSite/content/configuration/i18n/_index.pir.md delete mode 100644 exampleSite/content/configuration/i18n/i18n-menu.gif delete mode 100644 exampleSite/content/configuration/menushortcuts.pir.md create mode 100644 exampleSite/content/configuration/modifications/_index.en.md create mode 100644 exampleSite/content/configuration/modifications/_index.pir.md create mode 100644 exampleSite/content/configuration/modifications/dependencies/_index.en.md create mode 100644 exampleSite/content/configuration/modifications/dependencies/_index.pir.md create mode 100644 exampleSite/content/configuration/modifications/outputformats/_index.en.md create mode 100644 exampleSite/content/configuration/modifications/outputformats/_index.pir.md create mode 100644 exampleSite/content/configuration/modifications/partials/index.en.md create mode 100644 exampleSite/content/configuration/modifications/partials/index.pir.md rename exampleSite/content/configuration/{ => modifications}/topbar/_index.en.md (96%) rename exampleSite/content/configuration/{ => modifications}/topbar/_index.pir.md (51%) rename exampleSite/content/configuration/{ => modifications}/topbar/topbar-areas.png (100%) rename exampleSite/content/configuration/{ => modifications}/topbar/topbar-closed.png (100%) create mode 100644 exampleSite/content/configuration/sidebar/_index.en.md create mode 100644 exampleSite/content/configuration/sidebar/_index.pir.md create mode 100644 exampleSite/content/configuration/sidebar/headerfooter/_index.en.md create mode 100644 exampleSite/content/configuration/sidebar/headerfooter/_index.pir.md rename exampleSite/content/configuration/{customization => sidebar/headerfooter}/home_button_defaults.png (100%) create mode 100644 exampleSite/content/configuration/sidebar/navigationmenu/_index.en.md create mode 100644 exampleSite/content/configuration/sidebar/navigationmenu/_index.pir.md create mode 100644 exampleSite/content/configuration/sidebar/search/_index.en.md create mode 100644 exampleSite/content/configuration/sidebar/search/_index.pir.md rename exampleSite/content/configuration/{menushortcuts.en.md => sidebar/shortcutmenu/_index.en.md} (78%) create mode 100644 exampleSite/content/configuration/sidebar/shortcutmenu/_index.pir.md create mode 100644 exampleSite/content/configuration/sidebar/width/_index.en.md create mode 100644 exampleSite/content/configuration/sidebar/width/_index.pir.md create mode 100644 exampleSite/content/configuration/siteorganization/_index.en.md create mode 100644 exampleSite/content/configuration/siteorganization/_index.pir.md create mode 100644 exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.en.md create mode 100644 exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.pir.md create mode 100644 exampleSite/content/configuration/siteorganization/multilingual/_index.en.md create mode 100644 exampleSite/content/configuration/siteorganization/multilingual/_index.pir.md create mode 100644 exampleSite/content/configuration/siteorganization/structure/_index.en.md create mode 100644 exampleSite/content/configuration/siteorganization/structure/_index.pir.md diff --git a/README.md b/README.md index 517e6a4342..dfa48dc67e 100644 --- a/README.md +++ b/README.md @@ -16,31 +16,31 @@ The Relearn theme is an enhanced fork of the popular [Learn theme](https://githu - Responsive design for mobile devices - Looks nice on paper (if it has to) - Usable offline with no external dependencies - - [Usable from your local file system without a web server via `file://` protocol](https://mcshelby.github.io/hugo-theme-relearn/configuration/customization#file-system) + - [Usable from your local file system without a web server via `file://` protocol](https://mcshelby.github.io/hugo-theme-relearn/configuration/siteorganization/deploymentscenarios/) - Integration with the [VSCode Front Matter extension](https://github.com/estruyf/vscode-front-matter) for on-premise CMS capabilities - **Customizable Appearance** - - [Flexible brand image configuration](https://mcshelby.github.io/hugo-theme-relearn/configuration/branding#change-the-logo) - - [Automatic light/dark mode switching based on OS settings](https://mcshelby.github.io/hugo-theme-relearn/configuration/branding#adjust-to-os-settings) + - [Flexible brand image configuration](https://mcshelby.github.io/hugo-theme-relearn/configuration/appearance/branding#change-the-logo) + - [Automatic light/dark mode switching based on OS settings](https://mcshelby.github.io/hugo-theme-relearn/configuration/appearance/branding#adjust-to-os-settings) - Pre-defined color schemes and variants - - [User-selectable theme variants](https://mcshelby.github.io/hugo-theme-relearn/configuration/branding#multiple-variants) - - [Built-in stylesheet generator](https://mcshelby.github.io/hugo-theme-relearn/configuration/generator) + - [User-selectable theme variants](https://mcshelby.github.io/hugo-theme-relearn/configuration/appearance/branding#multiple-variants) + - [Built-in stylesheet generator](https://mcshelby.github.io/hugo-theme-relearn/configuration/appearance/generator) - [Customizable syntax highlighting](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/highlight) - **Advanced Functionality** - - [Chapter and site-wide printing capabilities](https://mcshelby.github.io/hugo-theme-relearn/configuration/customization#activate-print-support) - - [Versatile search options: in-page, popup, and dedicated search page](https://mcshelby.github.io/hugo-theme-relearn/configuration/customization#configure-search) - - [Customizable top bar buttons](https://mcshelby.github.io/hugo-theme-relearn/configuration/topbar) + - [Chapter and site-wide printing capabilities](https://mcshelby.github.io/hugo-theme-relearn/configuration/appearance/topbar/#print-support) + - [Versatile search options: in-page, popup, and dedicated search page](https://mcshelby.github.io/hugo-theme-relearn/configuration/sidebar/search/) + - [Customizable top bar buttons](https://mcshelby.github.io/hugo-theme-relearn/configuration/modifications/topbar/) - [Unlimited nested menu structure](https://mcshelby.github.io/hugo-theme-relearn/content/organization) - - [Configurable menu shortcuts](https://mcshelby.github.io/hugo-theme-relearn/configuration/menushortcuts) + - [Configurable menu shortcuts](https://mcshelby.github.io/hugo-theme-relearn/configuration/sidebar/shortcutmenu/) - Support for hidden pages - [Comprehensive taxonomy support](https://mcshelby.github.io/hugo-theme-relearn/content/taxonomy) - - [Social media integration](https://mcshelby.github.io/hugo-theme-relearn/configuration/customization#social-media-meta-tags) + - [Social media integration](https://mcshelby.github.io/hugo-theme-relearn/configuration/content/image/) - **Multilingual Support** - - [Full right-to-left (RTL) language support](https://mcshelby.github.io/hugo-theme-relearn/configuration/i18n) - - [Extensive list of supported languages](https://mcshelby.github.io/hugo-theme-relearn/configuration/i18n#basic-configuration): Arabic, Chinese (Simplified and Traditional), Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Turkish, Vietnamese - - [Multilingual content search capabilities](https://mcshelby.github.io/hugo-theme-relearn/configuration/i18n#search) + - [Full right-to-left (RTL) language support](https://mcshelby.github.io/hugo-theme-relearn/configuration/siteorganization/multilingual/) + - [Extensive list of supported languages](https://mcshelby.github.io/hugo-theme-relearn/configuration/siteorganization/multilingual): Arabic, Chinese (Simplified and Traditional), Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Turkish, Vietnamese + - [Multilingual content search capabilities](https://mcshelby.github.io/hugo-theme-relearn/configuration/sidebar/search/#search-with-mixed-language-support) - **Enhanced Markdown Features** - [GitHub Flavored Markdown (GFM) support](https://mcshelby.github.io/hugo-theme-relearn/content/markdown) diff --git a/exampleSite/content/basics/releasenotes/2/0.en.md b/exampleSite/content/basics/releasenotes/2/0.en.md index b5f0087676..f6e43e67eb 100644 --- a/exampleSite/content/basics/releasenotes/2/0.en.md +++ b/exampleSite/content/basics/releasenotes/2/0.en.md @@ -26,7 +26,7 @@ weight = -0 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can define the expansion state of your menus in the frontmatter. Please see further [documentation](content/frontmatter#override-expand-state-rules-for-menu-entries) for possible values and default behavior. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partials for defining pre/post content for menu items and the content. See [documentation](configuration/customization#partials) for further reading. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partials for defining pre/post content for menu items and the content. See [documentation](configuration/modifications/partials/) for further reading. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Shortcode [`children`](shortcodes/children) with new parameter `containerstyle`. diff --git a/exampleSite/content/basics/releasenotes/2/6.en.md b/exampleSite/content/basics/releasenotes/2/6.en.md index b8ce32cb9b..66bcf230e1 100644 --- a/exampleSite/content/basics/releasenotes/2/6.en.md +++ b/exampleSite/content/basics/releasenotes/2/6.en.md @@ -10,4 +10,4 @@ weight = -6 ### New -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Your site can now be served from a subdirectory if you set `baseURL` in your `hugo.toml`. See the [documentation](configuration/customization#public-web-server-from-subdirectory) for a detailed example. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Your site can now be served from a subdirectory if you set `baseURL` in your `hugo.toml`. See the [documentation](configuration/siteorganization/deploymentscenarios/) for a detailed example. diff --git a/exampleSite/content/basics/releasenotes/2/8.en.md b/exampleSite/content/basics/releasenotes/2/8.en.md index 6171016bfc..dcfcdc1c83 100644 --- a/exampleSite/content/basics/releasenotes/2/8.en.md +++ b/exampleSite/content/basics/releasenotes/2/8.en.md @@ -14,6 +14,6 @@ weight = -8 ### New -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now supports favicons served from `static/images/` named as `favicon` or `logo` in SVG, PNG or ICO format [out of the box](configuration/branding#change-the-favicon). An overridden partial `layouts/partials/favicon.html` may not be necessary anymore in most cases. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now supports favicons served from `static/images/` named as `favicon` or `logo` in SVG, PNG or ICO format [out of the box](configuration/appearance/branding#change-the-favicon). An overridden partial `layouts/partials/favicon.html` may not be necessary anymore in most cases. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can hide the table of contents menu for the whole site by setting the `disableToc` option in your `hugo.toml`. For an example see [the example configuration](configuration/options). diff --git a/exampleSite/content/basics/releasenotes/3/0.en.md b/exampleSite/content/basics/releasenotes/3/0.en.md index 8fd9731110..6fb970f75a 100644 --- a/exampleSite/content/basics/releasenotes/3/0.en.md +++ b/exampleSite/content/basics/releasenotes/3/0.en.md @@ -10,13 +10,13 @@ weight = -0 ### Breaking -- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} We made changes to the menu footer. If you have your `menu-footer.html` [partial overridden](configuration/customization#partials), you may have to review the styling (eg. margins/paddings) in your partial. For a reference take a look into the `menu-footer.html` partial that is coming with the exampleSite. +- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} We made changes to the menu footer. If you have your `menu-footer.html` [partial overridden](configuration/modifications/partials/), you may have to review the styling (eg. margins/paddings) in your partial. For a reference take a look into the `menu-footer.html` partial that is coming with the exampleSite. This change was made to allow your own menu footer to be placed right after the so called prefooter that comes with the theme (containing the language switch and _Clear history_ functionality). - {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} We have changed the default colors from the original Learn theme (the purple menu header) to the Relearn defaults (the light green menu header) as used in the official documentation. - This change will only affect your installation if you've not set the `themeVariant` parameter in your `hugo.toml`. [If you still want to use the Learn color variant](configuration/branding#theme-variant), you have to explicitly set `themeVariant="learn"` in your `hugo.toml`. + This change will only affect your installation if you've not set the `themeVariant` parameter in your `hugo.toml`. [If you still want to use the Learn color variant](configuration/appearance/branding#theme-variant), you have to explicitly set `themeVariant="learn"` in your `hugo.toml`. Note, that this will also affect your site if viewed with Internet Explorer 11 but in this case it can not be reconfigured as Internet Explorer does not support CSS variables. @@ -30,12 +30,12 @@ weight = -0 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} With this release you are now capable to define your own _dark mode_ variants. - To make this possible, we have introduced a lot more color variables you can use in [your color variants](configuration/branding#theme-variant). Your old variants will still work and don't need to be changed as appropriate fallback values are used by the theme. Nevertheless, the new colors allow for much more customization. + To make this possible, we have introduced a lot more color variables you can use in [your color variants](configuration/appearance/branding#theme-variant). Your old variants will still work and don't need to be changed as appropriate fallback values are used by the theme. Nevertheless, the new colors allow for much more customization. To see what's now possible, see the new variants `relearn-dark` and `neon` that are coming with this release. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} To make the creation of new variants easier for you, we've added a new interactive [theme variant generator](configuration/generator). This feature will not work with Internet Explorer 11. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} To make the creation of new variants easier for you, we've added a new interactive [theme variant generator](configuration/appearance/generator). This feature will not work with Internet Explorer 11. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can now configure multiple color variants in your `hugo.toml`. In this case, the first variant is the default chosen on first view and a variant selector will be shown in the menu footer. See the [documentation](configuration/branding#multiple-variants) for configuration. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can now configure multiple color variants in your `hugo.toml`. In this case, the first variant is the default chosen on first view and a variant selector will be shown in the menu footer. See the [documentation](configuration/appearance/branding#multiple-variants) for configuration. Note, that the new variant selector will not work with Internet Explorer 11 as it does not support CSS variables. Therefore, the variant selector will not be displayed with Internet Explorer 11. diff --git a/exampleSite/content/basics/releasenotes/3/2.en.md b/exampleSite/content/basics/releasenotes/3/2.en.md index e32d56a413..b3fb4e70a3 100644 --- a/exampleSite/content/basics/releasenotes/3/2.en.md +++ b/exampleSite/content/basics/releasenotes/3/2.en.md @@ -16,7 +16,7 @@ weight = -2 - {{% badge style="note" title=" " %}}Change{{% /badge %}} In this release the Mermaid JavaScript library will only be loaded on demand if the page contains a Mermaid shortcode or is using Markdown codefences. This changes the behavior of `disableMermaid` config option as follows: If a Mermaid shortcode or Markdown codefence is found, the option will be ignored and Mermaid will be loaded regardlessly. - The option is still useful in case you are using scripting to set up your graph. In this case no shortcode or Markdown codefence is involved and the library is not loaded by default. In this case you can set `disableMermaid=false` in your frontmatter to force the library to be loaded. See the [theme variant generator](configuration/generator) of the exampleSite for an example. + The option is still useful in case you are using scripting to set up your graph. In this case no shortcode or Markdown codefence is involved and the library is not loaded by default. In this case you can set `disableMermaid=false` in your frontmatter to force the library to be loaded. See the [theme variant generator](configuration/appearance/generator) of the exampleSite for an example. ### New diff --git a/exampleSite/content/basics/releasenotes/3/3.en.md b/exampleSite/content/basics/releasenotes/3/3.en.md index 6c65cbc1e3..f05757a98b 100644 --- a/exampleSite/content/basics/releasenotes/3/3.en.md +++ b/exampleSite/content/basics/releasenotes/3/3.en.md @@ -10,6 +10,6 @@ weight = -3 ### New -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Introduction of new CSS variables to set the font. The theme distinguishes between `--MAIN-font` for all content text and `--CODE-font` for inline or block code. There are additional overrides for all headings. See the [theme variant generator](configuration/generator) of the exampleSite for all available variables. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Introduction of new CSS variables to set the font. The theme distinguishes between `--MAIN-font` for all content text and `--CODE-font` for inline or block code. There are additional overrides for all headings. See the [theme variant generator](configuration/appearance/generator) of the exampleSite for all available variables. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new shortcode `swagger` is available to include a UI for REST OpenAPI specifications. See the [documentation](shortcodes/openapi) for available features. This feature will not work with Internet Explorer 11. diff --git a/exampleSite/content/basics/releasenotes/3/4.en.md b/exampleSite/content/basics/releasenotes/3/4.en.md index 52e27c6f67..bc854dadd6 100644 --- a/exampleSite/content/basics/releasenotes/3/4.en.md +++ b/exampleSite/content/basics/releasenotes/3/4.en.md @@ -16,6 +16,6 @@ weight = -4 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} If you prefer expandable/collapsible menu items, you can now set `collapsibleMenu=true` in your `hugo.toml`. This will add arrows to all menu items that contain sub menus. The menu will expand/collapse without navigation if you click on an arrow. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can activate [print support](configuration/customization#activate-print-support) in your `hugo.toml` to add the capability to print whole chapters or even the complete site. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can activate [print support](configuration/appearance/topbar/#print-support) in your `hugo.toml` to add the capability to print whole chapters or even the complete site. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Traditional Chinese. diff --git a/exampleSite/content/basics/releasenotes/4/1.en.md b/exampleSite/content/basics/releasenotes/4/1.en.md index 22aa8f52ea..3fb16e3517 100644 --- a/exampleSite/content/basics/releasenotes/4/1.en.md +++ b/exampleSite/content/basics/releasenotes/4/1.en.md @@ -10,4 +10,4 @@ weight = -1 ### New -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} While fixing issues with the search functionality for non Latin languages, you can now [configure to have multiple languages on a single page](configuration/i18n#search-with-mixed-language-support). +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} While fixing issues with the search functionality for non Latin languages, you can now [configure to have multiple languages on a single page](configuration/sidebar/search/#search-with-mixed-language-support). diff --git a/exampleSite/content/basics/releasenotes/5/11.en.md b/exampleSite/content/basics/releasenotes/5/11.en.md index 7b0f3f756c..156e6991a6 100644 --- a/exampleSite/content/basics/releasenotes/5/11.en.md +++ b/exampleSite/content/basics/releasenotes/5/11.en.md @@ -22,7 +22,7 @@ weight = -11 The default setting of `on`, in effect since 1.1.0, changed back to `off` as there was interference with scrolling on mobile and big pages. -- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme is now capable to visually [adapt to your OS's light/dark mode setting](configuration/branding#adjust-to-os-settings). +- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme is now capable to visually [adapt to your OS's light/dark mode setting](configuration/appearance/branding#adjust-to-os-settings). This is also the new default setting if you haven't configured `themeVariant` in your `hugo.toml`. diff --git a/exampleSite/content/basics/releasenotes/5/16.en.md b/exampleSite/content/basics/releasenotes/5/16.en.md index 6530949476..f0f78c8ff8 100644 --- a/exampleSite/content/basics/releasenotes/5/16.en.md +++ b/exampleSite/content/basics/releasenotes/5/16.en.md @@ -26,4 +26,4 @@ weight = -16 Additionally the `name` parameter was renamed to `title` but you don't need to change anything yet as the old name will be used as a fallback. Nevertheless you will get deprecation warnings while executing Hugo. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now optionally supports [separate favicons](configuration/branding#change-the-favicon) for light & dark mode. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now optionally supports [separate favicons](configuration/appearance/branding#change-the-favicon) for light & dark mode. diff --git a/exampleSite/content/basics/releasenotes/5/19.en.md b/exampleSite/content/basics/releasenotes/5/19.en.md index 6a35915c91..8b02f1570e 100644 --- a/exampleSite/content/basics/releasenotes/5/19.en.md +++ b/exampleSite/content/basics/releasenotes/5/19.en.md @@ -14,7 +14,7 @@ weight = -19 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has added two new color variants `zen-light` and `zen-dark`. Check it out! -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now [dispatches the custom event](configuration/customization#react-to-variant-switches-in-javascript) `themeVariantLoaded` on the `document` when the variant is fully loaded either initially or by switching the variant manually with the variant selector. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now [dispatches the custom event](configuration/modifications/dependencies/#react-to-variant-switches-in-javascript) `themeVariantLoaded` on the `document` when the variant is fully loaded either initially or by switching the variant manually with the variant selector. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Mermaid dependency to 10.3.1. This adds support for the [sankey diagram type](shortcodes/mermaid#sankey) and now comes with full support for YAML inside Mermaid graphs (previously, the theme ignored explicit Mermaid theme settings in YAML). diff --git a/exampleSite/content/basics/releasenotes/5/21.en.md b/exampleSite/content/basics/releasenotes/5/21.en.md index deff59d66a..8ae39557c1 100644 --- a/exampleSite/content/basics/releasenotes/5/21.en.md +++ b/exampleSite/content/basics/releasenotes/5/21.en.md @@ -10,10 +10,10 @@ weight = -21 ### Change -- {{% badge style="note" title=" " %}}Change{{% /badge %}} We made changes to the menu footer to improve alignment with the menu items in most cases. Care was taken not to break your existing overwritten footer. Anyways, if you have your `menu-footer.html` [partial overridden](configuration/customization#partials), you may want to review the styling (eg. margins/paddings) of your partial. +- {{% badge style="note" title=" " %}}Change{{% /badge %}} We made changes to the menu footer to improve alignment with the menu items in most cases. Care was taken not to break your existing overwritten footer. Anyways, if you have your `menu-footer.html` [partial overridden](configuration/modifications/partials/), you may want to review the styling (eg. margins/paddings) of your partial. ### New -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release comes with an awesome new feature, that allows you to customize your topbar buttons, change behavior, reorder them or define entirely new ones, unique to your installation. See [the documentation](configuration/topbar) for further details. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release comes with an awesome new feature, that allows you to customize your topbar buttons, change behavior, reorder them or define entirely new ones, unique to your installation. See [the documentation](configuration/modifications/topbar/) for further details. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Swagger dependency to 5.7.2 for the [`openapi` shortcode](shortcodes/openapi). This brings support for OpenAPI Specification 3.1. diff --git a/exampleSite/content/basics/releasenotes/5/22.en.md b/exampleSite/content/basics/releasenotes/5/22.en.md index e7565c6860..0febd56f1f 100644 --- a/exampleSite/content/basics/releasenotes/5/22.en.md +++ b/exampleSite/content/basics/releasenotes/5/22.en.md @@ -18,7 +18,7 @@ weight = -22 This can come in handy, if content for such a section page doesn't make much sense to you. See [the documentation](content/frontmatter#disable-section-pages) for how to do this. - This feature may require you to make changes to your existing installation if you are already using _[shortcuts to pages inside of your project](configuration/menushortcuts#shortcuts-to-pages-inside-of-your-project)_ with a _headless branch parent_. + This feature may require you to make changes to your existing installation if you are already using _[shortcuts to pages inside of your project](configuration/sidebar/shortcutmenu/#shortcuts-to-pages-inside-of-your-project)_ with a _headless branch parent_. In this case it is advised to remove the `title` from the headless branch parent's frontmatter, as it will otherwise appear in your breadcrumbs. diff --git a/exampleSite/content/basics/releasenotes/5/23.en.md b/exampleSite/content/basics/releasenotes/5/23.en.md index 645f3557f9..9771c245c0 100644 --- a/exampleSite/content/basics/releasenotes/5/23.en.md +++ b/exampleSite/content/basics/releasenotes/5/23.en.md @@ -34,13 +34,13 @@ weight = -23 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to print custom taxonomies anywhere in your page. [See the docs](content/taxonomy#customization). -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to adjust the menu width for your whole site. [See the docs](configuration/customization#change-the-menu-width). +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to adjust the menu width for your whole site. [See the docs](configuration/sidebar/width/). -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release adds social media meta tags for the Open Graph protocol and Twitter Cards to your site. [See the docs](configuration/customization#social-media-meta-tags). +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release adds social media meta tags for the Open Graph protocol and Twitter Cards to your site. [See the docs](configuration/content/image/). - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release comes with additional sort options for the menu and the [`children` shortcode](shortcodes/children). Both will now accept the following values: `weight`, `title`, `linktitle`, `modifieddate`, `expirydate`, `publishdate`, `date`, `length` or `default` (adhering to Hugo's default sort order). -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now provides a mechanism to load further JavaScript dependencies defined by you only if it is needed. This comes in handy if you want to add own shortcodes that depend on additional JavaScript code to be loaded. [See the docs](configuration/customization#own-shortcodes-with-javascript-dependencies). +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now provides a mechanism to load further JavaScript dependencies defined by you only if it is needed. This comes in handy if you want to add own shortcodes that depend on additional JavaScript code to be loaded. [See the docs](configuration/modifications/dependencies/). - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Mermaid dependency to 10.6.0. This adds support for the [xychart type](shortcodes/mermaid#xychart). @@ -56,10 +56,10 @@ weight = -23 | link | description | | ---------------------------------- | ------------------------------------------- | - | `[generator](en/configuration/generator)` | absolute from your project root (multilang) | - | `[generator](/en/configuration/generator)`| absolute from your project root (multilang) | - | `[generator](configuration/generator)` | absolute from your current language root | - | `[generator](/configuration/generator)` | absolute from your current language root | + | `[generator](en/configuration/appearance/generator)` | absolute from your project root (multilang) | + | `[generator](/en/configuration/appearance/generator)`| absolute from your project root (multilang) | + | `[generator](configuration/appearance/generator)` | absolute from your current language root | + | `[generator](/configuration/appearance/generator)` | absolute from your current language root | | `[generator](./../generator)` | relative from the current page | | `[generator](../generator)` | relative from the current page | diff --git a/exampleSite/content/basics/releasenotes/5/24.en.md b/exampleSite/content/basics/releasenotes/5/24.en.md index 8516f64068..b9cad0ce00 100644 --- a/exampleSite/content/basics/releasenotes/5/24.en.md +++ b/exampleSite/content/basics/releasenotes/5/24.en.md @@ -18,7 +18,7 @@ weight = -24 - {{% badge style="note" title=" " %}}Change{{% /badge %}} The frontmatter option `menuTitle` is now deprecated in favor for Hugo's own `linkTitle`. You don't need to change anything as the old `menuTitle` option is still supported. -- {{% badge style="note" title=" " %}}Change{{% /badge %}} The light themes have a bit more contrast for content text and headings. Also the syntaxhighlighting was changed to the more colorful MonokaiLight. This brings the syntaxhighlighting in sync with the corresponding dark theme variants, which are using Monokai. If you dislike this, you can create your own color variant file as [described here](configuration/branding#modify-shipped-variants). +- {{% badge style="note" title=" " %}}Change{{% /badge %}} The light themes have a bit more contrast for content text and headings. Also the syntaxhighlighting was changed to the more colorful MonokaiLight. This brings the syntaxhighlighting in sync with the corresponding dark theme variants, which are using Monokai. If you dislike this, you can create your own color variant file as [described here](configuration/appearance/branding#modify-shipped-variants). ### New @@ -28,17 +28,17 @@ weight = -24 Please note that an image link will generate false negatives if the file resides in your `static` directory. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You now can configure additional options for every theme variant in your `hugo.toml`. This allows for optional [advanced functionality](configuration/branding#theme-variant-advanced). You don't need to change anything as the old configuration options will still work (but may generate warnings now). +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You now can configure additional options for every theme variant in your `hugo.toml`. This allows for optional [advanced functionality](configuration/appearance/branding#theme-variant-advanced). You don't need to change anything as the old configuration options will still work (but may generate warnings now). The advanced functionality allows you to set an explicit name for a theme variant and now allows for multiple auto mode variants that adjust to the light/dark preference of your OS settings. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partial for defining the heading. See [documentation](configuration/customization#partials) for further reading. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partial for defining the heading. See [documentation](configuration/modifications/partials/) for further reading. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Support for Hugo's built-in [`figure` shortcode](https://gohugo.io/content-management/shortcodes/#figure). - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} On taxonomy and term pages you can now use prev/next navigation as within the normal page structure. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} In additiion to the existing [menu width customization](configuration/customization#change-the-menu-width), it is now also possible to set the width of the menu flyout for small screen sizes with the `--MENU-WIDTH-S` CSS property. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} In additiion to the existing [menu width customization](configuration/sidebar/width/), it is now also possible to set the width of the menu flyout for small screen sizes with the `--MENU-WIDTH-S` CSS property. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Improvements for accessibility when tabbing through the page for images, links and tab handles. @@ -48,4 +48,4 @@ weight = -24 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions {{% badge color="fuchsia" icon="fa-fw fab fa-hackerrank" title=" " %}}0.121.0{{% /badge %}} or higher for the [`highlight` shortcode](shortcodes/highlight). This does not change the minimum required Hugo version. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions {{% badge color="fuchsia" icon="fa-fw fab fa-hackerrank" title=" " %}}0.123.0{{% /badge %}} or higher for theme specific [output formats](configuration/customization) and handling of taxonomy and term titles. This does not change the minimum required Hugo version. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions {{% badge color="fuchsia" icon="fa-fw fab fa-hackerrank" title=" " %}}0.123.0{{% /badge %}} or higher for theme specific output formats and handling of taxonomy and term titles. This does not change the minimum required Hugo version. diff --git a/exampleSite/content/basics/releasenotes/5/26.en.md b/exampleSite/content/basics/releasenotes/5/26.en.md index 1035291879..198b854eee 100644 --- a/exampleSite/content/basics/releasenotes/5/26.en.md +++ b/exampleSite/content/basics/releasenotes/5/26.en.md @@ -12,7 +12,7 @@ weight = -26 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The lazy loading of images is now configurable by using the new `lazy` [image effect](content/imageeffects). The default value hasn't changed in comparison to older versions, you don't need to change anything. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to [adjust the max width of the main area](configuration/customization#change-the-main-areas-max-width), eg. in case you want to use the full page width for your content. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to [adjust the max width of the main area](configuration/content/width/), eg. in case you want to use the full page width for your content. - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Images and Markdown codefences are now respecting [Hugo's Markdown attributes](https://gohugo.io/content-management/markdown-attributes/). diff --git a/exampleSite/content/basics/releasenotes/5/27.en.md b/exampleSite/content/basics/releasenotes/5/27.en.md index 3855b1e4fd..f4ded92f40 100644 --- a/exampleSite/content/basics/releasenotes/5/27.en.md +++ b/exampleSite/content/basics/releasenotes/5/27.en.md @@ -16,7 +16,7 @@ weight = -27 - {{% badge style="note" title=" " %}}Change{{% /badge %}} If the theme is configured to generate warnings or errors during build by setting `image.errorlevel` to either `warning` or `error` in your `hugo.toml`, it will now also generate output if a link fragment is not found in the target page. -- {{% badge style="note" title=" " %}}Change{{% /badge %}} The [dependency loader](configuration/customization#own-shortcodes-with-javascript-dependencies) was made more versatile. +- {{% badge style="note" title=" " %}}Change{{% /badge %}} The [dependency loader](configuration/modifications/dependencies/) was made more versatile. The configuration in your `hugo.toml` does not require the `location` parameter anymore. If you still use it, the theme will work as before but will generate a warning. So you don't need to change anything, yet. diff --git a/exampleSite/content/basics/releasenotes/5/3.en.md b/exampleSite/content/basics/releasenotes/5/3.en.md index 65a801723a..3919ff4113 100644 --- a/exampleSite/content/basics/releasenotes/5/3.en.md +++ b/exampleSite/content/basics/releasenotes/5/3.en.md @@ -16,4 +16,4 @@ weight = -3 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [Image formatting](content/markdown#css-classes) has two new classes to align images to the `left` or `right`. Additionally, the already existing `inline` option is now documented. -- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Printing for the [`swagger` shortcode](shortcodes/openapi) was optimized to expand sections that are usually closed in interactive mode. This requires [print support](configuration/customization#activate-print-support) to be configured. +- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Printing for the [`swagger` shortcode](shortcodes/openapi) was optimized to expand sections that are usually closed in interactive mode. This requires [print support](configuration/appearance/topbar/#print-support) to be configured. diff --git a/exampleSite/content/basics/releasenotes/5/4.en.md b/exampleSite/content/basics/releasenotes/5/4.en.md index a7c78d9dce..ea964425a6 100644 --- a/exampleSite/content/basics/releasenotes/5/4.en.md +++ b/exampleSite/content/basics/releasenotes/5/4.en.md @@ -10,7 +10,7 @@ weight = -4 ### Change -- {{% badge style="note" title=" " %}}Change{{% /badge %}} [With the proper settings](configuration/customization#file-system) in your `hugo.toml` your page is now servable from the local file system using `file://` URLs. +- {{% badge style="note" title=" " %}}Change{{% /badge %}} [With the proper settings](configuration/siteorganization/deploymentscenarios/) in your `hugo.toml` your page is now servable from the local file system using `file://` URLs. Please note that the searchbox will only work for this if you reconfigure your outputformat for the homepage in your `hugo.toml` from `json` to `search`. The now deprecated `json` outputformat still works as before, so there is no need to reconfigure your installation if it is only served from `http://` or `https://`. diff --git a/exampleSite/content/basics/releasenotes/5/6.en.md b/exampleSite/content/basics/releasenotes/5/6.en.md index 66b40d6101..5310dc055b 100644 --- a/exampleSite/content/basics/releasenotes/5/6.en.md +++ b/exampleSite/content/basics/releasenotes/5/6.en.md @@ -12,7 +12,7 @@ weight = -6 - {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release introduces an additional dedicated search page. On this page, displayed search results have more space making it easier scanning through large number of results. - To activate this feature, you need to [configure it](configuration/customization#configure-search) in your `hugo.toml` as a new outputformat `searchpage` for the home page. If you don't configure it, no dedicated search page will be accessible and the theme works as before. + To activate this feature, you need to [configure it](configuration/sidebar/search/) in your `hugo.toml` as a new outputformat `searchpage` for the home page. If you don't configure it, no dedicated search page will be accessible and the theme works as before. You can access the search page by either clicking on the magnifier glass or pressing enter inside of the search box. diff --git a/exampleSite/content/basics/releasenotes/5/9.en.md b/exampleSite/content/basics/releasenotes/5/9.en.md index 5025c49988..5b35c2bf75 100644 --- a/exampleSite/content/basics/releasenotes/5/9.en.md +++ b/exampleSite/content/basics/releasenotes/5/9.en.md @@ -14,7 +14,7 @@ weight = -9 It was later discovered, that this causes pages only meant to be displayed in the `More` section of the menu and stored directly inside your `content` directory to now show up in the menu as well. - To [get rid](configuration/menushortcuts#shortcuts-to-pages-inside-of-your-project) of this undesired behavior you have two choices: + To [get rid](configuration/sidebar/shortcutmenu/#shortcuts-to-pages-inside-of-your-project) of this undesired behavior you have two choices: 1. Make the page file a [headless branch bundle](https://gohugo.io/content-management/page-bundles/#headless-bundle) (contained in its own subdirectory and called `_index.md`) and add the following frontmatter configuration to the file (see exampleSite's `content/showcase/_index.en.md`). This causes its content to **not** be ontained in the sitemap. diff --git a/exampleSite/content/basics/releasenotes/6/0.en.md b/exampleSite/content/basics/releasenotes/6/0.en.md index 5ca7424d8d..c514a5440d 100644 --- a/exampleSite/content/basics/releasenotes/6/0.en.md +++ b/exampleSite/content/basics/releasenotes/6/0.en.md @@ -30,7 +30,7 @@ weight = -0 - {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} Search support for the `json` outputformat [deprecated in 5.4.0](basics/releasenotes/5/#5-4-0) was removed. - Change it to `search` for the homepage in your `hugo.toml`. See the docs for [detailed configuration](configuration/customization#configure-search). + Change it to `search` for the homepage in your `hugo.toml`. See the docs for [detailed configuration](configuration/sidebar/search/). - {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} The frontmatter option `menuTitle` [deprecated in 5.24.0](basics/releasenotes/5/#5-24-0) was removed in favor for Hugo's own `linkTitle`. diff --git a/exampleSite/content/basics/releasenotes/6/2.en.md b/exampleSite/content/basics/releasenotes/6/2.en.md index fa823c9bef..bbf759f89e 100644 --- a/exampleSite/content/basics/releasenotes/6/2.en.md +++ b/exampleSite/content/basics/releasenotes/6/2.en.md @@ -14,7 +14,7 @@ weight = -2 If you now click on it, not only is the link copied to the clipboard (previous behavior) but also the heading scrolls to the top of the page. - If you dislike the new behavior, you can deactivate it by setting `disableAnchorScrolling=true` in your `hugo.toml`. See the [docs for further options](configuration/customization#change-heading-anchor-behavior). + If you dislike the new behavior, you can deactivate it by setting `disableAnchorScrolling=true` in your `hugo.toml`. See the [docs for further options](configuration/content/headings/). ### New diff --git a/exampleSite/content/basics/releasenotes/7/0.en.md b/exampleSite/content/basics/releasenotes/7/0.en.md index 712fb7d175..679a97653f 100644 --- a/exampleSite/content/basics/releasenotes/7/0.en.md +++ b/exampleSite/content/basics/releasenotes/7/0.en.md @@ -50,4 +50,4 @@ weight = -0 In addition you are now able to overwrite the default file name of the search index and the default page name of the dedicated search page by changing `searchIndexURL` and `searchPageURL` respectively in your `hugo.toml`. - See the [updated documentation](configuration/customization#configure-search) for reference. + See the [updated documentation](configuration/sidebar/search/) for reference. diff --git a/exampleSite/content/configuration/appearance/_index.en.md b/exampleSite/content/configuration/appearance/_index.en.md new file mode 100644 index 0000000000..c21ec0326d --- /dev/null +++ b/exampleSite/content/configuration/appearance/_index.en.md @@ -0,0 +1,8 @@ ++++ +alwaysopen = false +description = "Change colors, logos and the general appearance of your site" +title = "Appearance" +weight = 2 ++++ + +{{% children containerstyle="div" style="h2" description=true %}} diff --git a/exampleSite/content/configuration/appearance/_index.pir.md b/exampleSite/content/configuration/appearance/_index.pir.md new file mode 100644 index 0000000000..97de83a9f9 --- /dev/null +++ b/exampleSite/content/configuration/appearance/_index.pir.md @@ -0,0 +1,7 @@ ++++ +alwaysopen = false +description = "Change colors, logos and the general appearance of your site" +title = "Appearance" +weight = 2 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/branding/_index.en.md b/exampleSite/content/configuration/appearance/branding/_index.en.md similarity index 62% rename from exampleSite/content/configuration/branding/_index.en.md rename to exampleSite/content/configuration/appearance/branding/_index.en.md index d565554af0..4749bcb731 100644 --- a/exampleSite/content/configuration/branding/_index.en.md +++ b/exampleSite/content/configuration/appearance/branding/_index.en.md @@ -1,33 +1,37 @@ +++ -categories = ["custom", "theming"] +description = "How to configure colors, fonts, favicon and logo" title = "Branding" -weight = 2 +weight = 1 +++ -The Relearn theme provides configuration options to change your site's colors, favicon and logo. This allows you to easily align your site visuals to your desired style. Most of these options are exposed through so called color variants. +The Relearn theme provides settings to change your site's colors, fonts, favicon and logo. These settings are bundled in so called color variants that are contained of a CSS file and optional configuration options in your `hugo.toml`. -A color variant lets you customize various visual effects of your site like almost any color, used fonts, color schemes of print, syntax highligtning, Mermaid and the OpenAPI shortcode, etc. It contains of a CSS file and optional configuration options in your `hugo.toml`. - -The Relearn theme ships with a wide set of different color variants. You can use them as-is, copy them over and use them as a starting point for your customizations or just create completely new variants unique to your site. The [interactive variant generator](configuration/generator) may help you with this task. +The Relearn theme ships with a set of predefined color variants. You can use them as-is, copy them over and use them as a starting point for your customizations or just create completely new variants unique to your site. The [interactive variant generator](configuration/appearance/generator) may help you with this task. Once configured in your `hugo.toml`, you can select them with the variant selector at the bottom of the menu. ## Change the Variant (Simple) {#theme-variant} +{{% notice tip %}} +The theme provides an advanced configuration mode, combining the functionality for multiple variants with the possibility of adjusting to your OS settings and syntax highlighting and even more! + +Although all options documented here are still working, the advanced configuration options are the recommended way to configure your color variants. [See below](#theme-variant-advanced). +{{% /notice %}} + ### Single Variant -Set the `themeVariant` value to the name of your theme file. That's it! Your site will be displayed in this variant only. +Set the `themeVariant` value to the name of your theme CSS file. That's it! Your site will be displayed in this variant only. {{< multiconfig file=hugo >}} [params] themeVariant = "relearn-light" {{< /multiconfig >}} -{{% notice note %}} -Your theme variant file must reside in your site's `assets/css` directory and the file name must start with `theme-` and end in `.css`. In the above example, the path of your theme file must be `assets/css/theme-relearn-light.css`. +Your theme variant file must either reside in your site's `assets/css` directory or in the similar location of the theme at `themes/hugo-theme-relearn/assets/css`. The file name must start with `theme-` and end in `.css`. -If you want to make changes to a shipped color variant, create a copy in your site's `assets/css` directory. Don't edit the file in the theme's directory! -{{% /notice %}} +In the above example, the path of your theme file must be `assets/css/theme-relearn-light.css` or `themes/hugo-theme-relearn/assets/css/theme-relearn-light.css`. + +If you want to make changes to a shipped color variant, [see your choices below](#modify-shipped-variants). ### Multiple Variants @@ -38,15 +42,9 @@ You can also set multiple variants. In this case, the first variant is the defau themeVariant = [ "relearn-light", "relearn-dark" ] {{< /multiconfig >}} -{{% notice tip %}} -The theme provides an advanced configuration mode, combining the functionality for multiple variants with the below possibilities of adjusting to your OS settings and syntax highlighting and even more! +### Adjust to OS Settings -Although all options documented here are still working, the advanced configuration options are the recommended way to configure your color variants. [See below](#theme-variant-advanced). -{{% /notice %}} - -## Adjust to OS Settings - -You can also cause the site to adjust to your OS settings for light/dark mode. Just set the `themeVariant` to `auto` to become an auto mode variant. That's it. +You can also cause the site to adjust to your OS settings for light/dark mode. Just set the `params.themeVariant` to `auto` to become an auto mode variant. That's it. You can use the `auto` value with the single or multiple variants option. If you are using multiple variants, you can drop `auto` at any position in the option's array, but usually it makes sense to set it in the first position and make it the default. @@ -55,50 +53,20 @@ You can use the `auto` value with the single or multiple variants option. If you themeVariant = [ "auto", "red" ] {{< /multiconfig >}} -If you don't configure anything else, the theme will default to use `relearn-light` for light mode and `relearn-dark` for dark mode. These defaults are overwritten by the first two non-auto options of your `themeVariant` option if present. +If you don't configure anything else, the theme will default to use `relearn-light` for light mode and `relearn-dark` for dark mode. These defaults are overwritten by the first two non-auto options of your `params.themeVariant` option if present. In the above example, you would end with `red` for light mode and the default of `relearn-dark` for dark mode. -If you don't like that behavior, you can explicitly set `themeVariantAuto`. The first entry in the array is the color variant for light mode, the second for dark mode. +If you don't like that behavior, you can explicitly set `params.themeVariantAuto`. The first entry in the array is the color variant for light mode, the second for dark mode. {{< multiconfig file=hugo >}} [params] themeVariantAuto = [ "learn", "neon" ] {{< /multiconfig >}} -## Change the Favicon - -If your favicon is a SVG, PNG or ICO, just drop your image in your site's `static/images/` directory and name it `favicon.svg`, `favicon.png` or `favicon.ico` respectively. - -If you want to adjust your favicon according to your OS settings for light/dark mode, add the image files `static/images/favicon-light.svg` and `static/images/favicon-dark.svg` to your site's directory, respectively, corresponding to your file format. In case some of the files are missing, the theme falls back to `favicon.svg` for each missing file. All supplied favicons must be of the same file format. - -If no favicon file is found, the theme will lookup the alternative filename `logo` in the same location and will repeat the search for the list of supported file types. - -If you need to change this default behavior, create a new file `layouts/partials/favicon.html` in your site's directory and write something like this: - -````html {title="layouts/partials/favicon.html"} - -```` - -## Change the Logo - -Create a new file in `layouts/partials/logo.html` of your site. Then write any HTML you want. You could use an `img` HTML tag and reference an image created under the _static_ directory, or you could paste a SVG definition! - -{{% notice note %}} -The size of the logo will adapt automatically. -{{% /notice %}} - -## Syntax Highlighting - -If you want to switch the syntax highlighting theme together with your color variant, you need to configure your installation [according to Hugo's documentation](https://gohugo.io/content-management/syntax-highlighting/) and provide a syntax highlighting stylesheet file. - -You can use a one of the shipped stylesheet files or use Hugo to generate a file for you. The file must be written to `assets/css/chroma-.css`. To use it with your color variant you have to define `--CODE-theme: ` in the color variant stylesheet file. - -For an example, take a look into [`theme-relearn-light.css`](https://github.com/McShelby/hugo-theme-relearn/blob/main/assets/css/theme-relearn-light.css) and [`hugo.toml`](https://github.com/McShelby/hugo-theme-relearn/blob/main/exampleSite/config/_default/hugo.toml) of the exampleSite. - ## Change the Variant (Advanced) {#theme-variant-advanced} -The theme offers a new way to configure theme variants and all of the aspects above inside of a single configuration item. This comes with some features previously unsupported. +The theme offers an advanced way to configure theme variants and all of the aspects above inside of a single configuration item. This comes with some features previously unsupported. Like with the [multiple variants](#multiple-variants) option, you are defining your theme variants in an array but now _not by simple strings_ **but in a table with suboptions**. @@ -132,34 +100,27 @@ The `identifier` option is mandatory and equivalent to the string in the first e ### Example Configuration of This Site {{< multiconfig file=hugo >}} -[params] - [[params.themeVariant]] - identifier = "relearn-auto" - name = "Relearn Light/Dark" - auto = [] - [[params.themeVariant]] - identifier = "relearn-light" - [[params.themeVariant]] - identifier = "relearn-dark" - [[params.themeVariant]] - identifier = "zen-auto" - name = "Zen Light/Dark" - auto = [ "zen-light", "zen-dark" ] - [[params.themeVariant]] - identifier = "zen-light" - [[params.themeVariant]] - identifier = "zen-dark" - [[params.themeVariant]] - identifier = "neon" +themeVariant = [ + { identifier = "relearn-auto", name = "Relearn Light/Dark", auto = [] }, + { identifier = "relearn-light" }, + { identifier = "relearn-dark" }, + { identifier = "relearn-bright" }, + { identifier = "zen-auto", name = "Zen Light/Dark", auto = [ "zen-light", "zen-dark" ] }, + { identifier = "zen-light" }, + { identifier = "zen-dark" }, + { identifier = "retro-auto", name = "Retro Learn/Neon", auto = [ "learn", "neon" ] }, + { identifier = "neon" }, + { identifier = "learn" } +] {{< /multiconfig >}} ## Modify Shipped Variants -In case you like a shipped variant but only want to tweak some aspects, you have two choices: +In case you like a shipped variant but only want to tweak some aspects, you have some choices. **Don't edit the file in the theme's directory!** You will loose the ability to later easily upgrade your theme to a newer version. 1. Copy and change - You can copy the shipped variant file from the theme's `assets/css` directory to the site's `assets/css` directory and either store it with the same name or give it a new name. Edit the settings and save the new file. Afterwards you can use it in your `hugo.toml` by the chosen name. + You can copy the shipped variant file from the theme's `themes/hugo-theme-relearn/assets/css` directory to the site's `assets/css` directory and either store it with the same name or give it a new name. Edit the settings and save the new file. Afterwards you can use it in your `hugo.toml` by the chosen name. 2. Create and import @@ -185,3 +146,46 @@ In case you like a shipped variant but only want to tweak some aspects, you have {{< /multiconfig >}} In comparison to _copy and change_, this has the advantage that you profit from any adjustments to the `relearn-light` variant but keep your modifications. + +## Syntax Highlighting + +If you want to switch the syntax highlighting theme together with your color variant, first you need to configure your installation [according to Hugo's documentation](https://gohugo.io/content-management/syntax-highlighting/#generate-syntax-highlighter-css) to provide a syntax highlighting stylesheet file + +{{< multiconfig file=hugo >}} +markup.highlight.noClasses=false +{{< /multiconfig >}} + +You can use one of the shipped stylesheet files or use Hugo to generate a file for you + +````shell +hugo gen chromastyles --style=monokai > chroma-mycode.css +```` + +The file must be written to `assets/css/chroma-.css`. To use it with your color variant you have to modify `--CODE-theme: ` in the color variant stylesheet file + +````css {title="assets/css/theme-my-branding.css"} +@import "theme-relearn-light.css"; +:root { + --CODE-theme: mycode; /* name of the chroma stylesheet file */ +} +```` + +## Change the Favicon + +If your favicon is a SVG, PNG or ICO, just drop your image in your site's `static/images/` directory and name it `favicon.svg`, `favicon.png` or `favicon.ico` respectively. + +If you want to adjust your favicon according to your OS settings for light/dark mode, add the image files `static/images/favicon-light.svg` and `static/images/favicon-dark.svg` to your site's directory, respectively, corresponding to your file format. In case some of the files are missing, the theme falls back to `favicon.svg` for each missing file. All supplied favicons must be of the same file format. + +If no favicon file is found, the theme will lookup the alternative filename `logo` in the same location and will repeat the search for the list of supported file types. + +If you need to change this default behavior, create a new file `layouts/partials/favicon.html` in your site's directory and write something like this: + +````html {title="layouts/partials/favicon.html"} + +```` + +## Change the Logo + +Create a new file in `layouts/partials/logo.html` of your site. Then write any HTML you want. You could use an `img` HTML tag and reference an image or you could paste a SVG definition! + +The size of the logo will adapt automatically. diff --git a/exampleSite/content/configuration/appearance/branding/_index.pir.md b/exampleSite/content/configuration/appearance/branding/_index.pir.md new file mode 100644 index 0000000000..648abd4652 --- /dev/null +++ b/exampleSite/content/configuration/appearance/branding/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "How to configure colors, fonts, favicon and logo" +title = "Brrrand'n" +weight = 1 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/generator/_index.en.md b/exampleSite/content/configuration/appearance/generator/_index.en.md similarity index 93% rename from exampleSite/content/configuration/generator/_index.en.md rename to exampleSite/content/configuration/appearance/generator/_index.en.md index a4107f7bf9..548056c48d 100644 --- a/exampleSite/content/configuration/generator/_index.en.md +++ b/exampleSite/content/configuration/appearance/generator/_index.en.md @@ -1,8 +1,8 @@ +++ -categories = "theming" +description = "An interactive tool to generate color variant stylesheets" disableMermaid = false title = "Stylesheet Generator" -weight = 6 +weight = 9 +++ This interactive tool may help you to generate your own color variant stylesheet. @@ -22,7 +22,7 @@ Once you are satisfied, you can download the new variants file and copy it into Eg. if your new variants file is named `theme-my-custom-variant.css`, you have to set `themeVariant='my-custom-variant'` to use it. -See the docs for [further configuration options](configuration/branding) +See the docs for [further configuration options](configuration/appearance/branding) {{% /expand %}} {{% button style="secondary" icon="download" href="javascript:window.variants&&variants.getStylesheet();this.blur();" %}}Download variant{{% /button %}} diff --git a/exampleSite/content/configuration/appearance/generator/_index.pir.md b/exampleSite/content/configuration/appearance/generator/_index.pir.md new file mode 100644 index 0000000000..4880c82c6b --- /dev/null +++ b/exampleSite/content/configuration/appearance/generator/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "An interactive tool to generate color variant stylesheets" +title = "Stylesheet Generrrat'r" +weight = 9 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/appearance/topbar/_index.en.md b/exampleSite/content/configuration/appearance/topbar/_index.en.md new file mode 100644 index 0000000000..da87204711 --- /dev/null +++ b/exampleSite/content/configuration/appearance/topbar/_index.en.md @@ -0,0 +1,50 @@ ++++ +description = "Configure the site's topbar" +title = "Topbar" +weight = 3 ++++ + +This page is about how to configure supported options for the topbar. If you want to add further buttons or functionality, [see this section](configuration/modifications/topbar). + +## Table of Contents + +Set `params.disableToc=true` to hide the TOC button on all pages. If the button is hidden, also the keyboard shortcut is disabled. This can be overridden in a page's front matter. + +## Breadcrumbs + +Set `params.disableBreadcrumb=true` to hide the breadcrumb in the topbar. + +Further, you can override the breadcrumb separator by using `params.breadcrumbSeparator="/"`. This separator will also be used in the breadcrumbs of the search results and taxonomy pages. + +Set `params.disableRootBreadcrumb=true` to remove the root breadcrumb which often feels redundant. This will also apply to the breadcrumbs of the search results and taxonomy pages. + +## Edit Button + +If `editURL` is set to a URL, an edit button will be shown in the topbar. If the button is hidden, also the keyboard shortcut is disabled. + +The value can contain the macro `${FilePath}` which will be replaced by the file path of your displayed page. If no `${FilePath}` is given in the value, the value is treated as if the `${FilePath}` was appended at the end of the value. This can be overridden in the pages frontmatter. + +Eg. this site is using `editURL="https://github.com/McShelby/hugo-theme-relearn/edit/main/exampleSite/content/${FilePath}"` + +## Print Support + +You can activate print support to add the capability to print whole chapters or even the complete site. Just add the `print` output format to your home, section and page in your `hugo.toml` similar to the below: + +{{< multiconfig file=hugo >}} +[outputs] + home = ["html", "rss", "print"] + section = ["html", "rss", "print"] + page = ["html", "rss", "print"] +{{< /multiconfig >}} + +This will add a little printer icon in the top bar. It will switch the page to print preview when clicked. You can then send this page to the printer by using your browser's usual print functionality. + +{{% notice note %}} +The resulting URL will not be [configured ugly](https://gohugo.io/templates/output-formats/#configure-output-formats) in terms of [Hugo's URL handling](https://gohugo.io/content-management/urls/#ugly-urls) even if you've set `uglyURLs=true` in your `hugo.toml`. This is due to the fact that for one mime type only one suffix can be configured. + +Nevertheless, if you're unhappy with the resulting URLs you can manually redefine `outputFormats.print` in your own `hugo.toml` to your liking. +{{% /notice %}} + +## Arrow Navigation + +You can hide the previous/next buttons by setting `params.disableNextPrev=true`. If the buttons are hidden, also the keyboard shortcuts are disabled. diff --git a/exampleSite/content/configuration/appearance/topbar/_index.pir.md b/exampleSite/content/configuration/appearance/topbar/_index.pir.md new file mode 100644 index 0000000000..dded09ae22 --- /dev/null +++ b/exampleSite/content/configuration/appearance/topbar/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Configure the site's topbar" +title = "Topbarrr" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/branding/_index.pir.md b/exampleSite/content/configuration/branding/_index.pir.md deleted file mode 100644 index 0dc90d1b7b..0000000000 --- a/exampleSite/content/configuration/branding/_index.pir.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -categories = ["custom", "theming"] -title = "Brrrand'n" -weight = 2 -+++ -{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/_index.en.md b/exampleSite/content/configuration/content/_index.en.md new file mode 100644 index 0000000000..aebb01e56b --- /dev/null +++ b/exampleSite/content/configuration/content/_index.en.md @@ -0,0 +1,8 @@ ++++ +alwaysopen = false +description = "Configure the content area of your site" +title = "Content" +weight = 4 ++++ + +{{% children containerstyle="div" style="h2" description=true %}} diff --git a/exampleSite/content/configuration/content/_index.pir.md b/exampleSite/content/configuration/content/_index.pir.md new file mode 100644 index 0000000000..d5ad80376b --- /dev/null +++ b/exampleSite/content/configuration/content/_index.pir.md @@ -0,0 +1,7 @@ ++++ +alwaysopen = false +description = "Configure the content area of your site" +title = "Content" +weight = 4 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/headings/index.en.md b/exampleSite/content/configuration/content/headings/index.en.md new file mode 100644 index 0000000000..ae09786441 --- /dev/null +++ b/exampleSite/content/configuration/content/headings/index.en.md @@ -0,0 +1,23 @@ ++++ +description = "How to configure heading anchors" +title = "Headings" +weight = 3 ++++ + +Each heading may have an anchor link that is displayed when the heading is hovered. + +The behavior what should happen if the anchor icon is clicked is configurable in your `hugo.toml`. By default all options are activated. If you deactivate all options, no link will be shown on hover. + +{{< multiconfig file=hugo >}} +[params] +disableAnchorCopy = false +disableAnchorScrolling = false +{{< /multiconfig >}} + +## Copy Anchor Links to Clipboard + +If you set `params.disableAnchorCopy=true`, no anchor link will be copied to the clipboard when the anchor icon is pressed. + +## Scroll to Heading + +If you set `params.disableAnchorScrolling=true`, the page will not scroll to the beginning of the heading when the anchor icon is clicked. diff --git a/exampleSite/content/configuration/content/headings/index.pir.md b/exampleSite/content/configuration/content/headings/index.pir.md new file mode 100644 index 0000000000..33fc04aed7 --- /dev/null +++ b/exampleSite/content/configuration/content/headings/index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "How to configure heading anchors" +title = "Headings" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/hidden/_index.en.md b/exampleSite/content/configuration/content/hidden/_index.en.md new file mode 100644 index 0000000000..d4fba4ecee --- /dev/null +++ b/exampleSite/content/configuration/content/hidden/_index.en.md @@ -0,0 +1,27 @@ ++++ +description = "Learn about the hiddes pages feature" +title = "Hidden Pages" +weight = 5 ++++ + +The theme provides the concept of hidden pages. + +While Hugo has the `draft` option to not create a page at all, a hidden page is created but not shown in the navigation. Just set `hidden=true` in your pages front matter. This can be useful if you want to have a page that is only accessible via a link. + +If you access a hidden page via its URL, it will be revealed in the navigation menu. + +Hidden pages can even contain hidden subpages. + +By default, a hidden page is only hidden from a human user of your site. Crawlers may still see the URLs advertised in the sitemap, etc. You can avoid this by the following options + +## Hide from Search + +To hide hidden pages from search results of the search popup and dedicated search page, set `params.disableSearchHiddenPages=true`. + +## Hide from Crawlers + +To hide hidden pages from crawlers by removing links from the sitemap and rss feed, set `params.disableSearchHiddenPages=true`. + +## Hide from Taxonomies + +To hide hidden pages from showing up on the taxonomy and term pages, set `params.disableTagHiddenPages=true`. If this reduces term counters to zero, an empty but unlinked term page will be created anyhow. diff --git a/exampleSite/content/configuration/content/hidden/_index.pir.md b/exampleSite/content/configuration/content/hidden/_index.pir.md new file mode 100644 index 0000000000..8b23863cb6 --- /dev/null +++ b/exampleSite/content/configuration/content/hidden/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Learn about the hiddes pages feature" +title = "Hidden Pages" +weight = 5 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/image/_index.en.md b/exampleSite/content/configuration/content/image/_index.en.md new file mode 100644 index 0000000000..01cf954979 --- /dev/null +++ b/exampleSite/content/configuration/content/image/_index.en.md @@ -0,0 +1,7 @@ ++++ +description = "Featured Images for social media" +title = "Featured Images" +weight = 2 ++++ + +The theme adds social media meta tags including feature images for the [Open Graph](https://gohugo.io/templates/internal/#open-graph) protocol and [Twitter Cards](https://gohugo.io/templates/internal/#twitter-cards) to your site. These are configured as mentioned in the linked Hugo docs. diff --git a/exampleSite/content/configuration/content/image/_index.pir.md b/exampleSite/content/configuration/content/image/_index.pir.md new file mode 100644 index 0000000000..3415019c17 --- /dev/null +++ b/exampleSite/content/configuration/content/image/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Featured Images for social media" +title = "Featured Images" +weight = 2 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/layouts/index.en.md b/exampleSite/content/configuration/content/layouts/index.en.md new file mode 100644 index 0000000000..2549c55007 --- /dev/null +++ b/exampleSite/content/configuration/content/layouts/index.en.md @@ -0,0 +1,30 @@ ++++ +description = "How to use and extend layouts" +title = "Custom Layouts" +weight = 4 ++++ + +The Relearn theme provides a few layouts for you to use. Namely these are `home`, `chapter` and `default`. All are accessible as so called [archetypes](content/layouts) for an author of your site. + +You can manually use them by defining the `type` option accordingly in your page's front matter. + +These layouts will use the general framework of the theme as defined in `themes/hugo-theme-learn/layouts/_default/baseof.html` but be modify the appearance of the content inside of the page. + +### Defining Layouts + +To provide your own custom layout, you need to choose a name, say `mylayout`. Create a file `layouts/mylayout/views/article.html` with the following content + +````html {title="layouts/mylayout/views/article.html"} +
+
+{{ partial "content-header.html" . }} +
+{{ partial "heading-pre.html" . }}{{ partial "heading.html" . }}{{ partial "heading-post.html" . }} +{{ partial "article-content.html" . }} +
+{{ partial "content-footer.html" . }} +
+
+```` + +In this file, you can do what ever you want. Usually, you want to at least set some `class` identifier to add custom CSS styles for your layout and call the partial `article-content.html` to render the content of your page. diff --git a/exampleSite/content/configuration/content/layouts/index.pir.md b/exampleSite/content/configuration/content/layouts/index.pir.md new file mode 100644 index 0000000000..757e156272 --- /dev/null +++ b/exampleSite/content/configuration/content/layouts/index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "How to use and extend layouts" +title = "Custom Layouts" +weight = 4 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/content/width/_index.en.md b/exampleSite/content/configuration/content/width/_index.en.md new file mode 100644 index 0000000000..1fa0b56193 --- /dev/null +++ b/exampleSite/content/configuration/content/width/_index.en.md @@ -0,0 +1,23 @@ ++++ +description = "Changing the width the content area" +title = "Width" +weight = 1 ++++ + +The theme reacts to browser resizes and adjusts the menu and content width accordingly. + +If you dislike the default behavior, you can link to a CSS stylesheet or change it in your `layouts/partials/custom-header.html`. + +## Change the Main Area's Max Width + +By default the main area width will only grow to a certain extent if more vertical screen space is available. This is done for readability purposes as long lines are usually harder to read. + +If you are unhappy with the default, you can define the following CSS variable and set the value to your liking. If you want to use all available space, select a really big value like `1000rem`; + +````html {title="layouts/partials/custom-header.html"} + +```` diff --git a/exampleSite/content/configuration/content/width/_index.pir.md b/exampleSite/content/configuration/content/width/_index.pir.md new file mode 100644 index 0000000000..5a44851cb6 --- /dev/null +++ b/exampleSite/content/configuration/content/width/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Changing the width of menu and content area" +title = "Page Width" +weight = 1 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/customization/_index.en.md b/exampleSite/content/configuration/customization/_index.en.md deleted file mode 100644 index 3265dbd66d..0000000000 --- a/exampleSite/content/configuration/customization/_index.en.md +++ /dev/null @@ -1,277 +0,0 @@ -+++ -title = "Customization" -weight = 1 -+++ - -## Usage scenarios - -The theme is usable in different scenarios, requiring the following mandatory settings in your `hugo.toml`. All settings not mentioned can be set to your liking. - -### Public Web Server from Root - -{{< multiconfig file=hugo >}} -baseURL = "https://example.com/" -{{< /multiconfig >}} - -### Public Web Server from Subdirectory - -{{< multiconfig file=hugo >}} -baseURL = "https://example.com/mysite/" -relativeURLs = false -{{< /multiconfig >}} - -### Private Web Server (LAN) - -The same settings as with any of the public web server usage scenarios or - -{{< multiconfig file=hugo >}} -baseURL = "/" -relativeURLs = true -{{< /multiconfig >}} - -### File System - -{{< multiconfig file=hugo >}} -baseURL = "/" -relativeURLs = true -{{< /multiconfig >}} - -{{% notice warning %}} -Using a `baseURL` with a subdirectory and `relativeURLs=true` are mutually exclusive due to the fact, that [Hugo does not apply the `baseURL` correctly](https://github.com/gohugoio/hugo/issues/12130). - -If you need both, you have to generate your site twice but with different settings into separate directories. -{{% /notice %}} - -{{% notice note %}} -Sublemental pages (like `sitemap.xml`, `rss.xml`) and generated social media links inside of your pages will always be generated with absolute URLs and will not work if you set `relativeURLs=true`. -{{% /notice %}} - -{{% notice info %}} -If you are using `uglyURLs=false` (Hugo's default), the theme will append an additional `index.html` to all page links to make your site be servable from the file system. If you don't care about the file system and only serve your page via a web server you can generate the links without this: - -{{< multiconfig file=hugo >}} -[params] - disableExplicitIndexURLs = true -{{< /multiconfig >}} -{{% /notice %}} - -## Configure Search - -The theme comes with three levels of search, all provided through the search form in the menu - -- in-page search: a search term will be marked if found in the currently displayed page -- search popup: a popup will open during typing if the term is found in other pages of your site -- dedicated search page: you can access a dedicated search page by either clicking on the magnifier glass or by typing and pressing ENTER - -Each level depends on the previous level to be enabled, eg. the dedicated search page is only available, if you have search popup and in-page search enabled. - -By default all three levels are enabled. You can disable each level by the following settings in your `hugo.toml`: - -- in-page search: `disableSearch=true` -- search popup: `disableSearchIndex=true` -- dedicated search page: `disableSearchPage=true` - -By default the following files will be created, relative to each languages home page but can be overwritten: - -- search popup: `searchindex.js`, configured by `searchIndexURL` -- dedicated search page: `search/index.html`, configured by `searchPageURL` - -{{% notice note %}} -You only need to reconfigure the file / page URLs if you have own content at those URLs in your project. Eg. this can happen if you set `uglyURLs=true` in your `hugo.toml` and defining a Markdown file `content/search.md`. - -To make sure, there is no duplicate content for any given URL of your project, run `hugo --printPathWarnings`. -{{% /notice %}} - -## Activate print support - -You can activate print support to add the capability to print whole chapters or even the complete site. Just add the `print` output format to your home, section and page in your `hugo.toml` as seen below: - -{{< multiconfig file=hugo >}} -[outputs] - home = ["html", "rss", "print"] - section = ["html", "rss", "print"] - page = ["html", "rss", "print"] -{{< /multiconfig >}} - -This will add a little printer icon in the top bar. It will switch the page to print preview when clicked. You can then send this page to the printer by using your browser's usual print functionality. - -{{% notice note %}} -The resulting URL will not be [configured ugly](https://gohugo.io/templates/output-formats/#configure-output-formats) in terms of [Hugo's URL handling](https://gohugo.io/content-management/urls/#ugly-urls) even if you've set `uglyURLs=true` in your `hugo.toml`. This is due to the fact that for one mime type only one suffix can be configured. - -Nevertheless, if you're unhappy with the resulting URLs you can manually redefine `outputFormats.print` in your own `hugo.toml` to your liking. -{{% /notice %}} - -## Home Button Configuration - -If the `disableLandingPageButton` option is set to `false`, a Home button will appear -on the left menu. It is an alternative for clicking on the logo. To edit the -appearance, you will have to configure the `landingPageName` for the defined languages: - -{{< multiconfig file=hugo >}} -[languages] -[languages.en] -[languages.en.params] -landingPageName = " Home" -[languages.pir] -[languages.pir.params] -landingPageName = " Arrr! Homme" -{{< /multiconfig >}} - -If this option is not configured for a specific language, they will get their default values: - -{{< multiconfig >}} -landingPageName = " Home" -{{< /multiconfig >}} - -The home button is going to look like this: - -![Default Home Button](home_button_defaults.png?width=18.75rem) - -## Social Media Meta Tags - -You can add social media meta tags for the [Open Graph](https://gohugo.io/templates/internal/#open-graph) protocol and [Twitter Cards](https://gohugo.io/templates/internal/#twitter-cards) to your site. These are configured as mentioned in the Hugo docs. - -## Change the Menu Width - -The menu width adjusts automatically for different screen sizes. - -| Name | Screen Width | Menu Width | -| ---- | ------------- | ---------- | -| S | < 48rem | 14.375rem | -| M | 48rem - 60rem | 14.375rem | -| L | >= 60rem | 18.75rem | - -The values for the screen width breakpoints aren't configurable. - -If you want to adjust the menu width you can define the following CSS variables in your `custom-header.html`. Note that `--MENU-WIDTH-S` applies to the menu flyout width in mobile mode for small screen sizes. - -````css -:root { - --MENU-WIDTH-S: 14.375rem; - --MENU-WIDTH-M: 14.375rem; - --MENU-WIDTH-L: 18.75rem; -} -```` - -## Change the Main Area's Max Width - -By default the main area width will only grow to a certain extent if more vertical screen space is available. This is done for readability purposes as long line are usually harder to read. - -If you are unhappy with the default, you can define the following CSS variable in your `custom-header.html` and set the value to your liking. If you want to use all available space, select a really big value like `1000rem`; - -````css -:root { - --MAIN-WIDTH-MAX: 80.25rem; -} -```` - -## Change Heading Anchor Behavior - -Each heading may have an anchor link that is displayed when the heading is hovered. - -The behavior what should happen if the anchor icon is clicked is configurable in your `hugo.toml`. By default all options are activated. If you deactivate all options, no link will be shown on hover. - -{{< multiconfig file=hugo >}} -[params] -disableAnchorCopy = false -disableAnchorScrolling = false -{{< /multiconfig >}} - -### `disableAnchorCopy` - -If set to `true`, this disables the copying of anchor links to the clipboard. - -### `disableAnchorScrolling` - -If set to `true`, this disables the scrolling to the beginning of the heading when clicked. - -## Own Shortcodes with JavaScript Dependencies - -Certain shortcodes make use of additional dependencies like JavaScript and CSS files. The theme only loads these dependencies if the shortcode is used. To do so correctly the theme adds management code in various files. - -You can you use this mechanism in your own shortcodes. Say you want to add a shortcode `myshortcode` that also requires the `jquery` JavaScript library. - -1. Write the shortcode file `layouts/shortcodes/myshortcode.html` and add the following line - - ````go {title="layouts/shortcodes/myshortcode.html"} - {{- .Page.Store.Set "hasMyShortcode" true }} - ```` - -1. Add the following snippet to your `hugo.toml` - - {{< multiconfig file=hugo >}} - [params.relearn.dependencies] - [params.relearn.dependencies.myshortcode] - name = "MyShortcode" - {{< /multiconfig >}} - -1. Add the dependency loader file `layouts/partials/dependencies/myshortcode.html`. The loader file will be called from multiple locations inside of the theme with the parameter `page` containing the current [page](https://gohugo.io/methods/page/) variable and `location` with one of the currently defined locations - - * `header`: if called at the end of the HTML `head` element - * `footer`: if called at the end of the HTML `body` element - - ````go {title="layouts/partials/dependencies/myshortcode.html"} - {{- if eq .location "footer" }} - - {{- end }} - ```` - -Character casing is relevant! - -- the `name` setting in your `hugo.toml` must match the key (that needs to be prefixed with a `has`) you used for the store in your `layouts/shortcodes/myshortcode.html`. -- the key on `params.relearn.dependencies` in your `hugo.toml` must match the base file name of your loader file. - -See the `math`, `mermaid` and `openapi` shortcodes for examples. - -{{% notice note %}} -If you are really into customization of the theme and want to use the dependency loader for your own locations, you can do this by simply calling it from inside of your overriden partials - -````go -{{- partial "dependencies.gotmpl" (dict "page" . "location" "mylocation") }} -```` - -{{% /notice %}} - -## Output Formats - -Certain parts of the theme can be changed for support of your own [output formats](https://gohugo.io/templates/output-formats/). Eg. if you define a new output format `PLAINTEXT` in your `hugo.toml`, you can add a file `layouts/partials/header.plaintext.html` to change the way, the page header should look like for that output format. - -## React to Variant Switches in JavaScript - -Once a color variant is fully loaded, either initially or by switching the color variant manually with the variant selector, the custom event `themeVariantLoaded` on the `document` will be dispatched. You can add an event listener and react to changes. - -````javascript -document.addEventListener( 'themeVariantLoaded', function( e ){ - console.log( e.detail.variant ); // `relearn-light` -}); -```` - -## Partials - -The Relearn theme has been built to be as configurable as possible by defining multiple [partials](https://gohugo.io/templates/partials/) - -In `themes/hugo-theme-relearn/layouts/partials/`, you will find all the partials defined for this theme. If you need to overwrite something, don't change the code directly. Instead [follow this page](https://gohugo.io/themes/customizing/). You'd create a new partial in the `layouts/partials` directory of your local project. This partial will have the priority. - -This theme defines the following partials : - -- `header.html`: the header of the page. See [output-formats](#output-formats) -- `footer.html`: the footer of the page. See [output-formats](#output-formats) -- `body.html`: the body of the page. The body may contain of one or many articles. See [output-formats](#output-formats) -- `article.html`: the output for a single article, can contain elements around your content. See [output-formats](#output-formats) -- `menu.html`: left menu. _Not meant to be overwritten_ -- `search.html`: search box. _Not meant to be overwritten_ -- `custom-header.html`: custom headers in page. Meant to be overwritten when adding CSS imports. Don't forget to include `style` HTML tag directive in your file. -- `custom-footer.html`: custom footer in page. Meant to be overwritten when adding JavaScript. Don't forget to include `javascript` HTML tag directive in your file. -- `favicon.html`: the favicon -- `heading.html`: side-wide configuration to change the pages title headings. -- `heading-pre.html`: side-wide configuration to prepend to pages title headings. If you override this, it is your responsibility to take the page's `headingPre` setting into account. -- `heading-post.html`: side-wide configuration to append to pages title headings. If you override this, it is your responsibility to take the page's `headingPost` setting into account. -- `logo.html`: the logo, on top left hand corner -- `meta.html`: HTML meta tags, if you want to change default behavior -- `menu-pre.html`: side-wide configuration to prepend to menu items. If you override this, it is your responsibility to take the page's `menuPre` setting into account. -- `menu-post.html`: side-wide configuration to append to menu items. If you override this, it is your responsibility to take the page's `menuPost` setting into account. -- `menu-footer.html`: footer of the left menu -- `toc.html`: table of contents -- `content.html`: the content page itself. This can be overridden if you want to display page's meta data above or below the content. -- `content-header.html`: header above the title, has a default implementation but you can overwrite it if you don't like it. -- `content-footer.html`: footer below the content, has a default implementation but you can overwrite it if you don't like it. diff --git a/exampleSite/content/configuration/customization/_index.pir.md b/exampleSite/content/configuration/customization/_index.pir.md deleted file mode 100644 index c4c0478d7a..0000000000 --- a/exampleSite/content/configuration/customization/_index.pir.md +++ /dev/null @@ -1,5 +0,0 @@ -+++ -title = "Customizat'n" -weight = 1 -+++ -{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/generator/_index.pir.md b/exampleSite/content/configuration/generator/_index.pir.md deleted file mode 100644 index 77722c9581..0000000000 --- a/exampleSite/content/configuration/generator/_index.pir.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -categories = "theming" -title = "Stylesheet Generrrat'r" -weight = 6 -+++ -{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/i18n/_index.en.md b/exampleSite/content/configuration/i18n/_index.en.md deleted file mode 100644 index 9b762db023..0000000000 --- a/exampleSite/content/configuration/i18n/_index.en.md +++ /dev/null @@ -1,102 +0,0 @@ -+++ -linktitle = "Multilingual" -title = "Multilingual and i18n" -weight = 4 -+++ - -The Relearn theme is fully compatible with Hugo multilingual mode. - -- Available languages: Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Turkish, Vietnamese. Feel free to contribute! -- Full support for languages written right to left -- Automatic menu generation from multilingual content -- In-browser language switching - -![I18n menu](i18n-menu.gif?width=18.75rem) - -## Basic configuration - -After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your `hugo.toml` file. - -For example with current English and Piratized English website. - -{{% notice note %}} -Make sure your default language is defined as the first one in the `[languages]` array, as the theme needs to make assumptions on it -{{% /notice %}} - -{{< multiconfig file=hugo >}} -defaultContentLanguage = "en" - -[languages] -[languages.en] -title = "Hugo Relearn Theme" -weight = 1 -languageName = "English" - -[languages.pir] -title = "Cap'n Hugo Relearrrn Theme" -weight = 2 -languageName = "Arrr! Pirrrates" -{{< /multiconfig >}} - -Then, for each new page, append the _id_ of the language to the file. - -- Single file `my-page.md` is split in two files: - - in English: `my-page.md` - - in Piratized English: `my-page.pir.md` -- Single file `_index.md` is split in two files: - - in English: `_index.md` - - in Piratized English: `_index.pir.md` - -{{% notice info %}} -Be aware that only translated pages are displayed in menu. It's not replaced with default language content. -{{% /notice %}} - -{{% notice tip %}} -Use [slug](https://gohugo.io/content-management/multilingual/#translate-your-content) frontmatter parameter to translate urls too. -{{% /notice %}} - -## Search - -In case each page's content is written in one single language only, the above configuration will already configure the site's search functionality correctly. - -{{% notice warning %}} -Although the theme supports a wide variety of supported languages, the site's search via the [Lunr](https://lunrjs.com) search library does not. -You'll see error reports in your browsers console log for each unsupported language. Currently unsupported are: - -- Czech -- Indonesian -- Polish -- Swahili -{{% /notice %}} - -### Search with mixed language support - -In case your page's content contains text in multiple languages (e.g. you are writing a Russian documentation for your english API), you can add those languages to your `hugo.toml` to broaden search. - -{{< multiconfig file=hugo >}} -[params] - additionalContentLanguage = [ "en" ] -{{< /multiconfig >}} - -As this is an array, you can add multiple additional languages. - -{{% notice note %}} -Keep in mind that the language code required here, is the base language code. E.g. if you have additional content in `zh-CN`, you have to add just `zh` to this parameter. -{{% /notice %}} - -## Overwrite translation strings - -Translations strings are used for common default values used in the theme (_Edit_ button, _Search placeholder_ and so on). Translations are available in English and Piratized English but you may use another language or want to override default values. - -To override these values, create a new file in your local i18n directory `i18n/.toml` and inspire yourself from the theme `themes/hugo-theme-relearn/i18n/en.toml` - -## Disable language switching - -Switching the language in the browser is a great feature, but for some reasons you may want to disable it. - -Just set `disableLanguageSwitchingButton=true` in your `hugo.toml` - -{{< multiconfig file=hugo >}} -[params] - disableLanguageSwitchingButton = true -{{< /multiconfig >}} diff --git a/exampleSite/content/configuration/i18n/_index.pir.md b/exampleSite/content/configuration/i18n/_index.pir.md deleted file mode 100644 index 343e4e69c1..0000000000 --- a/exampleSite/content/configuration/i18n/_index.pir.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -linktitle = "Multilingual" -title = "Multilingual an' i18n" -weight = 4 -+++ -{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/i18n/i18n-menu.gif b/exampleSite/content/configuration/i18n/i18n-menu.gif deleted file mode 100644 index 58121debfabc439723f47089a8c11071b9480e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76204 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

YXp4x?uVnfk* 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 SB7g&(v=zT_(*E5T*!~B2+!W^k diff --git a/exampleSite/content/configuration/menushortcuts.pir.md b/exampleSite/content/configuration/menushortcuts.pir.md deleted file mode 100644 index 88d4d0d58d..0000000000 --- a/exampleSite/content/configuration/menushortcuts.pir.md +++ /dev/null @@ -1,5 +0,0 @@ -+++ -title = "Menu Shorrrtcuts" -weight = 5 -+++ -{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/modifications/_index.en.md b/exampleSite/content/configuration/modifications/_index.en.md new file mode 100644 index 0000000000..bfb7e90fef --- /dev/null +++ b/exampleSite/content/configuration/modifications/_index.en.md @@ -0,0 +1,8 @@ ++++ +alwaysopen = false +description = "Edit files for advanced configuration" +title = "File Modifications" +weight = 5 ++++ + +{{% children containerstyle="div" style="h2" description=true %}} diff --git a/exampleSite/content/configuration/modifications/_index.pir.md b/exampleSite/content/configuration/modifications/_index.pir.md new file mode 100644 index 0000000000..b1a31bdc91 --- /dev/null +++ b/exampleSite/content/configuration/modifications/_index.pir.md @@ -0,0 +1,7 @@ ++++ +alwaysopen = false +description = "Edit files for advanced configuration" +title = "File Modifications" +weight = 5 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/modifications/dependencies/_index.en.md b/exampleSite/content/configuration/modifications/dependencies/_index.en.md new file mode 100644 index 0000000000..148912db8d --- /dev/null +++ b/exampleSite/content/configuration/modifications/dependencies/_index.en.md @@ -0,0 +1,68 @@ ++++ +description = "Add 3rd-party dependencies to your site" +title = "Extending Client Code" +weight = 3 ++++ + +## Adding JavaScript or Stylesheets Unconditionally + +If you simply want to add additional JavaScript files or CSS stylesheets on every page of your site, you can do so by either adding them in your `layouts/partials/custom-header.html` or `layouts/partials/custom-footer.html` partial. + +Sometimes this just bloats up your site when only in a few cases those files are really needed. See the [next section](#own-shortcodes-with-javascript-dependencies), on how to conditionally add those dependencies. + +## Own Shortcodes with JavaScript Dependencies + +Certain shortcodes make use of additional dependencies like JavaScript and CSS files. The theme only loads these dependencies if the shortcode is used. To do so correctly the theme adds management code in various files. + +You can you use this mechanism in your own shortcodes. Say you want to add a shortcode `myshortcode` that also requires the `jquery` JavaScript library. + +1. Write the shortcode file `layouts/shortcodes/myshortcode.html` and add the following line + + ````go {title="layouts/shortcodes/myshortcode.html"} + {{- .Page.Store.Set "hasMyShortcode" true }} + ```` + +1. Add the following snippet to your `hugo.toml` + + {{< multiconfig file=hugo >}} + [params.relearn.dependencies] + [params.relearn.dependencies.myshortcode] + name = "MyShortcode" + {{< /multiconfig >}} + +1. Add the dependency loader file `layouts/partials/dependencies/myshortcode.html`. The loader file will be called from multiple locations inside of the theme with the parameter `page` containing the current [page](https://gohugo.io/methods/page/) variable and `location` with one of the currently defined locations + + * `header`: if called at the end of the HTML `head` element + * `footer`: if called at the end of the HTML `body` element + + ````go {title="layouts/partials/dependencies/myshortcode.html"} + {{- if eq .location "footer" }} + + {{- end }} + ```` + +Character casing is relevant! + +- the `name` setting in your `hugo.toml` must match the key (that needs to be prefixed with a `has`) you used for the store in your `layouts/shortcodes/myshortcode.html`. +- the key on `params.relearn.dependencies` in your `hugo.toml` must match the base file name of your loader file. + +See the `math`, `mermaid` and `openapi` shortcodes for examples. + +{{% notice note %}} +If you are really into customization of the theme and want to use the dependency loader for your own locations, you can do this by simply calling it from inside of your overriden partials + +````go +{{- partial "dependencies.gotmpl" (dict "page" . "location" "mylocation") }} +```` + +{{% /notice %}} + +## React to Variant Switches in JavaScript + +Once a color variant is fully loaded, either initially or by switching the color variant manually with the variant selector, the custom event `themeVariantLoaded` on the `document` will be dispatched. You can add an event listener and react to changes. + +````javascript +document.addEventListener( 'themeVariantLoaded', function( e ){ + console.log( e.detail.variant ); // `relearn-light` +}); +```` diff --git a/exampleSite/content/configuration/modifications/dependencies/_index.pir.md b/exampleSite/content/configuration/modifications/dependencies/_index.pir.md new file mode 100644 index 0000000000..26db1ecf02 --- /dev/null +++ b/exampleSite/content/configuration/modifications/dependencies/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Add 3rd-party dependencies to your site" +title = "Extending Client Code" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/modifications/outputformats/_index.en.md b/exampleSite/content/configuration/modifications/outputformats/_index.en.md new file mode 100644 index 0000000000..d1946ff30e --- /dev/null +++ b/exampleSite/content/configuration/modifications/outputformats/_index.en.md @@ -0,0 +1,24 @@ ++++ +description = "Adding Custom Output Formats" +title = "Custom Output Formats" +weight = 4 ++++ + +Besides the `print` output format supoorted by the theme, you can write your own [output formats](https://gohugo.io/templates/output-formats/). + +## From Scratch + +Suppoe you want to add a new output format `myformat` that outputs HTML. You want to ignore everything the theme provides and implement the whole format by yourself. + +For that, add a file `layouts/_default/baseof.myformat.html` and implement everything from scratch. + +## Using the Theme's Frame + +If you want to keep the general framework and want to change only aspects of it, you can override some of following files + +- `layouts/_default/views/article.html` - how one page content, including the title heading should be displayed +- `layouts/_default/views/body.html` - how the body of the page should be composed; usually you either call `bodys/single.html` to show a single page's content or `bodys/tree.html` to show the page's content and the content of every subpages recursivley +- `layouts/_default/views/menu.html` - how the sidebar menu should be assembled +- `layouts/_default/views/storeOutputFormat.html` - this stores the name of the output format in a variable to later be used by the framework; this makes it possible to write CSS specific to your output format + +For an live example, see the implementations for the shipped `print` output format, that overrides [`layouts/_default/views/body.print.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/_default/views/body.print.html), [`layouts/_default/views/menu.print.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/_default/views/menu.print.html) and [`layouts/_default/views/storeOutputFormat.print.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/_default/views/storeOutputFormat.print.html). diff --git a/exampleSite/content/configuration/modifications/outputformats/_index.pir.md b/exampleSite/content/configuration/modifications/outputformats/_index.pir.md new file mode 100644 index 0000000000..6f0c627712 --- /dev/null +++ b/exampleSite/content/configuration/modifications/outputformats/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Adding Custom Output Formats" +title = "Custom Output Formats" +weight = 4 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/modifications/partials/index.en.md b/exampleSite/content/configuration/modifications/partials/index.en.md new file mode 100644 index 0000000000..e1c4c40581 --- /dev/null +++ b/exampleSite/content/configuration/modifications/partials/index.en.md @@ -0,0 +1,45 @@ ++++ +description = "Modifying partials to your needs" +title = "Partials" +weight = 2 ++++ + +## Customizable Partials + +The Relearn theme has been built to be as configurable as possible by defining multiple partials that can be overridden by you to customize the theme. + +As a rule of thumb, the less code a partial of the theme contains, the less likely you will have trouble updating the theme to a future version. + +Following is a list of partials that are save to be overridden + +- `layouts/partials/content.html`: the content of a page itself, can be overridden if you want to display page's meta data above or below the content + +- `layouts/partials/content-header.html`: header above the title, has a default implementation to display the tags taxonomy but you can override it if you don't like it + +- `layouts/partials/content-footer.html`: footer below the content, has a default implementation to display author information, modification dates and category taxonomy but you can override it if you don't like it + +- `layouts/partials/custom-header.html`: custom headers in page; meant to be overridden when adding CSS imports; don't forget to include `style` HTML tag directive in your file + +- `layouts/partials/custom-footer.html`: custom footer in page; meant to be overridden when adding JavaScript; don't forget to include `javascript` HTML tag directive in your file + +- `layouts/partials/favicon.html`: the favicon; definitely meant to be overridden + +- `layouts/partials/heading.html`: the pages title headings + +- `layouts/partials/heading-pre.html`: prepend something to pages title headings; if you override this, it is your responsibility to take the page's `headingPre` setting into account + +- `layouts/partials/heading-post.html`: append something to pages title headings; if you override this, it is your responsibility to take the page's `headingPost` setting into account + +- `layouts/partials/logo.html`: the logo on the top left corner; definitely meant to be overridden + +- `layouts/partials/menu-pre.html`: prepend something to a menu item; if you override this, it is your responsibility to take the page's `menuPre` setting into account + +- `layouts/partials/menu-post.html`: append something to a menu item; if you override this, it is your responsibility to take the page's `menuPost` setting into account + +- `layouts/partials/menu-footer.html`: footer of the left menu + +You may override other partials from the directory `themes/hugo-relearn-themes/` besides `themes/hugo-relearn-themes/layouts/partials/_relearn`. Just be aware that this may become a hassle with future updates. + +## Usable Partials + +You may use other partials from the directory `themes/hugo-relearn-themes/` besides the ones contained in `themes/hugo-relearn-themes/layouts/partials/_relearn`. Just be aware that using other partials besides [the ones mentioned above](#customizable-partials) may become a hassle with future updates. diff --git a/exampleSite/content/configuration/modifications/partials/index.pir.md b/exampleSite/content/configuration/modifications/partials/index.pir.md new file mode 100644 index 0000000000..3f6ad42fe1 --- /dev/null +++ b/exampleSite/content/configuration/modifications/partials/index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Modifying partials to your needs" +title = "Partials" +weight = 2 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/topbar/_index.en.md b/exampleSite/content/configuration/modifications/topbar/_index.en.md similarity index 96% rename from exampleSite/content/configuration/topbar/_index.en.md rename to exampleSite/content/configuration/modifications/topbar/_index.en.md index b8c7c08330..d69b771412 100644 --- a/exampleSite/content/configuration/topbar/_index.en.md +++ b/exampleSite/content/configuration/modifications/topbar/_index.en.md @@ -1,13 +1,14 @@ +++ +description = "How to extend the topbar" title = "Topbar Modification" -weight = 3 +weight = 1 +++ -The theme comes with a reasonably configured topbar. +The theme comes with a reasonably configured topbar. You can learn how to [configure the defaults in this section](configuration/appearance/topbar). ![Topbar on mobile devices](topbar-closed.png) -Nevertheless, your requirements may differ from this configuration. Luckily the theme got you covered as the themebar, its buttons and the functionality behind these buttons is fully configurable by you. +Nevertheless, your requirements may differ from this configuration. Luckily the theme got you covered as the topbar, its buttons and the functionality behind these buttons is fully configurable by you. {{% notice tip %}} All mentioned file names below can be clicked and show you the implementation for a better understanding. @@ -32,7 +33,7 @@ The theme ships with the following predefined buttons (from left to right in the - {{% button style="transparent" icon="bars" %}}{{% /button %}} [**sidebar**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/sidebar.html): opens the sidebar flyout if in mobile layout - {{% button style="transparent" icon="list-alt" %}}{{% /button %}} [**toc**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/toc.html): opens the table of contents in an overlay - {{% button style="transparent" icon="pen" %}}{{% /button %}} [**edit**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/edit.html): browses to the editable page if the `editURL` [parameter is set](configuration/options) -- {{% button style="transparent" icon="print" %}}{{% /button %}} [**print**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/print.html): browses to the chapters printable page if [print support](configuration/customization#activate-print-support) was activated +- {{% button style="transparent" icon="print" %}}{{% /button %}} [**print**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/print.html): browses to the chapters printable page if [print support](configuration/appearance/topbar/#print-support) was activated - {{% button style="transparent" icon="chevron-left" %}}{{% /button %}} [**prev**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/prev.html): browses to the previous page if there is one - {{% button style="transparent" icon="chevron-right" %}}{{% /button %}} [**next**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/next.html): browses to the next page if there is one - {{% button style="transparent" icon="ellipsis-v" %}}{{% /button %}} [**more**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/more.html): opens the overlay for the _more_ area diff --git a/exampleSite/content/configuration/topbar/_index.pir.md b/exampleSite/content/configuration/modifications/topbar/_index.pir.md similarity index 51% rename from exampleSite/content/configuration/topbar/_index.pir.md rename to exampleSite/content/configuration/modifications/topbar/_index.pir.md index 703715f687..9692da65ab 100644 --- a/exampleSite/content/configuration/topbar/_index.pir.md +++ b/exampleSite/content/configuration/modifications/topbar/_index.pir.md @@ -1,5 +1,6 @@ +++ +description = "How to extend the topbar" title = "Topbarrr Modificat'n" -weight = 3 +weight = 1 +++ {{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/topbar/topbar-areas.png b/exampleSite/content/configuration/modifications/topbar/topbar-areas.png similarity index 100% rename from exampleSite/content/configuration/topbar/topbar-areas.png rename to exampleSite/content/configuration/modifications/topbar/topbar-areas.png diff --git a/exampleSite/content/configuration/topbar/topbar-closed.png b/exampleSite/content/configuration/modifications/topbar/topbar-closed.png similarity index 100% rename from exampleSite/content/configuration/topbar/topbar-closed.png rename to exampleSite/content/configuration/modifications/topbar/topbar-closed.png diff --git a/exampleSite/content/configuration/options/_index.en.md b/exampleSite/content/configuration/options/_index.en.md index b22f5d7aa3..3faa320e81 100644 --- a/exampleSite/content/configuration/options/_index.en.md +++ b/exampleSite/content/configuration/options/_index.en.md @@ -1,17 +1,18 @@ +++ -tags = ["config"] +description = "All configuration options of the Relearn theme" +tags = ["reference"] title = "Options Reference" -weight = 7 +weight = 6 +++ -On top of [Hugo's global configuration options](https://gohugo.io/overview/configuration/), the Relearn theme lets you define further options unique to the theme in your `hugo.toml`. +On top of [Hugo's global configuration options](https://gohugo.io/overview/configuration/), you can set further options unique to the theme in your `hugo.toml`. -Note that some of these options are explained in detail in other sections of this documentation. +This is the complete list of theme options. Note that all these options are explained in detail in other sections of this documentation. + +The values shown here, reflect the options active in this documentation. The default values can be taken from the [annotated example](#annotated-config-options) below. ## All config options -The values reflect the options active in this documentation. The defaults can be taken from the [annotated example](#annotated-config-options) below. - {{< multiconfig file=hugo >}} [params] {{% include "config/_default/params.toml" %}} diff --git a/exampleSite/content/configuration/options/_index.pir.md b/exampleSite/content/configuration/options/_index.pir.md index 7be7e2bfa4..8bf57ec948 100644 --- a/exampleSite/content/configuration/options/_index.pir.md +++ b/exampleSite/content/configuration/options/_index.pir.md @@ -1,6 +1,7 @@ +++ -tags = ["config"] +description = "All configuration options of the Relearn theme" +tags = ["reference"] title = "Options Reference" -weight = 7 +weight = 6 +++ {{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/sidebar/_index.en.md b/exampleSite/content/configuration/sidebar/_index.en.md new file mode 100644 index 0000000000..d77fc5fc6b --- /dev/null +++ b/exampleSite/content/configuration/sidebar/_index.en.md @@ -0,0 +1,8 @@ ++++ +alwaysopen = false +description = "Configure the sidebar" +title = "Sidebar" +weight = 3 ++++ + +{{% children containerstyle="div" style="h2" description=true %}} diff --git a/exampleSite/content/configuration/sidebar/_index.pir.md b/exampleSite/content/configuration/sidebar/_index.pir.md new file mode 100644 index 0000000000..031ed39fc9 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/_index.pir.md @@ -0,0 +1,7 @@ ++++ +alwaysopen = false +description = "Configure the sidebar" +title = "Sidebar" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/sidebar/headerfooter/_index.en.md b/exampleSite/content/configuration/sidebar/headerfooter/_index.en.md new file mode 100644 index 0000000000..f188ef350c --- /dev/null +++ b/exampleSite/content/configuration/sidebar/headerfooter/_index.en.md @@ -0,0 +1,40 @@ ++++ +description = "Configure the header and footer of the sidebar" +title = "Header & Footer" +weight = 2 ++++ + +## Home Button Configuration + +If `disableLandingPageButton=true`, the Home button will be hidden on the left menu. + +If you display the Home button, it is an alternative for clicking on the logo. To edit its logo or text, you will have to configure the `landingPageName` for the defined languages + +{{< multiconfig file=hugo >}} +[languages] +[languages.en] +[languages.en.params] +landingPageName = " Home" +[languages.pir] +[languages.pir.params] +landingPageName = " Arrr! Homme" +{{< /multiconfig >}} + +If this option is not configured for a specific language, they will get their default values of + +{{< multiconfig >}} +[params] +landingPageName = " Home" +{{< /multiconfig >}} + +The home button is going to look like this: + +![Default Home Button](home_button_defaults.png?width=18.75rem) + +## History + +Set `params.showVisitedLinks=true` to show checkmarks for visited pages of the main menu. This also causes the display of the `Clear History` entry in the lower part of the menu to remove all checkmarks. The checkmarks will also been removed if you regenerate your site as the used ids are not stable. + +## Footer + +You can change the menu footer by overriding the partial `layouts/partials/menu-footer.html`. See the [Partials section](configuration/modifications/partials) for more customization options. diff --git a/exampleSite/content/configuration/sidebar/headerfooter/_index.pir.md b/exampleSite/content/configuration/sidebar/headerfooter/_index.pir.md new file mode 100644 index 0000000000..1b3be39f8b --- /dev/null +++ b/exampleSite/content/configuration/sidebar/headerfooter/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Configure the header and footer of the sidebar" +title = "Header & Footer" +weight = 2 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/customization/home_button_defaults.png b/exampleSite/content/configuration/sidebar/headerfooter/home_button_defaults.png similarity index 100% rename from exampleSite/content/configuration/customization/home_button_defaults.png rename to exampleSite/content/configuration/sidebar/headerfooter/home_button_defaults.png diff --git a/exampleSite/content/configuration/sidebar/navigationmenu/_index.en.md b/exampleSite/content/configuration/sidebar/navigationmenu/_index.en.md new file mode 100644 index 0000000000..aa39b22424 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/navigationmenu/_index.en.md @@ -0,0 +1,35 @@ ++++ +description = "Default behavior of the navigation menu" +title = "Navigation Menu" +weight = 4 ++++ + +The navigation menu is automatically generated from [your content files](content/organization). + +You can define certain settings globally in your `hugo.toml`. These are inherited to all pages as their default values but can be overwritten in their front matter. + +## Expand State of Nested Sections + +Use `params.alwaysopen` to set the initial expand state of submenus. This controls whether submenus will be expanded (`true`), or collapsed (`false`) in the menu. If not set, the first menu level is set to false, all others levels are set to true. + +This can be overridden individually for each page in its front matter. + +If the _displayed_ page has submenus, they will always been displayed expanded regardless of this option. + +## Expander for Nested Sections + +Set `params.collapsibleMenu=true` to show an expander for submenus. If set to `true`, submenus in the sidebar will be displayed as collapsible trees and a clickable expander is set in front of those entries. + +> [!WARNING] +> Setting this option to `true` may cause your build to significantly slow down and degrade built performance, depending on your machine and the amount of pages. +> +> We've observed this with 1000+ pages with a built time of around 2min. With 5000+ pages it was unbearable slow taking the built half an hour to complete. +> +> This is because for each page being added, every other pages needs to be visited once. This results in quadratic built time. In an already slow environment, adding just one single new page may result in unbearable built times afterwards. +> + +## Default Sort By + +Set `params.ordersectionsby` to set the sorting criterium of navigation menus. Defaults to `weight`. Menus can be ordered by `weight`, `title`, `linktitle`, `modifieddate`, `expirydate`, `publishdate`, `date`, `length` or `default` (adhering to Hugo's default sort order). + +This can be overridden individually for each page in its front matter. diff --git a/exampleSite/content/configuration/sidebar/navigationmenu/_index.pir.md b/exampleSite/content/configuration/sidebar/navigationmenu/_index.pir.md new file mode 100644 index 0000000000..b7371aabbe --- /dev/null +++ b/exampleSite/content/configuration/sidebar/navigationmenu/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Default behavior of the navigation menu" +title = "Navigation Menu" +weight = 4 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/sidebar/search/_index.en.md b/exampleSite/content/configuration/sidebar/search/_index.en.md new file mode 100644 index 0000000000..890cdf3834 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/search/_index.en.md @@ -0,0 +1,61 @@ ++++ +description = "Configure search and the search form" +title = "Search" +weight = 3 ++++ + +## Configure Search + +The theme comes with three levels of search, all provided through the search form in the menu + +- in-page search: a search term will be marked if found in the currently displayed page +- search popup: a popup will open during typing if the term is found in other pages of your site +- dedicated search page: you can access a dedicated search page by either clicking on the magnifier glass or by typing and pressing ENTER + +Each level depends on the previous level to be enabled, eg. the dedicated search page is only available, if you have search popup and in-page search enabled. If no search level is configured, the search form will not be displayed. + +By default all three levels are enabled. You can disable each level by the following settings in your `hugo.toml`: + +- in-page search: `disableSearch=true` +- search popup: `disableSearchIndex=true` +- dedicated search page: `disableSearchPage=true` + +By default the following files will be created, relative to each languages home page but can be overwritten: + +- search popup: `searchindex.js`, configured by `searchIndexURL` +- dedicated search page: `search/index.html`, configured by `searchPageURL` + +{{% notice note %}} +You only need to reconfigure the file / page URLs if you have own content at those URLs in your project. Eg. this can happen if you set `uglyURLs=true` in your `hugo.toml` and defining a Markdown file `content/search.md`. + +To make sure, there is no duplicate content for any given URL of your project, run `hugo --printPathWarnings`. +{{% /notice %}} + +## Supported Languages + +In case each page's content is written in one single language only, the above configuration will already configure the site's search functionality correctly. + +{{% notice warning %}} +Although the theme supports a wide variety of supported languages, the site's search via the [Lunr](https://lunrjs.com) search library does not. +You'll see error reports in your browsers console log for each unsupported language. Currently unsupported are: + +- Czech +- Indonesian +- Polish +- Swahili +{{% /notice %}} + +### Search with Mixed Language Support + +In case your page's content contains text in multiple languages (e.g. you are writing a Russian documentation for your english API), you can add those languages to your `hugo.toml` to broaden search. + +{{< multiconfig file=hugo >}} +[params] + additionalContentLanguage = [ "en" ] +{{< /multiconfig >}} + +As this is an array, you can add multiple additional languages. + +{{% notice note %}} +Keep in mind that the language code required here, is the base language code. E.g. if you have additional content in `zh-CN`, you have to add just `zh` to this parameter. +{{% /notice %}} diff --git a/exampleSite/content/configuration/sidebar/search/_index.pir.md b/exampleSite/content/configuration/sidebar/search/_index.pir.md new file mode 100644 index 0000000000..1053fcbc55 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/search/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Configure search and the search form" +title = "Search" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/menushortcuts.en.md b/exampleSite/content/configuration/sidebar/shortcutmenu/_index.en.md similarity index 78% rename from exampleSite/content/configuration/menushortcuts.en.md rename to exampleSite/content/configuration/sidebar/shortcutmenu/_index.en.md index 05c43fdba3..c1bde556a8 100644 --- a/exampleSite/content/configuration/menushortcuts.en.md +++ b/exampleSite/content/configuration/sidebar/shortcutmenu/_index.en.md @@ -1,15 +1,27 @@ +++ -title = "Menu Shortcuts" +description = "Add additional shortcut links to the sidebar" +title = "Shortcut Menu" weight = 5 +++ -You can define additional menu entries or shortcuts in the navigation menu without any link to content. +The sidebar contains the navigation menu of your content files but you can also add additional menu entries or shortcuts below the navigation menu. -## Basic configuration +You can read more about [Hugo's menu configuration](https://gohugo.io/content-management/menus/#define-in-site-configuration) in its documenation. -Edit the website configuration `hugo.toml` and add a `[[menu.shortcuts]]` entry for each link your want to add. +## Title -Example from the current website: +By default, the shortcut menu is preceded by a title. This title can be disabled by setting `params.disableShortcutsTitle=true`. However, if you want to keep the title but change its value, it can be overridden by changing your local i18n translation string configuration. + +For example, in your local `i18n/en.toml` file, add the following content + +````toml {title="en.toml"} +[Shortcuts-Title] +other = "Other Great Stuff" +```` + +## Single Language Example + +Edit the `hugo.toml` and add a `[[menu.shortcuts]]` entry for each link your want to add. {{< multiconfig file=hugo >}} [[menu.shortcuts]] @@ -40,24 +52,10 @@ url = "tags/" weight = 40 {{< /multiconfig >}} -By default, shortcuts are preceded by a title. This title can be disabled by setting `disableShortcutsTitle=true`. -However, if you want to keep the title but change its value, it can be overridden by changing your local i18n translation string configuration. - -For example, in your local `i18n/en.toml` file, add the following content - -````toml {title="en.toml"} -[Shortcuts-Title] -other = "" -```` - -Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo i18n translation strings](https://gohugo.io/content-management/multilingual/#translation-of-strings) - -## Configuration for Multilingual mode {#i18n} +## Multilingual Example When using a multilingual website, you can set different menus for each language. In the `hugo.toml` file, prefix your menu configuration by `Languages.`. -Example from the current website: - {{< multiconfig file=hugo >}} [languages] [languages.en] @@ -129,13 +127,11 @@ Example from the current website: weight = 40 {{< /multiconfig >}} -Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo multilingual menus](https://gohugo.io/content-management/multilingual/#menus) +## Shortcuts to Pages Inside of your Project -## Shortcuts to pages inside of your project +If you have shortcuts to pages inside of your project and you don't want them to show up in your navigation menu, you have two choices: -If you have shortcuts to pages inside of your project and you don't want them to show up in page menu section, you have two choices: - -1. Make the page file for the shortcut a [headless branch bundle](https://gohugo.io/content-management/page-bundles/#headless-bundle) (contained in its own subdirectory and called `_index.md`) and add the following frontmatter configuration to the file (see exampleSite's `content/showcase/_index.en.md`). This causes its content to **not** be ontained in the sitemap. +1. Make the page file for the shortcut a [headless branch bundle](https://gohugo.io/content-management/page-bundles/#headless-bundle) (contained in its own subdirectory and called `_index.md`) and add the following frontmatter configuration to the file (see exampleSite's `content/showcase/_index.en.md`). This causes its content to **not** be contained in the sitemap. {{< multiconfig fm=true >}} title = "Showcase" diff --git a/exampleSite/content/configuration/sidebar/shortcutmenu/_index.pir.md b/exampleSite/content/configuration/sidebar/shortcutmenu/_index.pir.md new file mode 100644 index 0000000000..cb00f50843 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/shortcutmenu/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Add additional shortcut links to the sidebar" +title = "Shorrrtcut Menu" +weight = 5 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/sidebar/width/_index.en.md b/exampleSite/content/configuration/sidebar/width/_index.en.md new file mode 100644 index 0000000000..c430d99d6a --- /dev/null +++ b/exampleSite/content/configuration/sidebar/width/_index.en.md @@ -0,0 +1,33 @@ ++++ +description = "Changing the width of the sidebar" +title = "Width" +weight = 1 ++++ + +The theme reacts to browser resizes and adjusts the menu width accordingly. + +If you dislike the default behavior, you can link to a CSS stylesheet or change it in your `layouts/partials/custom-header.html`. + +## Change the Menu Width + +The menu width adjusts automatically for different screen sizes for the following screen sizes: + +| Name | Screen Width | Menu Width | +| ---- | ------------- | ---------- | +| S | < 48rem | 14.375rem | +| M | 48rem - 60rem | 14.375rem | +| L | >= 60rem | 18.75rem | + +The values for the screen width breakpoints aren't configurable. + +If you want to adjust the menu width you can define the following CSS variables. Note that `--MENU-WIDTH-S` applies to the menu flyout width in mobile mode for small screen sizes. + +````html {title="layouts/partials/custom-header.html"} + +```` diff --git a/exampleSite/content/configuration/sidebar/width/_index.pir.md b/exampleSite/content/configuration/sidebar/width/_index.pir.md new file mode 100644 index 0000000000..ab5c06afd3 --- /dev/null +++ b/exampleSite/content/configuration/sidebar/width/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Changing the width of the sidebar" +title = "Width" +weight = 1 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/siteorganization/_index.en.md b/exampleSite/content/configuration/siteorganization/_index.en.md new file mode 100644 index 0000000000..3bc3978f90 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/_index.en.md @@ -0,0 +1,8 @@ ++++ +alwaysopen = false +description = "Get yourself familiar with the general structure of your website" +title = "Site Organization" +weight = 1 ++++ + +{{% children containerstyle="div" style="h2" description=true %}} diff --git a/exampleSite/content/configuration/siteorganization/_index.pir.md b/exampleSite/content/configuration/siteorganization/_index.pir.md new file mode 100644 index 0000000000..0a30a16483 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/_index.pir.md @@ -0,0 +1,7 @@ ++++ +alwaysopen = false +description = "Get yourself familiar with the general structure of your website" +title = "Site Organization" +weight = 1 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.en.md b/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.en.md new file mode 100644 index 0000000000..b6d7f9a327 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.en.md @@ -0,0 +1,58 @@ ++++ +description = "Options for specific deployment needs" +title = "Deployment Scenarios" +weight = 3 ++++ + +## Server Deployment + +If you have no further requirements to your server deployment, you can skip the following page and choose of the broad range of available [options in a standard Hugo installation](https://gohugo.io/content-management/urls/). + +If you have special requirements, the theme is capable of different scenarios, requiring the following mandatory settings in your `hugo.toml`. All settings not mentioned can be set to your liking. + +### Public Web Server from Root + +{{< multiconfig file=hugo >}} +baseURL = "https://example.com/" +{{< /multiconfig >}} + +### Public Web Server from Subdirectory + +{{< multiconfig file=hugo >}} +baseURL = "https://example.com/mysite/" +relativeURLs = false +{{< /multiconfig >}} + +### Private Web Server (LAN) + +The same settings as with any of the public web server usage scenarios or + +{{< multiconfig file=hugo >}} +baseURL = "/" +relativeURLs = true +{{< /multiconfig >}} + +### File System + +{{< multiconfig file=hugo >}} +baseURL = "/" +relativeURLs = true +{{< /multiconfig >}} + +> [!WARNING] +> Using a `baseURL` with a subdirectory and `relativeURLs=true` are mutually exclusive due to the fact, that [Hugo does not apply the `baseURL` correctly](https://github.com/gohugoio/hugo/issues/12130). +> +> If you need both, you have to generate your site twice but with different settings into separate directories. + +{{% notice note %}} +Sublemental pages (like `sitemap.xml`, `rss.xml`) and generated social media links inside of your pages will always be generated with absolute URLs and will not work if you set `relativeURLs=true`. +{{% /notice %}} + +## URL Management + +If you are using `uglyURLs=false` (Hugo's default), the theme will append an additional `index.html` to all page links to make your site be servable from the file system. If you don't care about the file system and only serve your page via a web server you can generate the links without this: + +{{< multiconfig file=hugo >}} +[params] + disableExplicitIndexURLs = true +{{< /multiconfig >}} diff --git a/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.pir.md b/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.pir.md new file mode 100644 index 0000000000..43642e67c6 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/deploymentscenarios/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Options for specific deployment needs" +title = "Deployment Scenarios" +weight = 3 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/siteorganization/multilingual/_index.en.md b/exampleSite/content/configuration/siteorganization/multilingual/_index.en.md new file mode 100644 index 0000000000..ee8f3f885d --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/multilingual/_index.en.md @@ -0,0 +1,92 @@ ++++ +description = "How to configure your site to be multilingual" +title = "Multilingual" +weight = 2 ++++ + +The Relearn theme is compatible with [Hugo's multilingual mode](https://gohugo.io/content-management/multilingual/). + +The theme supports a wide set of languages, also supporting languages written right to left. + +{{% expand "Supported languages" %}} +- Arabic +- Simplified Chinese +- Traditional Chinese +- Czech +- Dutch +- English +- Finnish +- French +- German +- Hindi +- Hungarian +- Indonesian +- Italian +- Japanese +- Korean +- Polish +- Portuguese +- Romanian +- Russian +- Spanish +- Swahili +- Turkish +- Vietnamese +{{% /expand %}} + +## Basic Configuration + +This example will show you, how to convert your site created in the [Getting Started](basics/quickstart) section to be multilingual using [translation by file name](https://gohugo.io/content-management/multilingual/#translation-by-file-name). You can also use [translation by content directory](https://gohugo.io/content-management/multilingual/#translation-by-content-directory), but this is out of the scope of this documentation. + +Define your languages in your `hugo.toml` file. For example with English and Piratish English website. + +{{< multiconfig file=hugo >}} +defaultContentLanguage = "en" + +[languages] +[languages.en] +title = "My Website" +weight = 1 +languageName = "English" + +[languages.pir] +title = "Arrr, my Website" +weight = 2 +languageName = "Pirrratish" +{{< /multiconfig >}} + +Then, for each new page, append the _id_ of the language to the file. + +````plaintext +├── content +│ ├── basics +│ │ ├── first-content +| | | ├── _index.en.md +| | | └── _index.pir.md +│ │ ├── second-content +| | | ├── _index.en.md +| | | └── _index.pir.md +│ │ ├── third-content.en.md +│ │ └── third-content.pir.md +│ ├── _index.en.md +│ └── _index.pir.md +├── themes +│ └── hugo-theme-relearn +│ └── ... +└── hugo.toml +```` + +## Configure Search + +You may want to take a look into [search configuration](configuration/sidebar/search/). It has some additional options for multilingual websites. + +## Disable Language Switching + +Switching the language in the browser is a great feature, but for some reasons you may want to disable it. + +Just set `params.disableLanguageSwitchingButton=true` in your `hugo.toml` + +{{< multiconfig file=hugo >}} +[params] + disableLanguageSwitchingButton = true +{{< /multiconfig >}} diff --git a/exampleSite/content/configuration/siteorganization/multilingual/_index.pir.md b/exampleSite/content/configuration/siteorganization/multilingual/_index.pir.md new file mode 100644 index 0000000000..d1155d84c9 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/multilingual/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "How to configure your site to be multilingual" +title = "Multilingual" +weight = 2 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/configuration/siteorganization/structure/_index.en.md b/exampleSite/content/configuration/siteorganization/structure/_index.en.md new file mode 100644 index 0000000000..308b6eca49 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/structure/_index.en.md @@ -0,0 +1,42 @@ ++++ +description = "Your site's directory structure" +title = "Basic Structure" +weight = 1 ++++ + +## Structure + +If you've followed the [Getting Started](basics/quickstart/) guide, you are resulting in a directory layout similar to this + +````plaintext +├── content +│ ├── basics +│ │ ├── first-content +| | | └── _index.md +│ │ ├── second-content +| | | └── _index.md +│ │ └── third-content.md +│ └── _index.md +├── themes +│ └── hugo-theme-relearn +│ └── ... +└── hugo.toml +```` + +Hugo creates a [union file system](https://gohugo.io/getting-started/directory-structure/#union-file-system), allowing you to mount two or more directories to the same location. + +By default, it overlays your root directory on top of the directory of the Relearn theme. Files contained in your root directory will replace files in the Relearn theme's directory of the same location. + +For example, the theme defines a file `themes/hugo-theme-relearn/layouts/partials/heading.html`, you can override it by defining your own file in `layouts/partials/heading.html`. + +This makes it easy to customize the theme without having to edit files inside of the `themes` directory and so making it easier for you in the future to update the theme to a newer version. + +> [!WARNING] +> If you are editing files inside the `themes/hugo-theme-relearn` directory, you're doing it wrong. +> +> See the [above paragraphs](#structure). + +> [!WARNING] +> If you have cloned the theme repository and start editing files for your site in this clone, you're doing it wrong. +> +> Follow the [Getting Started](basics/quickstart/) guide. diff --git a/exampleSite/content/configuration/siteorganization/structure/_index.pir.md b/exampleSite/content/configuration/siteorganization/structure/_index.pir.md new file mode 100644 index 0000000000..86c34876f1 --- /dev/null +++ b/exampleSite/content/configuration/siteorganization/structure/_index.pir.md @@ -0,0 +1,6 @@ ++++ +description = "Your site's directory structure" +title = "Basic Structure" +weight = 1 ++++ +{{< piratify >}} \ No newline at end of file diff --git a/exampleSite/content/content/frontmatter/frontmatter.toml b/exampleSite/content/content/frontmatter/frontmatter.toml index 2a564796b7..66e3098b6b 100644 --- a/exampleSite/content/content/frontmatter/frontmatter.toml +++ b/exampleSite/content/content/frontmatter/frontmatter.toml @@ -69,17 +69,17 @@ editURL = "" # Menu # These options modify the menu appearance. -# Prefix for the title in main menu. +# Prefix for the title in navigation menu. # Default: not set # The title of the page in the menu will be prefixed by this HTML content. menuPre = "" -# Suffix for the title in main menu. +# Suffix for the title in navigation menu. # Default: not set # The title of the page in the menu will be suffixed by this HTML content. menuPost = "" -# The order of main menu submenus. +# The order of navigation menu submenus. # Default: "weight" # Submenus can be ordered by "weight", "title", "linktitle", "modifieddate", # "expirydate", "publishdate", "date", "length" or "default" (adhering to @@ -106,7 +106,7 @@ collapsibleMenu = true #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Hidden pages # These options configure how hidden pages are treated. -# A page flagged as hidden, is only removed from the main menu if you are +# A page flagged as hidden, is only removed from the navigation menu if you are # currently not on this page or the hidden page is not part of current page's # ancestors. For all other functionality in Hugo a hidden page behaves like any # other page if not otherwise configured. diff --git a/exampleSite/content/shortcodes/highlight.en.md b/exampleSite/content/shortcodes/highlight.en.md index 49c2d534a9..1e66dfd016 100644 --- a/exampleSite/content/shortcodes/highlight.en.md +++ b/exampleSite/content/shortcodes/highlight.en.md @@ -94,7 +94,7 @@ Default values for extension options can be set via params settings in your `hug ### Global Configuration File -You can configure the color style used for code blocks in your [color variants stylesheet](configuration/branding#syntax-highlighting) file. +You can configure the color style used for code blocks in your [color variants stylesheet](configuration/appearance/branding#syntax-highlighting) file. #### Recommended Settings diff --git a/exampleSite/content/shortcodes/openapi/_index.en.md b/exampleSite/content/shortcodes/openapi/_index.en.md index 9cffe71341..ed899f9bc5 100644 --- a/exampleSite/content/shortcodes/openapi/_index.en.md +++ b/exampleSite/content/shortcodes/openapi/_index.en.md @@ -39,7 +39,7 @@ While the examples are using shortcodes with named parameter you are free to als {{% notice note %}} If you want to print out (or generate a PDF) from your OpenAPI documentation, don't initiate printing directly from the page because the elements are optimized for interactive usage in a browser. -Instead, open the [print preview](configuration/customization#activate-print-support) in your browser and initiate printing from that page. This page is optimized for reading and expands most of the available sections. +Instead, open the [print preview](configuration/appearance/topbar/#print-support) in your browser and initiate printing from that page. This page is optimized for reading and expands most of the available sections. {{% /notice %}} ## Example