]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Squashed 'docs/' changes from d1a251933..dc7a9ae12
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 10 Apr 2025 11:02:49 +0000 (13:02 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 10 Apr 2025 11:02:49 +0000 (13:02 +0200)
dc7a9ae12 content: Update JS options
07d3d8803 npm: Use tilde ranges for versions
e06362a13 Minor grammar fixes
c42db0838 content: Algolia DocSearch clarification
d67412b82 deps: Upgrade to TailwindCSS 4.1.0
da1fb12d3 theme: Update Lato font path for images.Text example
140fa3bb9 Update introduction.md
7b1fcca27 content: Fix links to embedded template source
908a55532 theme: Improve dark mode syntax highlighting background
d830e5962 Update XxHash.md
807be5dbf Update Defer.md
4b56693f6 content: Update GitHub Pages sample workflow
57b766fba Update TailwindCSS.md
64982ab6a Update TailwindCSS.md
1b6e879c6 Update TailwindCSS.md
e67cbcdd2 content: Add caching to the GitHub Pages workflow example
b7ca3b07c Update index.md
14e1a3977 Update XxHash.md
980f344ae Update XxHash.md
6b815f03e theme: Remove aria-label attribute from links
1c00bbc45 theme: Update npm dependencies
533149bf9 theme: Include section pages in related content
2b6bda6bd content: Fix typos
92ce95cbb content: Miscellaneous edits
f12936681 theme: Add a simple LRU cache for search
339ca3388 Fix the previous broken commit
8537e59e0 Make it into a non-link
e13f17d29 Add Algolia logo/link to the search listing dialog
d3e09e886 content: Fix typo
7217f64b6 content: Miscellaneous edits
51aa1ae73 content: Improve some examples
8ebaa53f9 theme: Adjust shortcodes
898870438 theme: Hide anchor until mouse-over
c933ea237 content: More front matter cleanup
f26ca047a content: Miscellaneous edits
e272b2039 theme: Fix inline partial refs
c540e6d29 content: Replace note shortcode calls with blockquote alerts
aef899bc5 theme: Add title and QR code when printing
bd46ef626 theme: Implement blockquote render hook
ddefbefaa content: Improve contributing page
f41d28ee1 content: Adjust usage of whitespace removal with action delimiters
03315336d theme: Use full title in related content sidebar
4f4076364 misc: Document the front matter fields used on this site
2f78d7632 misc: Fix gitignore file
7de6dbab3 content: Fix front matter for several function pages
5d3542ea6 config: Disable tags taxonomy
68bc28d67 content: Add linkTitle to shortcode pages
5f32c92ed theme: Restore deduplication logic for related items
a943a4bb8 theme: Implement related content tooling
fd628be6e content: Replace calls to the code shortcode with fenced code blocks
b23c9a583 content: Fix position of new-in badges
ec056f251 content: Fix typo
245351c84 theme: Adjust spacing in highlighting theme examples
2fcd21ee5 content: Remove "related" array from function and method pages
71d8426ee theme: Create code block render hook
4cdde6649 theme: Adjust number of news items to display
34ab45261 content: Miscellaneous edits
b6cae5cbc content: Consolidate configuration documentation
727ef6f66 theme: Fix overflow issue for wide tables
c4f759e01 Add es2024
93cce62c8 Update support list of more recent targets with js.Build / esbuild
974d0655f Update hosting-on-codeberg.md
b3f0ed9ce content: Add hosting instructions for Codeberg Pages
8217c0900 content: Correct the SourceHut repository URL
a8cf3d28f content: Add hosting instructions for SourceHut Pages
8c059cbe1 theme: Use content adapter for news section
03938c600 Remove some old new-in
5c50a75e8 content: Fix typo
5cf89f2f6 theme: Re-enable banner gtag outbound link tracking
3c555d5f8 One more copy button
94bce999a Add some copy buttons
9e1cc0c2b Update PortableText.md
dd26ac49f Document transform.PortableText
5f632ab32 netlify: Hugo 0.145.0
59e057bb4 Update index.md
d07e07d6c Remove some unused home page front matter
d482657b7 Add footnote about alias to the build front matter key
f0629b77c content: Fix typo
d91c4cccf theme: Fix news items URLs
ca931cd1f theme: Restore RSS feed for news section
e6b870bc9 theme: Adjust copy-to-clipboard button
071851431 Update netlify.toml
e68431034 theme: Format layouts
aa3cd839a theme: Format assets
22ad3eee3 theme: Add some more space on the right for copy buttons
f4a19083a netlify: Hugo 0.144.1
974cb8795 theme: Remove Internet Explorer configs (#2929)
4a23a1f41 content: Fix typos
d49f15d03 theme: Get the scrollspy back working
720c7ff67 config: Evict getresource cache hourly
1f62ca97e theme: Hide the Turbo progress bar
f6449ace3 Move the dark class up to the html element
074cd1a07 content: Miscellaneous edits
e098a7716 content: Miscellaneous edits
8e1e104aa content: Updates for v0.144.0
18e1aa916 theme: Add anchor links via JS
ac3b5505c Close new-in
bfa4db6b8 netlify: Hugo 0.144.0
fd6e7feee Regen CLI docs
da9d1218a Regen docs helper
5de494ded Merge branch 'tempv0.144.0'
f683e6469 theme: Minor improvements to base template
ef8bf89d8 resources/page: Revise the new contentbasename permalinks tokens
901adb07b resources/page: Add :contentbasename and :contentbasenameorslug permalink tokens
0fca8ef25 all: Change shortcode usage and design to prevent invalid HTML
c41d76613 Update RegularPagesRecursive.md
e93574748 content: Correct return type for strings.Split
3d504abba Revert "content: Add ids to the Netlify steps"
c08c8e15e content: Add ids to the Netlify steps
5a3b470a2 theme: "move" the id from content to article
b878613aa theme: Add page kind as a CSS class to body
269657e8f content: Fix formatting error
664f6c92f config: Change image cache location
fa6b719b1 theme: Reduce ToC to level 2-4
bc16341ca theme: Render mathematical markup with transform.ToMath
14bf9dc70 theme: Add aria-label attribute to search fields
ed42af5b3 theme: Adjust search field and search activation
f042e4970 dev: Add prettier-plugin-void-html
f6ec83533 content: Fix inline shortcode example
0a74210e2 theme: Remove readfile shortcode
334ca06ac theme: Fix some dark mode accessibility as reported by Axe core
02626ff92 theme: aria-lbabel => aria-label
227b76ab7 Add Prettier and config
43ab22428 content: Bump minimum required Go version to 1.23.0
03e54683f modules: Add GOAUTH to module config
9f06a3b9c js/esbuild: Add drop option
ddcd99369 Merge commit 'a024bc7d76fcc5e49e8210f9b0896db9ef21861a'
733731253 helpers: Add Chroma styles to docs.yaml

git-subtree-dir: docs
git-subtree-split: dc7a9ae127717cde17840496cb0287f481c5f0ee

1055 files changed:
.cspell.json
.gitignore
.markdownlint.yaml
.prettierignore [new file with mode: 0644]
.prettierrc [new file with mode: 0644]
LICENSE.md
README.md
archetypes/default.md [new file with mode: 0644]
archetypes/functions.md
archetypes/glossary.md
archetypes/methods.md
archetypes/news.md [new file with mode: 0644]
archetypes/news/index.md [deleted file]
archetypes/showcase/bio.md [deleted file]
archetypes/showcase/featured.png [deleted file]
archetypes/showcase/index.md [deleted file]
assets/css/components/all.css
assets/css/components/chroma_dark.css
assets/css/components/content.css
assets/css/components/view-transitions.css
assets/css/styles.css
assets/js/alpinejs/data/explorer.js
assets/js/alpinejs/data/navbar.js
assets/js/alpinejs/data/search.js
assets/js/alpinejs/data/toc.js
assets/js/alpinejs/stores/nav.js
assets/js/helpers/index.js
assets/js/helpers/lrucache.js [new file with mode: 0644]
content/en/_common/_index.md
content/en/_common/content-format-table.md [new file with mode: 0644]
content/en/_common/filter-sort-group.md [new file with mode: 0644]
content/en/_common/functions/fmt/format-string.md [new file with mode: 0644]
content/en/_common/functions/go-html-template-package.md [new file with mode: 0644]
content/en/_common/functions/go-template/text-template.md [new file with mode: 0644]
content/en/_common/functions/images/apply-image-filter.md [new file with mode: 0644]
content/en/_common/functions/js/options.md [new file with mode: 0644]
content/en/_common/functions/locales.md [new file with mode: 0644]
content/en/_common/functions/regular-expressions.md [new file with mode: 0644]
content/en/_common/functions/truthy-falsy.md [new file with mode: 0644]
content/en/_common/functions/urls/anchorize-vs-urlize.md [new file with mode: 0644]
content/en/_common/glob-patterns.md [new file with mode: 0644]
content/en/_common/gomodules-info.md [new file with mode: 0644]
content/en/_common/installation/01-editions.md [new file with mode: 0644]
content/en/_common/installation/02-prerequisites.md [new file with mode: 0644]
content/en/_common/installation/03-prebuilt-binaries.md [new file with mode: 0644]
content/en/_common/installation/04-build-from-source.md [new file with mode: 0644]
content/en/_common/installation/homebrew.md [new file with mode: 0644]
content/en/_common/menu-entries/pre-and-post.md [new file with mode: 0644]
content/en/_common/menu-entry-properties.md [new file with mode: 0644]
content/en/_common/methods/page/next-and-prev.md [new file with mode: 0644]
content/en/_common/methods/page/nextinsection-and-previnsection.md [new file with mode: 0644]
content/en/_common/methods/page/output-format-methods.md [new file with mode: 0644]
content/en/_common/methods/pages/group-sort-order.md [new file with mode: 0644]
content/en/_common/methods/pages/next-and-prev.md [new file with mode: 0644]
content/en/_common/methods/resource/global-page-remote-resources.md [new file with mode: 0644]
content/en/_common/methods/resource/processing-spec.md [new file with mode: 0644]
content/en/_common/methods/taxonomy/get-a-taxonomy-object.md [new file with mode: 0644]
content/en/_common/methods/taxonomy/ordered-taxonomy-element-methods.md [new file with mode: 0644]
content/en/_common/parsable-date-time-strings.md [new file with mode: 0644]
content/en/_common/permalink-tokens.md [new file with mode: 0644]
content/en/_common/ref-and-relref-error-handling.md [new file with mode: 0644]
content/en/_common/ref-and-relref-options.md [new file with mode: 0644]
content/en/_common/render-hooks/pageinner.md [new file with mode: 0644]
content/en/_common/store-methods.md
content/en/_common/syntax-highlighting-options.md [new file with mode: 0644]
content/en/_common/time-layout-string.md [new file with mode: 0644]
content/en/_index.md
content/en/about/_index.md
content/en/about/features.md
content/en/about/introduction.md
content/en/about/license.md
content/en/about/privacy.md [deleted file]
content/en/about/security.md
content/en/commands/_index.md
content/en/commands/hugo.md
content/en/configuration/_index.md [new file with mode: 0644]
content/en/configuration/all.md [new file with mode: 0644]
content/en/configuration/build.md [new file with mode: 0644]
content/en/configuration/caches.md [new file with mode: 0644]
content/en/configuration/cascade.md [new file with mode: 0644]
content/en/configuration/content-types.md [new file with mode: 0644]
content/en/configuration/deployment.md [new file with mode: 0644]
content/en/configuration/front-matter.md [new file with mode: 0644]
content/en/configuration/http-cache.md [new file with mode: 0644]
content/en/configuration/imaging.md [new file with mode: 0644]
content/en/configuration/introduction.md [new file with mode: 0644]
content/en/configuration/languages.md [new file with mode: 0644]
content/en/configuration/markup.md [new file with mode: 0644]
content/en/configuration/media-types.md [new file with mode: 0644]
content/en/configuration/menus.md [new file with mode: 0644]
content/en/configuration/minify.md [new file with mode: 0644]
content/en/configuration/module.md [new file with mode: 0644]
content/en/configuration/output-formats.md [new file with mode: 0644]
content/en/configuration/outputs.md [new file with mode: 0644]
content/en/configuration/page.md [new file with mode: 0644]
content/en/configuration/pagination.md [new file with mode: 0644]
content/en/configuration/params.md [new file with mode: 0644]
content/en/configuration/permalinks.md [new file with mode: 0644]
content/en/configuration/privacy.md [new file with mode: 0644]
content/en/configuration/related-content.md [new file with mode: 0644]
content/en/configuration/security.md [new file with mode: 0644]
content/en/configuration/segments.md [new file with mode: 0644]
content/en/configuration/server.md [new file with mode: 0644]
content/en/configuration/services.md [new file with mode: 0644]
content/en/configuration/sitemap.md [new file with mode: 0644]
content/en/configuration/taxonomies.md [new file with mode: 0644]
content/en/configuration/ugly-urls.md [new file with mode: 0644]
content/en/content-management/_common/_index.md [deleted file]
content/en/content-management/_common/page-kinds.md [deleted file]
content/en/content-management/_index.md
content/en/content-management/archetypes.md
content/en/content-management/build-options.md
content/en/content-management/comments.md
content/en/content-management/content-adapters.md
content/en/content-management/cross-references.md [deleted file]
content/en/content-management/data-sources.md
content/en/content-management/diagrams.md
content/en/content-management/formats.md
content/en/content-management/front-matter.md
content/en/content-management/image-processing/index.md
content/en/content-management/markdown-attributes.md
content/en/content-management/mathematics.md
content/en/content-management/menus.md
content/en/content-management/multilingual.md
content/en/content-management/organization/1-featured-content-bundles.png [deleted file]
content/en/content-management/organization/index.md
content/en/content-management/page-bundles.md
content/en/content-management/page-resources.md
content/en/content-management/related-content.md [new file with mode: 0644]
content/en/content-management/related.md [deleted file]
content/en/content-management/sections.md
content/en/content-management/shortcodes.md
content/en/content-management/summaries.md
content/en/content-management/syntax-highlighting.md
content/en/content-management/taxonomies.md
content/en/content-management/types.md
content/en/content-management/urls.md
content/en/contribute/_index.md
content/en/contribute/development.md
content/en/contribute/documentation.md
content/en/contribute/themes.md
content/en/documentation.md
content/en/functions/_common/_index.md [deleted file]
content/en/functions/_common/glob-patterns.md [deleted file]
content/en/functions/_common/go-html-template-package.md [deleted file]
content/en/functions/_common/highlighting-options.md [deleted file]
content/en/functions/_common/locales.md [deleted file]
content/en/functions/_common/regular-expressions.md [deleted file]
content/en/functions/_common/time-layout-string.md [deleted file]
content/en/functions/_index.md
content/en/functions/cast/ToFloat.md
content/en/functions/cast/ToInt.md
content/en/functions/cast/ToString.md
content/en/functions/cast/_index.md
content/en/functions/collections/After.md
content/en/functions/collections/Append.md
content/en/functions/collections/Apply.md
content/en/functions/collections/Complement.md
content/en/functions/collections/Delimit.md
content/en/functions/collections/Dictionary.md
content/en/functions/collections/First.md
content/en/functions/collections/Group.md
content/en/functions/collections/In.md
content/en/functions/collections/IndexFunction.md
content/en/functions/collections/Intersect.md
content/en/functions/collections/IsSet.md
content/en/functions/collections/KeyVals.md
content/en/functions/collections/Last.md
content/en/functions/collections/Merge.md
content/en/functions/collections/NewScratch.md
content/en/functions/collections/Querify.md
content/en/functions/collections/Reverse.md
content/en/functions/collections/Seq.md
content/en/functions/collections/Shuffle.md
content/en/functions/collections/Slice.md
content/en/functions/collections/Sort.md
content/en/functions/collections/SymDiff.md
content/en/functions/collections/Union.md
content/en/functions/collections/Uniq.md
content/en/functions/collections/Where.md
content/en/functions/collections/_index.md
content/en/functions/compare/Conditional.md
content/en/functions/compare/Default.md
content/en/functions/compare/Eq.md
content/en/functions/compare/Ge.md
content/en/functions/compare/Gt.md
content/en/functions/compare/Le.md
content/en/functions/compare/Lt.md
content/en/functions/compare/Ne.md
content/en/functions/compare/_index.md
content/en/functions/crypto/FNV32a.md
content/en/functions/crypto/HMAC.md
content/en/functions/crypto/MD5.md
content/en/functions/crypto/SHA1.md
content/en/functions/crypto/SHA256.md
content/en/functions/crypto/_index.md
content/en/functions/css/PostCSS.md
content/en/functions/css/Sass.md
content/en/functions/css/TailwindCSS.md
content/en/functions/css/_index.md
content/en/functions/data/GetCSV.md
content/en/functions/data/GetJSON.md
content/en/functions/data/_index.md
content/en/functions/debug/Dump.md
content/en/functions/debug/Timer.md
content/en/functions/debug/_index.md
content/en/functions/diagrams/Goat.md
content/en/functions/diagrams/_index.md
content/en/functions/encoding/Base64Decode.md
content/en/functions/encoding/Base64Encode.md
content/en/functions/encoding/Jsonify.md
content/en/functions/encoding/_index.md
content/en/functions/fmt/Errorf.md
content/en/functions/fmt/Erroridf.md
content/en/functions/fmt/Print.md
content/en/functions/fmt/Printf.md
content/en/functions/fmt/Println.md
content/en/functions/fmt/Warnf.md
content/en/functions/fmt/Warnidf.md
content/en/functions/fmt/_common/_index.md [deleted file]
content/en/functions/fmt/_common/fmt-layout.md [deleted file]
content/en/functions/fmt/_index.md
content/en/functions/global/_index.md
content/en/functions/global/page.md
content/en/functions/global/site.md
content/en/functions/go-template/_common/_index.md [deleted file]
content/en/functions/go-template/_common/text-template.md [deleted file]
content/en/functions/go-template/_common/truthy-falsy.md [deleted file]
content/en/functions/go-template/_index.md
content/en/functions/go-template/and.md
content/en/functions/go-template/block.md
content/en/functions/go-template/break.md
content/en/functions/go-template/continue.md
content/en/functions/go-template/define.md
content/en/functions/go-template/else.md
content/en/functions/go-template/end.md
content/en/functions/go-template/if.md
content/en/functions/go-template/len.md
content/en/functions/go-template/not.md
content/en/functions/go-template/or.md
content/en/functions/go-template/range.md
content/en/functions/go-template/return.md
content/en/functions/go-template/template.md
content/en/functions/go-template/try.md
content/en/functions/go-template/urlquery.md
content/en/functions/go-template/with.md
content/en/functions/hash/FNV32a.md
content/en/functions/hash/XxHash.md
content/en/functions/hash/_index.md
content/en/functions/hugo/BuildDate.md
content/en/functions/hugo/CommitHash.md
content/en/functions/hugo/Deps.md
content/en/functions/hugo/Environment.md
content/en/functions/hugo/Generator.md
content/en/functions/hugo/GoVersion.md
content/en/functions/hugo/IsDevelopment.md
content/en/functions/hugo/IsExtended.md
content/en/functions/hugo/IsMultihost.md
content/en/functions/hugo/IsMultilingual.md
content/en/functions/hugo/IsProduction.md
content/en/functions/hugo/IsServer.md
content/en/functions/hugo/Store.md
content/en/functions/hugo/Version.md
content/en/functions/hugo/WorkingDir.md
content/en/functions/hugo/_index.md
content/en/functions/images/AutoOrient.md
content/en/functions/images/Brightness.md
content/en/functions/images/ColorBalance.md
content/en/functions/images/Colorize.md
content/en/functions/images/Config.md
content/en/functions/images/Contrast.md
content/en/functions/images/Dither.md
content/en/functions/images/Filter.md
content/en/functions/images/Gamma.md
content/en/functions/images/GaussianBlur.md
content/en/functions/images/Grayscale.md
content/en/functions/images/Hue.md
content/en/functions/images/Invert.md
content/en/functions/images/Mask.md
content/en/functions/images/Opacity.md
content/en/functions/images/Overlay.md
content/en/functions/images/Padding.md
content/en/functions/images/Pixelate.md
content/en/functions/images/Process.md
content/en/functions/images/QR.md
content/en/functions/images/Saturation.md
content/en/functions/images/Sepia.md
content/en/functions/images/Sigmoid.md
content/en/functions/images/Text.md
content/en/functions/images/UnsharpMask.md
content/en/functions/images/_common/_index.md [deleted file]
content/en/functions/images/_common/apply-image-filter.md [deleted file]
content/en/functions/images/_index.md
content/en/functions/inflect/Humanize.md
content/en/functions/inflect/Pluralize.md
content/en/functions/inflect/Singularize.md
content/en/functions/inflect/_index.md
content/en/functions/js/Babel.md
content/en/functions/js/Batch.md
content/en/functions/js/Build.md
content/en/functions/js/_common/_index.md [deleted file]
content/en/functions/js/_common/options.md [deleted file]
content/en/functions/js/_index.md
content/en/functions/lang/FormatAccounting.md
content/en/functions/lang/FormatCurrency.md
content/en/functions/lang/FormatNumber.md
content/en/functions/lang/FormatNumberCustom.md
content/en/functions/lang/FormatPercent.md
content/en/functions/lang/Merge.md
content/en/functions/lang/Translate.md
content/en/functions/lang/_index.md
content/en/functions/math/Abs.md
content/en/functions/math/Acos.md
content/en/functions/math/Add.md
content/en/functions/math/Asin.md
content/en/functions/math/Atan.md
content/en/functions/math/Atan2.md
content/en/functions/math/Ceil.md
content/en/functions/math/Cos.md
content/en/functions/math/Counter.md
content/en/functions/math/Div.md
content/en/functions/math/Floor.md
content/en/functions/math/Log.md
content/en/functions/math/Max.md
content/en/functions/math/Min.md
content/en/functions/math/Mod.md
content/en/functions/math/ModBool.md
content/en/functions/math/Mul.md
content/en/functions/math/Pi.md
content/en/functions/math/Pow.md
content/en/functions/math/Product.md
content/en/functions/math/Rand.md
content/en/functions/math/Round.md
content/en/functions/math/Sin.md
content/en/functions/math/Sqrt.md
content/en/functions/math/Sub.md
content/en/functions/math/Sum.md
content/en/functions/math/Tan.md
content/en/functions/math/ToDegrees.md
content/en/functions/math/ToRadians.md
content/en/functions/math/_index.md
content/en/functions/openapi3/Unmarshal.md
content/en/functions/openapi3/_index.md
content/en/functions/os/FileExists.md
content/en/functions/os/Getenv.md
content/en/functions/os/ReadDir.md
content/en/functions/os/ReadFile.md
content/en/functions/os/Stat.md
content/en/functions/os/_index.md
content/en/functions/partials/Include.md
content/en/functions/partials/IncludeCached.md
content/en/functions/partials/_index.md
content/en/functions/path/Base.md
content/en/functions/path/BaseName.md
content/en/functions/path/Clean.md
content/en/functions/path/Dir.md
content/en/functions/path/Ext.md
content/en/functions/path/Join.md
content/en/functions/path/Split.md
content/en/functions/path/_index.md
content/en/functions/reflect/IsMap.md
content/en/functions/reflect/IsSlice.md
content/en/functions/reflect/_index.md
content/en/functions/resources/Babel.md
content/en/functions/resources/ByType.md
content/en/functions/resources/Concat.md
content/en/functions/resources/Copy.md
content/en/functions/resources/ExecuteAsTemplate.md
content/en/functions/resources/Fingerprint.md
content/en/functions/resources/FromString.md
content/en/functions/resources/Get.md
content/en/functions/resources/GetMatch.md
content/en/functions/resources/GetRemote.md
content/en/functions/resources/Match.md
content/en/functions/resources/Minify.md
content/en/functions/resources/PostCSS.md
content/en/functions/resources/PostProcess.md
content/en/functions/resources/ToCSS.md
content/en/functions/resources/_common/_index.md [deleted file]
content/en/functions/resources/_common/postcss-windows-warning.md [deleted file]
content/en/functions/resources/_index.md
content/en/functions/safe/CSS.md
content/en/functions/safe/HTML.md
content/en/functions/safe/HTMLAttr.md
content/en/functions/safe/JS.md
content/en/functions/safe/JSStr.md
content/en/functions/safe/URL.md
content/en/functions/safe/_index.md
content/en/functions/strings/Chomp.md
content/en/functions/strings/Contains.md
content/en/functions/strings/ContainsAny.md
content/en/functions/strings/ContainsNonSpace.md
content/en/functions/strings/Count.md
content/en/functions/strings/CountRunes.md
content/en/functions/strings/CountWords.md
content/en/functions/strings/Diff/index.md
content/en/functions/strings/FindRESubmatch.md
content/en/functions/strings/FindRe.md
content/en/functions/strings/FirstUpper.md
content/en/functions/strings/HasPrefix.md
content/en/functions/strings/HasSuffix.md
content/en/functions/strings/Repeat.md
content/en/functions/strings/Replace.md
content/en/functions/strings/ReplaceRE.md
content/en/functions/strings/RuneCount.md
content/en/functions/strings/SliceString.md
content/en/functions/strings/Split.md
content/en/functions/strings/Substr.md
content/en/functions/strings/Title.md
content/en/functions/strings/ToLower.md
content/en/functions/strings/ToUpper.md
content/en/functions/strings/Trim.md
content/en/functions/strings/TrimLeft.md
content/en/functions/strings/TrimPrefix.md
content/en/functions/strings/TrimRight.md
content/en/functions/strings/TrimSpace.md
content/en/functions/strings/TrimSuffix.md
content/en/functions/strings/Truncate.md
content/en/functions/strings/_index.md
content/en/functions/templates/Defer.md
content/en/functions/templates/Exists.md
content/en/functions/templates/_index.md
content/en/functions/time/AsTime.md
content/en/functions/time/Duration.md
content/en/functions/time/Format.md
content/en/functions/time/Now.md
content/en/functions/time/ParseDuration.md
content/en/functions/time/_common/_index.md [deleted file]
content/en/functions/time/_common/parsable-date-time-strings.md [deleted file]
content/en/functions/time/_index.md
content/en/functions/transform/CanHighlight.md
content/en/functions/transform/Emojify.md
content/en/functions/transform/HTMLEscape.md
content/en/functions/transform/HTMLUnescape.md
content/en/functions/transform/Highlight.md
content/en/functions/transform/HighlightCodeBlock.md
content/en/functions/transform/Markdownify.md
content/en/functions/transform/Plainify.md
content/en/functions/transform/PortableText.md [new file with mode: 0644]
content/en/functions/transform/Remarshal.md
content/en/functions/transform/ToMath.md
content/en/functions/transform/Unmarshal.md
content/en/functions/transform/XMLEscape.md
content/en/functions/transform/_index.md
content/en/functions/urls/AbsLangURL.md
content/en/functions/urls/AbsURL.md
content/en/functions/urls/Anchorize.md
content/en/functions/urls/JoinPath.md
content/en/functions/urls/Parse.md
content/en/functions/urls/Ref.md
content/en/functions/urls/RelLangURL.md
content/en/functions/urls/RelRef.md
content/en/functions/urls/RelURL.md
content/en/functions/urls/URLize.md
content/en/functions/urls/_common/_index.md [deleted file]
content/en/functions/urls/_common/anchorize-vs-urlize.md [deleted file]
content/en/functions/urls/_index.md
content/en/getting-started/_index.md
content/en/getting-started/configuration-build.md [deleted file]
content/en/getting-started/configuration-markup.md [deleted file]
content/en/getting-started/configuration.md [deleted file]
content/en/getting-started/directory-structure.md
content/en/getting-started/external-learning-resources/index.md
content/en/getting-started/quick-start.md
content/en/getting-started/usage.md
content/en/host-and-deploy/_index.md [new file with mode: 0644]
content/en/host-and-deploy/deploy-with-hugo-deploy.md [new file with mode: 0644]
content/en/host-and-deploy/deploy-with-rclone.md [new file with mode: 0644]
content/en/host-and-deploy/deploy-with-rsync.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-21yunbox.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-05.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-06.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-07.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-08.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-09.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/amplify-step-11.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-aws-amplify/index.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-azure-static-web-apps.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-cloudflare-pages.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-codeberg-pages.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-firebase.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/gh-pages-1.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/gh-pages-2.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/gh-pages-3.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/gh-pages-4.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/gh-pages-5.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-github-pages/index.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-gitlab-pages.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-keycdn/index.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-keycdn/keycdn-pull-zone.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-keycdn/secret-api-key.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-keycdn/secret-zone-id.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/index.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-02.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-03.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-04.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-05.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-06.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-07.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-08.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-09.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-10.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-11.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-12.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-13.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-render.md [new file with mode: 0644]
content/en/host-and-deploy/host-on-sourcehut-pages.md [new file with mode: 0644]
content/en/hosting-and-deployment/_index.md [deleted file]
content/en/hosting-and-deployment/deployment-with-rclone.md [deleted file]
content/en/hosting-and-deployment/deployment-with-rsync.md [deleted file]
content/en/hosting-and-deployment/hosting-on-21yunbox.md [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-05.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-06.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-07.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-08.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-09.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-11.png [deleted file]
content/en/hosting-and-deployment/hosting-on-aws-amplify/index.md [deleted file]
content/en/hosting-and-deployment/hosting-on-azure-static-web-apps.md [deleted file]
content/en/hosting-and-deployment/hosting-on-cloudflare-pages.md [deleted file]
content/en/hosting-and-deployment/hosting-on-firebase.md [deleted file]
content/en/hosting-and-deployment/hosting-on-github/gh-pages-1.png [deleted file]
content/en/hosting-and-deployment/hosting-on-github/gh-pages-2.png [deleted file]
content/en/hosting-and-deployment/hosting-on-github/gh-pages-3.png [deleted file]
content/en/hosting-and-deployment/hosting-on-github/gh-pages-4.png [deleted file]
content/en/hosting-and-deployment/hosting-on-github/gh-pages-5.png [deleted file]
content/en/hosting-and-deployment/hosting-on-github/index.md [deleted file]
content/en/hosting-and-deployment/hosting-on-gitlab.md [deleted file]
content/en/hosting-and-deployment/hosting-on-keycdn/index.md [deleted file]
content/en/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png [deleted file]
content/en/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png [deleted file]
content/en/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/index.md [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-02.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-03.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-04.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-05.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-06.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-07.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-08.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-09.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-10.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-11.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-12.png [deleted file]
content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-13.png [deleted file]
content/en/hosting-and-deployment/hosting-on-render.md [deleted file]
content/en/hosting-and-deployment/hugo-deploy.md [deleted file]
content/en/hugo-modules/_index.md
content/en/hugo-modules/configuration.md [deleted file]
content/en/hugo-modules/introduction.md [new file with mode: 0644]
content/en/hugo-modules/theme-components.md
content/en/hugo-modules/use-modules.md
content/en/hugo-pipes/_index.md
content/en/hugo-pipes/bundling.md
content/en/hugo-pipes/fingerprint.md
content/en/hugo-pipes/introduction.md
content/en/hugo-pipes/js.md
content/en/hugo-pipes/minification.md
content/en/hugo-pipes/postcss.md
content/en/hugo-pipes/postprocess.md
content/en/hugo-pipes/resource-from-string.md
content/en/hugo-pipes/resource-from-template.md
content/en/hugo-pipes/transpile-sass-to-css.md
content/en/installation/_common/01-editions.md [deleted file]
content/en/installation/_common/02-prerequisites.md [deleted file]
content/en/installation/_common/03-prebuilt-binaries.md [deleted file]
content/en/installation/_common/04-build-from-source.md [deleted file]
content/en/installation/_common/_index.md [deleted file]
content/en/installation/_common/homebrew.md [deleted file]
content/en/installation/_index.md
content/en/installation/bsd.md
content/en/installation/linux.md
content/en/installation/macos.md
content/en/installation/windows.md
content/en/methods/_index.md
content/en/methods/duration/Abs.md
content/en/methods/duration/Hours.md
content/en/methods/duration/Microseconds.md
content/en/methods/duration/Milliseconds.md
content/en/methods/duration/Minutes.md
content/en/methods/duration/Nanoseconds.md
content/en/methods/duration/Round.md
content/en/methods/duration/Seconds.md
content/en/methods/duration/Truncate.md
content/en/methods/duration/_index.md
content/en/methods/menu-entry/Children.md
content/en/methods/menu-entry/HasChildren.md
content/en/methods/menu-entry/Identifier.md
content/en/methods/menu-entry/KeyName.md
content/en/methods/menu-entry/Menu.md
content/en/methods/menu-entry/Name.md
content/en/methods/menu-entry/Page.md
content/en/methods/menu-entry/PageRef.md
content/en/methods/menu-entry/Params.md
content/en/methods/menu-entry/Parent.md
content/en/methods/menu-entry/Post.md
content/en/methods/menu-entry/Pre.md
content/en/methods/menu-entry/Title.md
content/en/methods/menu-entry/URL.md
content/en/methods/menu-entry/Weight.md
content/en/methods/menu-entry/_common/_index.md [deleted file]
content/en/methods/menu-entry/_common/pre-post.md [deleted file]
content/en/methods/menu-entry/_index.md
content/en/methods/menu/ByName.md
content/en/methods/menu/ByWeight.md
content/en/methods/menu/Limit.md
content/en/methods/menu/Reverse.md
content/en/methods/menu/_index.md
content/en/methods/page/Aliases.md
content/en/methods/page/AllTranslations.md
content/en/methods/page/AlternativeOutputFormats.md
content/en/methods/page/Ancestors.md
content/en/methods/page/BundleType.md
content/en/methods/page/CodeOwners.md
content/en/methods/page/Content.md
content/en/methods/page/ContentWithoutSummary.md
content/en/methods/page/CurrentSection.md
content/en/methods/page/Data.md
content/en/methods/page/Date.md
content/en/methods/page/Description.md
content/en/methods/page/Draft.md
content/en/methods/page/Eq.md
content/en/methods/page/ExpiryDate.md
content/en/methods/page/File.md
content/en/methods/page/FirstSection.md
content/en/methods/page/Fragments.md
content/en/methods/page/FuzzyWordCount.md
content/en/methods/page/GetPage.md
content/en/methods/page/GetTerms.md
content/en/methods/page/GitInfo.md
content/en/methods/page/HasMenuCurrent.md
content/en/methods/page/HasShortcode.md
content/en/methods/page/HeadingsFiltered.md
content/en/methods/page/InSection.md
content/en/methods/page/IsAncestor.md
content/en/methods/page/IsDescendant.md
content/en/methods/page/IsHome.md
content/en/methods/page/IsMenuCurrent.md
content/en/methods/page/IsNode.md
content/en/methods/page/IsPage.md
content/en/methods/page/IsSection.md
content/en/methods/page/IsTranslated.md
content/en/methods/page/Keywords.md
content/en/methods/page/Kind.md
content/en/methods/page/Language.md
content/en/methods/page/Lastmod.md
content/en/methods/page/Layout.md
content/en/methods/page/Len.md
content/en/methods/page/LinkTitle.md
content/en/methods/page/Next.md
content/en/methods/page/NextInSection.md
content/en/methods/page/OutputFormats.md
content/en/methods/page/Page.md
content/en/methods/page/Pages.md
content/en/methods/page/Paginate.md
content/en/methods/page/Paginator.md
content/en/methods/page/Param.md
content/en/methods/page/Params.md
content/en/methods/page/Parent.md
content/en/methods/page/Path.md
content/en/methods/page/Permalink.md
content/en/methods/page/Plain.md
content/en/methods/page/PlainWords.md
content/en/methods/page/Prev.md
content/en/methods/page/PrevInSection.md
content/en/methods/page/PublishDate.md
content/en/methods/page/RawContent.md
content/en/methods/page/ReadingTime.md
content/en/methods/page/Ref.md
content/en/methods/page/RegularPages.md
content/en/methods/page/RegularPagesRecursive.md
content/en/methods/page/RelPermalink.md
content/en/methods/page/RelRef.md
content/en/methods/page/Render.md
content/en/methods/page/RenderShortcodes.md
content/en/methods/page/RenderString.md
content/en/methods/page/Resources.md
content/en/methods/page/Scratch.md
content/en/methods/page/Section.md
content/en/methods/page/Sections.md
content/en/methods/page/Site.md
content/en/methods/page/Sitemap.md
content/en/methods/page/Sites.md
content/en/methods/page/Slug.md
content/en/methods/page/Store.md
content/en/methods/page/Summary.md
content/en/methods/page/TableOfContents.md
content/en/methods/page/Title.md
content/en/methods/page/TranslationKey.md
content/en/methods/page/Translations.md
content/en/methods/page/Truncated.md
content/en/methods/page/Type.md
content/en/methods/page/Weight.md
content/en/methods/page/WordCount.md
content/en/methods/page/_common/_index.md [deleted file]
content/en/methods/page/_common/next-and-prev.md [deleted file]
content/en/methods/page/_common/nextinsection-and-previnsection.md [deleted file]
content/en/methods/page/_common/output-format-methods.md [deleted file]
content/en/methods/page/_index.md
content/en/methods/pager/First.md
content/en/methods/pager/HasNext.md
content/en/methods/pager/HasPrev.md
content/en/methods/pager/Last.md
content/en/methods/pager/Next.md
content/en/methods/pager/NumberOfElements.md
content/en/methods/pager/PageGroups.md
content/en/methods/pager/PageNumber.md
content/en/methods/pager/PageSize.md
content/en/methods/pager/PagerSize.md
content/en/methods/pager/Pagers.md
content/en/methods/pager/Pages.md
content/en/methods/pager/Prev.md
content/en/methods/pager/TotalNumberOfElements.md
content/en/methods/pager/TotalPages.md
content/en/methods/pager/URL.md
content/en/methods/pager/_index.md
content/en/methods/pages/ByDate.md
content/en/methods/pages/ByExpiryDate.md
content/en/methods/pages/ByLanguage.md
content/en/methods/pages/ByLastmod.md
content/en/methods/pages/ByLength.md
content/en/methods/pages/ByLinkTitle.md
content/en/methods/pages/ByParam.md
content/en/methods/pages/ByPublishDate.md
content/en/methods/pages/ByTitle.md
content/en/methods/pages/ByWeight.md
content/en/methods/pages/GroupBy.md
content/en/methods/pages/GroupByDate.md
content/en/methods/pages/GroupByExpiryDate.md
content/en/methods/pages/GroupByLastmod.md
content/en/methods/pages/GroupByParam.md
content/en/methods/pages/GroupByParamDate.md
content/en/methods/pages/GroupByPublishDate.md
content/en/methods/pages/Len.md
content/en/methods/pages/Limit.md
content/en/methods/pages/Next.md
content/en/methods/pages/Prev.md
content/en/methods/pages/Related.md
content/en/methods/pages/Reverse.md
content/en/methods/pages/_common/_index.md [deleted file]
content/en/methods/pages/_common/group-sort-order.md [deleted file]
content/en/methods/pages/_common/next-and-prev.md [deleted file]
content/en/methods/pages/_index.md
content/en/methods/resource/Colors.md
content/en/methods/resource/Content.md
content/en/methods/resource/Crop.md
content/en/methods/resource/Data.md
content/en/methods/resource/Err.md
content/en/methods/resource/Exif.md
content/en/methods/resource/Fill.md
content/en/methods/resource/Filter.md
content/en/methods/resource/Fit.md
content/en/methods/resource/Height.md
content/en/methods/resource/Key.md [deleted file]
content/en/methods/resource/MediaType.md
content/en/methods/resource/Name.md
content/en/methods/resource/Params.md
content/en/methods/resource/Permalink.md
content/en/methods/resource/Process.md
content/en/methods/resource/Publish.md
content/en/methods/resource/RelPermalink.md
content/en/methods/resource/Resize.md
content/en/methods/resource/ResourceType.md
content/en/methods/resource/Title.md
content/en/methods/resource/Width.md
content/en/methods/resource/_common/_index.md [deleted file]
content/en/methods/resource/_common/global-page-remote-resources.md [deleted file]
content/en/methods/resource/_common/processing-spec.md [deleted file]
content/en/methods/resource/_index.md
content/en/methods/shortcode/Get.md
content/en/methods/shortcode/Inner.md
content/en/methods/shortcode/InnerDeindent.md
content/en/methods/shortcode/IsNamedParams.md
content/en/methods/shortcode/Name.md
content/en/methods/shortcode/Ordinal.md
content/en/methods/shortcode/Page.md
content/en/methods/shortcode/Params.md
content/en/methods/shortcode/Parent.md
content/en/methods/shortcode/Position.md
content/en/methods/shortcode/Ref.md
content/en/methods/shortcode/RelRef.md
content/en/methods/shortcode/Scratch.md
content/en/methods/shortcode/Site.md
content/en/methods/shortcode/Store.md
content/en/methods/shortcode/_index.md
content/en/methods/site/AllPages.md
content/en/methods/site/BaseURL.md
content/en/methods/site/BuildDrafts.md
content/en/methods/site/Config.md
content/en/methods/site/Copyright.md
content/en/methods/site/Data.md
content/en/methods/site/DisqusShortname.md
content/en/methods/site/GetPage.md
content/en/methods/site/GoogleAnalytics.md
content/en/methods/site/Home.md
content/en/methods/site/IsDevelopment.md
content/en/methods/site/IsMultiLingual.md
content/en/methods/site/IsServer.md
content/en/methods/site/Language.md
content/en/methods/site/LanguagePrefix.md
content/en/methods/site/Languages.md
content/en/methods/site/LastChange.md
content/en/methods/site/Lastmod.md
content/en/methods/site/MainSections.md
content/en/methods/site/Menus.md
content/en/methods/site/Pages.md
content/en/methods/site/Param.md
content/en/methods/site/Params.md
content/en/methods/site/RegularPages.md
content/en/methods/site/Sections.md
content/en/methods/site/Sites.md
content/en/methods/site/Store.md
content/en/methods/site/Taxonomies.md
content/en/methods/site/Title.md
content/en/methods/site/_index.md
content/en/methods/taxonomy/Alphabetical.md
content/en/methods/taxonomy/ByCount.md
content/en/methods/taxonomy/Count.md
content/en/methods/taxonomy/Get.md
content/en/methods/taxonomy/Page.md
content/en/methods/taxonomy/_common/_index.md [deleted file]
content/en/methods/taxonomy/_common/get-a-taxonomy-object.md [deleted file]
content/en/methods/taxonomy/_common/ordered-taxonomy-element-methods.md [deleted file]
content/en/methods/taxonomy/_index.md
content/en/methods/time/Add.md
content/en/methods/time/AddDate.md
content/en/methods/time/After.md
content/en/methods/time/Before.md
content/en/methods/time/Day.md
content/en/methods/time/Equal.md
content/en/methods/time/Format.md
content/en/methods/time/Hour.md
content/en/methods/time/IsDST.md
content/en/methods/time/IsZero.md
content/en/methods/time/Local.md
content/en/methods/time/Minute.md
content/en/methods/time/Month.md
content/en/methods/time/Nanosecond.md
content/en/methods/time/Round.md
content/en/methods/time/Second.md
content/en/methods/time/Sub.md
content/en/methods/time/Truncate.md
content/en/methods/time/UTC.md
content/en/methods/time/Unix.md
content/en/methods/time/UnixMicro.md
content/en/methods/time/UnixMilli.md
content/en/methods/time/UnixNano.md
content/en/methods/time/Weekday.md
content/en/methods/time/Year.md
content/en/methods/time/YearDay.md
content/en/methods/time/_index.md
content/en/myshowcase/bio.md [deleted file]
content/en/myshowcase/featured.png [deleted file]
content/en/myshowcase/index.md [deleted file]
content/en/news/_content.gotmpl [new file with mode: 0644]
content/en/news/_index.md
content/en/quick-reference/_index.md
content/en/quick-reference/emojis.md
content/en/quick-reference/functions.md
content/en/quick-reference/glossary/_index.md
content/en/quick-reference/glossary/cicd.md [new file with mode: 0644]
content/en/quick-reference/glossary/cli.md
content/en/quick-reference/glossary/default-sort-order.md
content/en/quick-reference/glossary/environment.md
content/en/quick-reference/glossary/glob.md
content/en/quick-reference/glossary/interval.md
content/en/quick-reference/glossary/logical-path.md
content/en/quick-reference/glossary/markdown-attribute.md
content/en/quick-reference/glossary/media-type.md [new file with mode: 0644]
content/en/quick-reference/glossary/method.md
content/en/quick-reference/glossary/ordered-taxonomy.md
content/en/quick-reference/glossary/output-format.md
content/en/quick-reference/glossary/pipeline.md
content/en/quick-reference/glossary/primary-output-format.md [new file with mode: 0644]
content/en/quick-reference/glossary/regular-expression.md [new file with mode: 0644]
content/en/quick-reference/glossary/resource-type.md
content/en/quick-reference/glossary/resource.md
content/en/quick-reference/glossary/scratch-pad.md
content/en/quick-reference/glossary/shortcode.md
content/en/quick-reference/glossary/template-action.md
content/en/quick-reference/methods.md
content/en/quick-reference/page-collections.md
content/en/quick-reference/syntax-highlighting-styles.md [new file with mode: 0644]
content/en/render-hooks/_common/_index.md [deleted file]
content/en/render-hooks/_common/pageinner.md [deleted file]
content/en/render-hooks/_index.md
content/en/render-hooks/blockquotes.md
content/en/render-hooks/code-blocks.md
content/en/render-hooks/headings.md
content/en/render-hooks/images.md
content/en/render-hooks/introduction.md
content/en/render-hooks/links.md
content/en/render-hooks/passthrough.md
content/en/render-hooks/tables.md
content/en/shortcodes/_index.md
content/en/shortcodes/comment.md [deleted file]
content/en/shortcodes/details.md
content/en/shortcodes/figure.md
content/en/shortcodes/gist.md
content/en/shortcodes/highlight.md
content/en/shortcodes/instagram.md
content/en/shortcodes/param.md
content/en/shortcodes/qr.md
content/en/shortcodes/ref.md
content/en/shortcodes/relref.md
content/en/shortcodes/vimeo.md
content/en/shortcodes/x.md
content/en/shortcodes/youtube.md
content/en/showcase/1password-support/bio.md
content/en/showcase/1password-support/index.md
content/en/showcase/_index.md
content/en/showcase/_template/bio.md [new file with mode: 0644]
content/en/showcase/_template/featured.png [new file with mode: 0644]
content/en/showcase/_template/index.md [new file with mode: 0644]
content/en/showcase/alora-labs/index.md
content/en/showcase/ampio-help/bio.md
content/en/showcase/ampio-help/index.md
content/en/showcase/bypasscensorship/bio.md
content/en/showcase/bypasscensorship/index.md
content/en/showcase/digitalgov/bio.md
content/en/showcase/digitalgov/index.md
content/en/showcase/fireship/bio.md
content/en/showcase/fireship/index.md
content/en/showcase/forestry/bio.md
content/en/showcase/forestry/index.md
content/en/showcase/godot-tutorials/index.md
content/en/showcase/hapticmedia/index.md
content/en/showcase/hartwell-insurance/bio.md
content/en/showcase/hartwell-insurance/index.md
content/en/showcase/keycdn/index.md
content/en/showcase/letsencrypt/bio.md
content/en/showcase/letsencrypt/index.md
content/en/showcase/linode/bio.md
content/en/showcase/linode/index.md
content/en/showcase/overmindstudios/bio.md
content/en/showcase/overmindstudios/index.md
content/en/showcase/pharmaseal/index.md
content/en/showcase/quiply-employee-communications-app/index.md
content/en/showcase/template/bio.md [deleted file]
content/en/showcase/template/featured-template.png [deleted file]
content/en/showcase/template/index.md [deleted file]
content/en/showcase/tomango/bio.md
content/en/showcase/tomango/index.md
content/en/templates/404.md
content/en/templates/_common/_index.md [deleted file]
content/en/templates/_common/filter-sort-group.md [deleted file]
content/en/templates/_index.md
content/en/templates/base.md
content/en/templates/content-view.md
content/en/templates/embedded.md
content/en/templates/home.md
content/en/templates/introduction.md
content/en/templates/lookup-order.md
content/en/templates/menu.md
content/en/templates/output-formats.md [deleted file]
content/en/templates/pagination.md
content/en/templates/partial.md
content/en/templates/robots.md
content/en/templates/rss.md
content/en/templates/section.md
content/en/templates/shortcode.md
content/en/templates/single.md
content/en/templates/sitemap.md
content/en/templates/taxonomy.md
content/en/templates/term.md
content/en/templates/types.md [new file with mode: 0644]
content/en/templates/types/index.md [deleted file]
content/en/templates/types/site-hierarchy.svg [deleted file]
content/en/tools/_index.md
content/en/tools/editors.md
content/en/tools/front-ends.md
content/en/tools/migrations.md
content/en/tools/other.md
content/en/tools/search.md
content/en/troubleshooting/_index.md
content/en/troubleshooting/audit/index.md
content/en/troubleshooting/deprecation.md
content/en/troubleshooting/faq.md
content/en/troubleshooting/inspection.md
content/en/troubleshooting/logging.md
content/en/troubleshooting/performance.md
data/docs.yaml
data/keywords.yaml [new file with mode: 0644]
data/page_filters.yaml
hugo.toml
layouts/404.html
layouts/_default/_markup/render-blockquote.html [new file with mode: 0644]
layouts/_default/_markup/render-codeblock.html [new file with mode: 0644]
layouts/_default/_markup/render-heading.html [deleted file]
layouts/_default/_markup/render-link.html
layouts/_default/_markup/render-passthrough.html [new file with mode: 0644]
layouts/_default/_markup/render-table.html [new file with mode: 0644]
layouts/_default/baseof.html
layouts/_default/list.html
layouts/_default/list.rss.xml [new file with mode: 0644]
layouts/_default/single.html
layouts/index.html
layouts/index.redir
layouts/index.rss.xml [deleted file]
layouts/partials/docs/functions-aliases.html
layouts/partials/docs/functions-return-type.html
layouts/partials/docs/functions-signatures.html
layouts/partials/helpers/debug/list-item-metadata.html [new file with mode: 0644]
layouts/partials/helpers/funcs/get-remote-data.html
layouts/partials/helpers/linkcss.html
layouts/partials/helpers/picture.html
layouts/partials/helpers/validation/validate-keywords.html [new file with mode: 0644]
layouts/partials/layouts/blocks/alert.html
layouts/partials/layouts/breadcrumbs.html
layouts/partials/layouts/date.html [new file with mode: 0644]
layouts/partials/layouts/footer.html
layouts/partials/layouts/head/head.html
layouts/partials/layouts/header/header.html
layouts/partials/layouts/header/qr.html
layouts/partials/layouts/home/opensource.html
layouts/partials/layouts/home/sponsors.html
layouts/partials/layouts/hooks/body-end.html
layouts/partials/layouts/hooks/body-main-start.html [new file with mode: 0644]
layouts/partials/layouts/icons.html
layouts/partials/layouts/in-this-section.html
layouts/partials/layouts/page-edit.html
layouts/partials/layouts/related.html
layouts/partials/layouts/search/algolialogo.html [new file with mode: 0644]
layouts/partials/layouts/search/button.html
layouts/partials/layouts/search/results.html
layouts/partials/layouts/templates.html [new file with mode: 0644]
layouts/partials/layouts/toc.html
layouts/partials/news/get-news-items.html [deleted file]
layouts/partials/opengraph/opengraph.html
layouts/shortcodes/chroma-lexers.html
layouts/shortcodes/code-toggle.html
layouts/shortcodes/code.html [deleted file]
layouts/shortcodes/datatable-filtered.html
layouts/shortcodes/datatable.html
layouts/shortcodes/deprecated-in.html
layouts/shortcodes/eturl.html
layouts/shortcodes/glossary-term.html
layouts/shortcodes/glossary.html
layouts/shortcodes/gomodules-info.html [deleted file]
layouts/shortcodes/hl.html
layouts/shortcodes/img.html
layouts/shortcodes/imgproc.html
layouts/shortcodes/include.html
layouts/shortcodes/list-pages-in-section.html
layouts/shortcodes/module-mounts-note.html
layouts/shortcodes/new-in.html
layouts/shortcodes/note.html [deleted file]
layouts/shortcodes/per-lang-config-keys.html [new file with mode: 0644]
layouts/shortcodes/quick-reference.html
layouts/shortcodes/readfile.html [deleted file]
layouts/shortcodes/root-configuration-keys.html [new file with mode: 0644]
layouts/shortcodes/syntax-highlighting-styles.html [new file with mode: 0644]
netlify.toml
package.json
static/browserconfig.xml [deleted file]

index 8d51085abd6841022efeef3c7ec77fd10f99e8be..bf61489da7cad1c4a868e41f0521e0c613af2182 100644 (file)
@@ -60,6 +60,7 @@
     "redirections",
     "subexpression",
     "suppressible",
+    "synchronisation",
     "templating",
     "transpile",
     "unmarshal",
     "# ----------------------------------------------------------------------",
     "achristie",
     "ccpa",
-    "crpa",
+    "cpra",
     "ddmaurier",
     "dring",
     "fleqn",
     "jsmith",
     "leqno",
     "milli",
+    "monokai",
+    "mysanityprojectid",
     "rgba",
     "rsmith",
     "tdewolff",
index debc86d46582175de9bbf14fcd8a2d2d898ba8c4..5208c5c3a25a6a46e201bad49119fd386f793a90 100644 (file)
@@ -4,10 +4,9 @@
 /.vscode
 /dist
 /public
+/resources
 hugo_stats.json
 node_modules/
 nohup.out
 package-lock.json
-public/
-resources/
-trace.out
\ No newline at end of file
+trace.out
index ee0a28909ca97fe91f0a36a22dd552ea9b896818..dbb5b2ee8b9bfab4e425d700c3d666d068428b6a 100644 (file)
@@ -22,5 +22,6 @@ MD041: false
 MD046: false
 MD049: false
 MD050: false
+MD051: false
 MD053: false
 MD055: false
diff --git a/.prettierignore b/.prettierignore
new file mode 100644 (file)
index 0000000..f24bbce
--- /dev/null
@@ -0,0 +1,18 @@
+# Ignore all SVG icons.
+**/icons.html
+
+# These are whitespace sensitive.
+layouts/_default/_markup/render-code*
+layouts/_default/_markup/render-table*
+layouts/shortcodes/glossary-term.html
+layouts/shortcodes/glossary.html
+layouts/shortcodes/highlighting-styles.html
+layouts/shortcodes/list-pages-in-section.html
+layouts/shortcodes/quick-reference.html
+
+# No root node.
+layouts/partials/layouts/head/head.html
+
+# Auto generated.
+assets/css/components/chroma*.css
+assets/jsconfig.json
diff --git a/.prettierrc b/.prettierrc
new file mode 100644 (file)
index 0000000..395ae39
--- /dev/null
@@ -0,0 +1,24 @@
+{
+  "plugins": [
+    "prettier-plugin-go-template",
+    "@awmottaz/prettier-plugin-void-html"
+  ],
+  "overrides": [
+    {
+      "files": ["*.html"],
+      "options": {
+        "parser": "go-template",
+        "goTemplateBracketSpacing": true,
+        "bracketSameLine": true
+      }
+    },
+    {
+      "files": ["*.js", "*.ts"],
+      "options": {
+        "useTabs": true,
+        "printWidth": 120,
+        "singleQuote": true
+      }
+    }
+  ]
+}
index 9797112755bc03220cc120221fc97454d539556c..d4facbf8afbcf31b5d3f35468ac656b51f117ff5 100644 (file)
@@ -1,3 +1,3 @@
 See [content/LICENSE.md](content/LICENSE.md) for the license of the content of this repository.
 
-The theme (layouts, CSS, JavaScript etc.) of this repository has no open source license. It is custom made for the Hugo sites and is not meant for reuse. 
\ No newline at end of file
+The theme (layouts, CSS, JavaScript etc.) of this repository has no open source license. It is custom made for the Hugo sites and is not meant for reuse.
index 64ba31a484c5c7da6502a0ac271feba01e76324c..58d0e748cec85c06b0b2eb8b2f5a37ebf1b1b55e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -19,9 +19,9 @@ Please see the [contributing] section for guidelines, examples, and process.
 
 # Install
 
-```bash
+```sh
 npm i
 hugo server
 ```
 
-**Note:** We're working on removing the need to run `npm i` for local development. Stay tuned.
\ No newline at end of file
+**Note:** We're working on removing the need to run `npm i` for local development. Stay tuned.
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644 (file)
index 0000000..58a60ed
--- /dev/null
@@ -0,0 +1,6 @@
+---
+title: {{ replace .File.ContentBaseName "-" " " | strings.FirstUpper }}
+description:
+categories: []
+keywords: []
+---
index 44a2a5635c27c35e9ada8218ecba73db88ce0fb4..de2d720600a647b7d477d55ab693dcbcdb3521f2 100644 (file)
@@ -3,9 +3,9 @@ title: {{ replace .File.ContentBaseName "-" " " | title }}
 description:
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType:
-  signatures: []
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: []
 ---
index 4fa4669ecad25575eb525e35756f823d48cb7b52..1eeb4ef4bbb55523aa1ce06173f941040d336226 100644 (file)
@@ -1,6 +1,7 @@
 ---
 title: {{ replace .File.ContentBaseName "-" " " }}
-reference: 
+params:
+  reference: 
 ---
 
 <!--
index 2c415547d2d268e52cad77029ebe9bcd94c4616f..944fe527cfa31b308c97775f56f462ec136d0d4e 100644 (file)
@@ -3,8 +3,8 @@ title: {{ replace .File.ContentBaseName "-" " " | title }}
 description:
 categories: []
 keywords: []
-action:
-  related: []
-  returnType:
-  signatures: []
+params:
+  functions_and_methods:
+    returnType:
+    signatures: []
 ---
diff --git a/archetypes/news.md b/archetypes/news.md
new file mode 100644 (file)
index 0000000..04792a1
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: {{ replace .File.ContentBaseName "-" " " | strings.FirstUpper }}
+description:
+categories: []
+keywords: []
+publishDate: {{ .Date }}
+---
diff --git a/archetypes/news/index.md b/archetypes/news/index.md
deleted file mode 100644 (file)
index fcc5b58..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: {{ replace .File.ContentBaseName "-" " " | title }}
-description:
-date: {{ .Date }}
----
diff --git a/archetypes/showcase/bio.md b/archetypes/showcase/bio.md
deleted file mode 100644 (file)
index 5d17089..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Add some **general info** about {{ replace .Name "-" " " | title }} here.
-
-The site is built by:
-
-* [Person 1](https://example.org)
-* [Person 1](https://example.org)
diff --git a/archetypes/showcase/featured.png b/archetypes/showcase/featured.png
deleted file mode 100644 (file)
index 4f39013..0000000
Binary files a/archetypes/showcase/featured.png and /dev/null differ
diff --git a/archetypes/showcase/index.md b/archetypes/showcase/index.md
deleted file mode 100644 (file)
index cdd0367..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
----
-
-title: {{ replace .File.ContentBaseName "-" " " | title }}
-date: {{ now.Format "2006-01-02" }}
-
-description: A short description of this page.
-
-# The URL to the site on the internet.
-siteURL: https://gohugo.io/
-
-# Link to the site's Hugo source code if public and you can/want to share.
-# Remove or leave blank if not needed/wanted.
-siteSource: https://github.com/gohugoio/hugoDocs
-
-# Add credit to the article author. Leave blank or remove if not needed/wanted.
-byline: "[bep](https://github.com/bep), Hugo Lead"
-
----
-
-To complete this showcase:
-
-1. Write the story about your site in this file.
-2. Add a summary to the `bio.md` file in this directory.
-3. Replace the `featured-template.png` with a screenshot of your site. You can rename it, but it must contain the word `featured`.
-4. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls
-
-The content of this bundle explained:
-
-index.md
-: The main content file. Fill in required front matter metadata and write your story. I does not have to be a novel. It can even be self-promotional, but it should include Hugo in some form.
-
-bio.md
-: A short summary of the website. Site credits (who built it) fits nicely here.
-
-featured.png
-: A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio).
index 117f1999835cc227cf0cfcdc08baa10ef89dc70e..f5002fd5003a2ab42ce7199bc066c7345a2ab041 100644 (file)
@@ -1,4 +1,4 @@
-/* The ordeer of these does not matter. */
+/* The order of these does not matter. */
 @import "./content.css";
 @import "./fonts.css";
 @import "./helpers.css";
index 0dd9d7bfa85968d69c03fa96af41879de013af48..0b0ae300055c0187a1b63b72fccc90cf6d0aade9 100644 (file)
@@ -5,7 +5,7 @@
 /* CodeLine */ .dark .chroma .cl {  }
 /* LineTableTD */ .dark .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
 /* LineTable */ .dark .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
-/* LineHighlight */ .dark .chroma .hl { background-color: #ffffcc }
+/* LineHighlight */ .dark .chroma .hl { background-color: rgb(0,19,28) }
 /* LineNumbersTable */ .dark .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
 /* LineNumbers */ .dark .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
 /* Line */ .dark .chroma .line { display: flex; }
index c5294962527df29e7ce344f04b407a99efb85cf2..e9064f43922077ef2ea0685d4bfabc407ee31c2e 100644 (file)
 }
 
 .highlight code {
-  @apply text-sm;
+  @apply text-sm/6;
 }
 
 .content {
   @apply prose prose-sm sm:prose-base prose-stone max-w-none dark:prose-invert dark:text-slate-200;
   /* headings */
-  @apply prose-h4:font-bold prose-h5:font-bold prose-h6:font-bold;
+  @apply prose-headings:font-semibold;
   /* lead */
   @apply prose-lead:text-slate-500 prose-lead:text-xl prose-lead:mt-2 sm:prose-lead:mt-4 prose-lead:leading-relaxed dark:prose-lead:text-slate-400;
   /* links */
-  @apply prose-a:text-primary prose-a:hover:text-primary/70 prose-a:underline;
-  @apply prose-a:prose-code:underline prose-a:prose-code:hover:text-primary/70 prose-a:prose-code:hover:underline;
+  @apply prose-a:text-primary dark:prose-a:text-blue-500 prose-a:hover:text-blue-500 dark:prose-a:hover:text-blue-400 prose-a:underline;
+  @apply prose-a:prose-code:underline prose-a:prose-code:hover:text-blue-500 prose-a:prose-code:hover:underline;
   /* pre */
   @apply prose-pre:text-gray-800 prose-pre:border-1 prose-pre:border-gray-100 prose-pre:bg-light dark:prose-pre:bg-dark dark:prose-pre:ring-1 dark:prose-pre:ring-slate-300/10;
   /* code */
   @apply prose-code:px-0.5 prose-code:text-gray-500 prose-code:dark:text-gray-300 border-none;
   @apply prose-code:before:hidden prose-code:after:hidden prose-code:font-mono;
+  @apply prose-table:prose-th:prose-code:text-white;
   /* tables */
-  @apply prose-table:border-2 prose-table:border-gray-100  prose-table:dark:border-gray-800 prose-table:relative prose-table:overflow-scroll prose-table:prose-th:font-bold prose-table:prose-th:bg-blue-500 dark:prose-table:prose-th:bg-blue-500/50 prose-table:prose-th:p-2 prose-table:prose-td:p-2 prose-table:prose-th:text-white;
+  @apply prose-table:w-auto prose-table:border-2 prose-table:border-gray-100 prose-table:dark:border-gray-800 prose-table:prose-th:font-bold prose-table:prose-th:bg-blue-500 dark:prose-table:prose-th:bg-blue-500/50 prose-table:prose-th:p-2 prose-table:prose-td:p-2 prose-table:prose-th:text-white;
   /* hr */
   @apply dark:prose-hr:border-slate-800;
-
-  h6 + * {
-    @apply mt-2;
-  }
+  /* ol */
+  @apply prose-ol:marker:prose dark:prose-ol:marker:text-gray-300;
+  /* ul */
+  @apply prose-ul:marker:text-gray-500 dark:prose-ul:marker:text-gray-300;
 }
 
 /* This will not match highlighting inside e.g. the code-toggle shortcode. */
index 3e7217c4e82738f48580909c30fc48f40aba308c..cf68ed3d7c5aea2353aa36101f82330bf768a77b 100644 (file)
@@ -16,7 +16,5 @@
 
 /* Turbo styles */
 .turbo-progress-bar {
-  @apply bg-blue-500;
-  opacity: 0.35;
-  height: 3px;
+  visibility: hidden;
 }
index cbe34e401bfd8c1f9c583f34898a6c92abfb8d69..6665a7e2b688a6bdfa0055f11c0c3ea4cccab709 100644 (file)
@@ -76,8 +76,9 @@
   --color-green-950: #051410;
 
   /* Fonts. */
-  --font-sans: "Mulish", ui-sans-serif, system-ui, sans-serif,
-    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  --font-sans:
+    "Mulish", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
+    "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
 }
 
 html {
@@ -121,3 +122,10 @@ body {
 .algolia-docsearch-suggestion--highlight {
   color: var(--color-primary);
 }
+
+/* Footnotes */
+.footnote-backref,
+.footnote-ref {
+  text-decoration: none;
+  padding-left: .0625em;
+}
index 4be8fb10497391761f77a4fbbd5c90cb06eec510..783db58f47e5b4d7898e0beb752e4c5ba1cec1bd 100644 (file)
@@ -1,6 +1,6 @@
 var debug = 0 ? console.log.bind(console, '[explorer]') : function () {};
 
-// This is cureently not used, but kept in case I change my mind.
+// This is currently not used, but kept in case I change my mind.
 export const explorer = (Alpine) => ({
        uiState: {
                containerScrollTop: -1,
index d2b119f0c6e4b9dbd56eb7e5f85efcb86dde2cea..1075f3f29f778f9e53463c88243520816227a965 100644 (file)
@@ -1,6 +1,24 @@
 export const navbar = (Alpine) => ({
        init: function () {
                Alpine.bind(this.$root, this.root);
+
+               return this.$nextTick(() => {
+                       let contentEl = document.querySelector('.content:not(.content--ready)');
+                       if (contentEl) {
+                               contentEl.classList.add('content--ready');
+                               let anchorTemplate = document.getElementById('anchor-heading');
+                               if (anchorTemplate) {
+                                       let els = contentEl.querySelectorAll('h2[id], h3[id], h4[id], h5[id], h6[id], dt[id]');
+                                       for (let i = 0; i < els.length; i++) {
+                                               let el = els[i];
+                                               el.classList.add('group');
+                                               let a = anchorTemplate.content.cloneNode(true).firstElementChild;
+                                               a.href = '#' + el.id;
+                                               el.appendChild(a);
+                                       }
+                               }
+                       }
+               });
        },
        root: {
                ['@scroll.window.debounce.10ms'](event) {
index 9be42617ea95e8669832fdf688ebd0ac35af27ef..c633799a1076c827a07a8cb874de106f20bbde90 100644 (file)
@@ -1,3 +1,5 @@
+import { LRUCache } from '../../helpers';
+
 const designMode = false;
 
 const groupByLvl0 = (array) => {
@@ -33,10 +35,10 @@ const applyHelperFuncs = (array) => {
 };
 
 export const search = (Alpine, cfg) => ({
-       query: designMode ? 'shortcodes' : '',
+       query: designMode ? 'apac' : '',
        open: designMode,
        result: {},
-
+       cache: new LRUCache(10), // Small cache, avoids network requests on e.g. backspace.
        init() {
                Alpine.bind(this.$root, this.root);
 
@@ -66,6 +68,13 @@ export const search = (Alpine, cfg) => ({
                        this.result = {};
                        return;
                }
+
+               // Check cache first.
+               const cached = this.cache.get(this.query);
+               if (cached) {
+                       this.result = cached;
+                       return;
+               }
                var queries = {
                        requests: [
                                {
@@ -91,6 +100,7 @@ export const search = (Alpine, cfg) => ({
                        .then((response) => response.json())
                        .then((data) => {
                                this.result = groupByLvl0(applyHelperFuncs(data.results[0].hits));
+                               this.cache.put(this.query, this.result);
                        });
        },
        root: {
@@ -102,7 +112,7 @@ export const search = (Alpine, cfg) => ({
                ['@search-toggle.window']() {
                        this.toggleOpen();
                },
-               ['@keydown.meta.k.window.prevent']() {
+               ['@keydown.slash.window.prevent']() {
                        this.toggleOpen();
                },
        },
index 3da9f7eac54c36677ccd7e0ea034f3bd552f1fba..233f8777f6937652acd210a6418dfe928ae8a78c 100644 (file)
@@ -23,7 +23,7 @@ export const toc = (Alpine) => ({
                });
 
                return this.$nextTick(() => {
-                       let contentEl = document.getElementById('content');
+                       let contentEl = document.getElementById('article');
                        if (contentEl) {
                                const handleIntersect = (entries) => {
                                        if (this.justClicked) {
index c5620cf7cf80ddacbd63ec06ab5d3be534d35cab..6409cd86ccd72d13a2ade55b6b0c1701b60366f0 100644 (file)
@@ -87,8 +87,8 @@ export function initColorScheme() {
 
 const toggleDarkMode = function (dark) {
        if (dark) {
-               document.body.classList.add('dark');
+               document.documentElement.classList.add('dark');
        } else {
-               document.body.classList.remove('dark');
+               document.documentElement.classList.remove('dark');
        }
 };
index b02d81cf0120c573f8404517e2f9981467f021e5..41ffa3c39b3383b351ea0e34be29e7dd7bf29076 100644 (file)
@@ -1,2 +1,3 @@
 export * from './bridgeTurboAndAlpine';
 export * from './helpers';
+export * from './lrucache';
diff --git a/assets/js/helpers/lrucache.js b/assets/js/helpers/lrucache.js
new file mode 100644 (file)
index 0000000..258848c
--- /dev/null
@@ -0,0 +1,19 @@
+// A simple LRU cache implementation backed by a map.
+export class LRUCache {
+       constructor(maxSize) {
+               this.maxSize = maxSize;
+               this.cache = new Map();
+       }
+
+       get(key) {
+               return this.cache.get(key);
+       }
+
+       put(key, value) {
+               if (this.cache.size >= this.maxSize) {
+                       const firstKey = this.cache.keys().next().value;
+                       this.cache.delete(firstKey);
+               }
+               this.cache.set(key, value);
+       }
+}
index 4328d4d145bcd6f396d3519359d6999dcb85913b..612165e5c67ef9abcd9babd6c9feadf9d3db6863 100644 (file)
@@ -1,6 +1,6 @@
 ---
 cascade:
-  _build:
+  build:
     list: never
     publishResources: false
     render: never
@@ -9,5 +9,5 @@ cascade:
 <!--
 Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
 
-Include the rendered content using the "include" shortcode. 
+Include the rendered content using the "include" shortcode.
 -->
diff --git a/content/en/_common/content-format-table.md b/content/en/_common/content-format-table.md
new file mode 100644 (file)
index 0000000..c0a66a1
--- /dev/null
@@ -0,0 +1,13 @@
+---
+_comment: Do not remove front matter.
+---
+
+Content format|Media type|Identifier|File extensions
+:--|:--|:--|:--
+Markdown|`text/markdown`|`markdown`|`markdown`,`md`, `mdown`
+HTML|`text/html`|`html`|`htm`, `html`
+Emacs Org Mode|`text/org`|`org`|`org`
+AsciiDoc|`text/asciidoc`|`asciidoc`|`ad`, `adoc`, `asciidoc`
+Pandoc|`text/pandoc`|`pandoc`|`pandoc`, `pdc`
+reStructuredText|`text/rst`|`rst`|`rst`
+<!-- do not remove this comment -->
diff --git a/content/en/_common/filter-sort-group.md b/content/en/_common/filter-sort-group.md
new file mode 100644 (file)
index 0000000..ac73766
--- /dev/null
@@ -0,0 +1,8 @@
+---
+_comment: Do not remove front matter.
+---
+
+> [!note]
+> The [page collections quick reference guide] describes methods and functions to filter, sort, and group page collections.
+
+[page collections quick reference guide]: /quick-reference/page-collections/
diff --git a/content/en/_common/functions/fmt/format-string.md b/content/en/_common/functions/fmt/format-string.md
new file mode 100644 (file)
index 0000000..09a9ee8
--- /dev/null
@@ -0,0 +1,7 @@
+---
+_comment: Do not remove front matter.
+---
+
+The documentation for Go's [fmt] package describes the structure and content of the format string.
+
+[fmt]: https://pkg.go.dev/fmt
diff --git a/content/en/_common/functions/go-html-template-package.md b/content/en/_common/functions/go-html-template-package.md
new file mode 100644 (file)
index 0000000..57992ea
--- /dev/null
@@ -0,0 +1,14 @@
+---
+_comment: Do not remove front matter.
+---
+
+Hugo uses Go's [text/template] and [html/template] packages.
+
+The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection.
+
+By default, Hugo uses the html/template package when rendering HTML files.
+
+To generate HTML output that is safe against code injection, the html/template package escapes strings in certain contexts.
+
+[text/template]: https://pkg.go.dev/text/template
+[html/template]: https://pkg.go.dev/html/template
diff --git a/content/en/_common/functions/go-template/text-template.md b/content/en/_common/functions/go-template/text-template.md
new file mode 100644 (file)
index 0000000..4b934c1
--- /dev/null
@@ -0,0 +1,7 @@
+---
+_comment: Do not remove front matter.
+---
+
+See Go's [text/template] documentation for more information.
+
+[text/template]: https://pkg.go.dev/text/template
diff --git a/content/en/_common/functions/images/apply-image-filter.md b/content/en/_common/functions/images/apply-image-filter.md
new file mode 100644 (file)
index 0000000..08e0823
--- /dev/null
@@ -0,0 +1,27 @@
+---
+_comment: Do not remove front matter.
+---
+
+Apply the filter using the [`images.Filter`] function:
+
+[`images.Filter`]: /functions/images/filter/
+
+```go-html-template
+{{ with resources.Get "images/original.jpg" }}
+  {{ with . | images.Filter $filter }}
+    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+  {{ end }}
+{{ end }}
+```
+
+You can also apply the filter using the [`Filter`] method on a `Resource` object:
+
+[`Filter`]: /methods/resource/filter/
+
+```go-html-template
+{{ with resources.Get "images/original.jpg" }}
+  {{ with .Filter $filter }}
+    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+  {{ end }}
+{{ end }}
+```
diff --git a/content/en/_common/functions/js/options.md b/content/en/_common/functions/js/options.md
new file mode 100644 (file)
index 0000000..475429d
--- /dev/null
@@ -0,0 +1,108 @@
+---
+_comment: Do not remove front matter.
+---
+
+params
+: (`map` or `slice`) Params that can be imported as JSON in your JS files, e.g.
+
+  ```go-html-template
+  {{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
+  ```
+  And then in your JS file:
+
+  ```js
+  import * as params from '@params';
+  ```
+
+  Note that this is meant for small data sets, e.g., configuration settings. For larger data sets, please put/mount the files into `assets` and import them directly.
+
+minify
+: (`bool`) Whether to let `js.Build` handle the minification.
+
+loaders
+: {{< new-in 0.140.0 />}}
+: (`map`) Configuring a loader for a given file type lets you load that file type with an `import` statement or a `require` call. For example, configuring the `.png` file extension to use the data URL loader means importing a `.png` file gives you a data URL containing the contents of that image. Loaders available are `none`, `base64`, `binary`, `copy`,  `css`,  `dataurl`, `default`, `empty`, `file`, `global-css`, `js`, `json`, `jsx`, `local-css`,  `text`, `ts`, `tsx`. See https://esbuild.github.io/api/#loader.
+
+inject
+: (`slice`) This option allows you to automatically replace a global variable with an import from another file. The path names must be relative to `assets`. See https://esbuild.github.io/api/#inject.
+
+shims
+: (`map`) This option allows swapping out a component with another. A common use case is to load dependencies like React from a CDN  (with _shims_) when in production, but running with the full bundled `node_modules` dependency during development:
+
+  ```go-html-template
+  {{ $shims := dict "react" "js/shims/react.js"  "react-dom" "js/shims/react-dom.js" }}
+  {{ $js = $js | js.Build dict "shims" $shims }}
+  ```
+
+  The _shim_ files may look like these:
+
+  ```js
+  // js/shims/react.js
+  module.exports = window.React;
+  ```
+
+  ```js
+  // js/shims/react-dom.js
+  module.exports = window.ReactDOM;
+  ```
+
+  With the above, these imports should work in both scenarios:
+
+  ```js
+  import * as React from 'react';
+  import * as ReactDOM from 'react-dom/client';
+  ```
+
+target
+: (`string`) The language target. One of: `es5`, `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020`, `es2021`, `es2022`, `es2023`, `es2024`, or `esnext`. Default is `esnext`.
+
+platform
+: {{< new-in 0.140.0 />}}
+: (`string`) One of `browser`, `node`, `neutral`. Default is `browser`. See https://esbuild.github.io/api/#platform.
+
+externals
+: (`slice`) External dependencies. Use this to trim dependencies you know will never be executed. See https://esbuild.github.io/api/#external.
+
+defines
+: (`map`) This option allows you to define a set of string replacements to be performed when building. It must be a map where each key will be replaced by its value.
+
+  ```go-html-template
+  {{ $defines := dict "process.env.NODE_ENV" `"development"` }}
+  ```
+
+drop
+: {{< new-in 0.144.0 />}}
+: (`string`) Edit your source code before building to drop certain constructs: One of `debugger` or `console`.
+: See https://esbuild.github.io/api/#drop
+
+sourceMap
+: (`string`) Whether to generate `inline`, `linked`, or `external` source maps from esbuild. Linked and external source maps will be written to the target with the output file name + ".map". When `linked` a `sourceMappingURL` will also be written to the output file. By default, source maps are not created. Note that the `linked` option was added in Hugo 0.140.0.
+
+sourcesContent
+: {{< new-in 0.140.0 />}}
+: (`bool`) Whether to include the content of the source files in the source map. By default, this is `true`.
+
+JSX
+: {{< new-in 0.124.0 />}}
+: (`string`) How to handle/transform JSX syntax. One of: `transform`, `preserve`, `automatic`. Default is `transform`. Notably, the `automatic` transform was introduced in React 17+ and will cause the necessary JSX helper functions to be imported automatically. See https://esbuild.github.io/api/#jsx.
+
+JSXImportSource
+: {{< new-in 0.124.0 />}}
+: (`string`) Which library to use to automatically import its JSX helper functions from. This only works if `JSX` is set to `automatic`. The specified library needs to be installed through npm and expose certain exports. See https://esbuild.github.io/api/#jsx-import-source.
+
+  The combination of `JSX` and `JSXImportSource` is helpful if you want to use a non-React JSX library like Preact, e.g.:
+
+  ```go-html-template
+  {{ $js := resources.Get "js/main.jsx" | js.Build (dict "JSX" "automatic" "JSXImportSource" "preact") }}
+  ```
+
+  With the above, you can use Preact components and JSX without having to manually import `h` and `Fragment` every time:
+
+  ```jsx
+  import { render } from 'preact';
+
+  const App = () => <>Hello world!</>;
+
+  const container = document.getElementById('app');
+  if (container) render(<App />, container);
+  ```
diff --git a/content/en/_common/functions/locales.md b/content/en/_common/functions/locales.md
new file mode 100644 (file)
index 0000000..1cfd7a1
--- /dev/null
@@ -0,0 +1,8 @@
+---
+_comment: Do not remove front matter.
+---
+
+> [!note]
+> Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales.
+
+[gohugoio/locales]: https://github.com/gohugoio/locales
diff --git a/content/en/_common/functions/regular-expressions.md b/content/en/_common/functions/regular-expressions.md
new file mode 100644 (file)
index 0000000..58f81a2
--- /dev/null
@@ -0,0 +1,12 @@
+---
+_comment: Do not remove front matter.
+---
+
+When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
+
+Go's regular expression package implements the [RE2 syntax]. The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats]. Note that the RE2 `\C` escape sequence is not supported.
+
+[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
+[PCRE]: https://www.pcre.org/
+[RE2 syntax]: https://github.com/google/re2/wiki/Syntax/
+[string literal]: https://go.dev/ref/spec#String_literals
diff --git a/content/en/_common/functions/truthy-falsy.md b/content/en/_common/functions/truthy-falsy.md
new file mode 100644 (file)
index 0000000..e15e58d
--- /dev/null
@@ -0,0 +1,7 @@
+---
+_comment: Do not remove front matter.
+---
+
+The falsy values are `false`, `0`, any `nil` pointer or interface value, any array, slice, map, or string of length zero, and zero `time.Time` values.
+
+Everything else is truthy.
diff --git a/content/en/_common/functions/urls/anchorize-vs-urlize.md b/content/en/_common/functions/urls/anchorize-vs-urlize.md
new file mode 100644 (file)
index 0000000..e00c181
--- /dev/null
@@ -0,0 +1,35 @@
+---
+_comment: Do not remove front matter.
+---
+
+The [`anchorize`] and [`urlize`] functions are similar:
+
+[`anchorize`]: /functions/urls/anchorize/
+[`urlize`]: /functions/urls/urlize/
+
+- Use the `anchorize` function to generate an HTML `id` attribute value
+- Use the `urlize` function to sanitize a string for usage in a URL
+
+For example:
+
+```go-html-template
+{{ $s := "A B C" }}
+{{ $s | anchorize }} → a-b-c
+{{ $s | urlize }} → a-b-c
+
+{{ $s := "a b   c" }}
+{{ $s | anchorize }} → a-b---c
+{{ $s | urlize }} → a-b-c
+
+{{ $s := "< a, b, & c >" }}
+{{ $s | anchorize }} → -a-b--c-
+{{ $s | urlize }} → a-b-c
+
+{{ $s := "main.go" }}
+{{ $s | anchorize }} → maingo
+{{ $s | urlize }} → main.go
+
+{{ $s := "Hugö" }}
+{{ $s | anchorize }} → hugö
+{{ $s | urlize }} → hug%C3%B6
+```
diff --git a/content/en/_common/glob-patterns.md b/content/en/_common/glob-patterns.md
new file mode 100644 (file)
index 0000000..d3092de
--- /dev/null
@@ -0,0 +1,23 @@
+---
+_comment: Do not remove front matter.
+---
+
+Path|Pattern|Match
+:--|:--|:--
+`images/foo/a.jpg`|`images/foo/*.jpg`|`true`
+`images/foo/a.jpg`|`images/foo/*.*`|`true`
+`images/foo/a.jpg`|`images/foo/*`|`true`
+`images/foo/a.jpg`|`images/*/*.jpg`|`true`
+`images/foo/a.jpg`|`images/*/*.*`|`true`
+`images/foo/a.jpg`|`images/*/*`|`true`
+`images/foo/a.jpg`|`*/*/*.jpg`|`true`
+`images/foo/a.jpg`|`*/*/*.*`|`true`
+`images/foo/a.jpg`|`*/*/*`|`true`
+`images/foo/a.jpg`|`**/*.jpg`|`true`
+`images/foo/a.jpg`|`**/*.*`|`true`
+`images/foo/a.jpg`|`**/*`|`true`
+`images/foo/a.jpg`|`**`|`true`
+`images/foo/a.jpg`|`*/*.jpg`|`false`
+`images/foo/a.jpg`|`*.jpg`|`false`
+`images/foo/a.jpg`|`*.*`|`false`
+`images/foo/a.jpg`|`*`|`false`
diff --git a/content/en/_common/gomodules-info.md b/content/en/_common/gomodules-info.md
new file mode 100644 (file)
index 0000000..5d88a6f
--- /dev/null
@@ -0,0 +1,13 @@
+---
+_comment: Do not remove front matter.
+---
+
+> [!note] Hugo Modules are Go Modules
+> You need [Go] version 1.18 or later and [Git] to use Hugo Modules. For older sites hosted on Netlify, please ensure the `GO_VERSION` environment variable is set to `1.18` or higher.
+>
+> Go Modules resources:
+> - [go.dev/wiki/Modules](https://go.dev/wiki/Modules)
+> - [blog.golang.org/using-go-modules](https://go.dev/blog/using-go-modules)
+
+[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Go]: https://go.dev/doc/install
diff --git a/content/en/_common/installation/01-editions.md b/content/en/_common/installation/01-editions.md
new file mode 100644 (file)
index 0000000..6340028
--- /dev/null
@@ -0,0 +1,16 @@
+---
+_comment: Do not remove front matter.
+---
+
+Hugo is available in three editions: standard, extended, and extended/deploy. While the standard edition provides core functionality, the extended and extended/deploy editions offer advanced features.
+
+Feature|extended edition|extended/deploy edition
+:--|:-:|:-:
+Encode to the WebP format when [processing images]. You can decode WebP images with any edition.|:heavy_check_mark:|:heavy_check_mark:
+[Transpile Sass to CSS] using the embedded LibSass transpiler. You can use the [Dart Sass] transpiler with any edition.|:heavy_check_mark:|:heavy_check_mark:
+Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See&nbsp;[details].|:x:|:heavy_check_mark:
+
+[dart sass]: /functions/css/sass/#dart-sass
+[processing images]: /content-management/image-processing/
+[transpile sass to css]: /functions/css/sass/
+[details]: /host-and-deploy/deploy-with-hugo-deploy/
diff --git a/content/en/_common/installation/02-prerequisites.md b/content/en/_common/installation/02-prerequisites.md
new file mode 100644 (file)
index 0000000..f27d9d5
--- /dev/null
@@ -0,0 +1,40 @@
+---
+_comment: Do not remove front matter.
+---
+
+## Prerequisites
+
+Although not required in all cases, [Git], [Go], and [Dart Sass] are commonly used when working with Hugo.
+
+Git is required to:
+
+- Build Hugo from source
+- Use the [Hugo Modules] feature
+- Install a theme as a Git submodule
+- Access [commit information] from a local Git repository
+- Host your site with services such as [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify]
+
+Go is required to:
+
+- Build Hugo from source
+- Use the Hugo Modules feature
+
+Dart Sass is required to transpile Sass to CSS when using the latest features of the Sass language.
+
+Please refer to the relevant documentation for installation instructions:
+
+- [Git][git install]
+- [Go][go install]
+- [Dart Sass][dart sass install]
+
+[cloudcannon]: https://cloudcannon.com/
+[cloudflare pages]: https://pages.cloudflare.com/
+[dart sass install]: /functions/css/sass/#dart-sass
+[dart sass]: https://sass-lang.com/dart-sass
+[git install]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[git]: https://git-scm.com/
+[github pages]: https://pages.github.com/
+[gitlab pages]: https://docs.gitlab.com/ee/user/project/pages/
+[go install]: https://go.dev/doc/install
+[go]: https://go.dev/
+[netlify]: https://www.netlify.com/
diff --git a/content/en/_common/installation/03-prebuilt-binaries.md b/content/en/_common/installation/03-prebuilt-binaries.md
new file mode 100644 (file)
index 0000000..34411cd
--- /dev/null
@@ -0,0 +1,23 @@
+---
+_comment: Do not remove front matter.
+---
+
+## Prebuilt binaries
+
+Prebuilt binaries are available for a variety of operating systems and architectures. Visit the [latest release] page, and scroll down to the Assets section.
+
+1. Download the archive for the desired edition, operating system, and architecture
+1. Extract the archive
+1. Move the executable to the desired directory
+1. Add this directory to the PATH environment variable
+1. Verify that you have _execute_ permission on the file
+
+Please consult your operating system documentation if you need help setting file permissions or modifying your PATH environment variable.
+
+If you do not see a prebuilt binary for the desired edition, operating system, and architecture, install Hugo using one of the methods described below.
+
+[commit information]: /methods/page/gitinfo/
+[Git]: https://git-scm.com/
+[Go]: https://go.dev/
+[Hugo Modules]: /hugo-modules/
+[latest release]: https://github.com/gohugoio/hugo/releases/latest
diff --git a/content/en/_common/installation/04-build-from-source.md b/content/en/_common/installation/04-build-from-source.md
new file mode 100644 (file)
index 0000000..3ce245f
--- /dev/null
@@ -0,0 +1,38 @@
+---
+_comment: Do not remove front matter.
+---
+
+## Build from source
+
+To build the extended or extended/deploy edition from source you must:
+
+1. Install [Git]
+1. Install [Go] version 1.23.0 or later
+1. Install a C compiler, either [GCC] or [Clang]
+1. Update your `PATH` environment variable as described in the [Go documentation]
+
+> The install directory is controlled by the `GOPATH` and `GOBIN` environment variables. If `GOBIN` is set, binaries are installed to that directory. If `GOPATH` is set, binaries are installed to the bin subdirectory of the first directory in the `GOPATH` list. Otherwise, binaries are installed to the bin subdirectory of the default `GOPATH` (`$HOME/go` or `%USERPROFILE%\go`).
+
+To build the standard edition:
+
+```sh
+go install github.com/gohugoio/hugo@latest
+```
+
+To build the extended edition:
+
+```sh
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest
+```
+
+To build the extended/deploy edition:
+
+```sh
+CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest
+```
+
+[Clang]: https://clang.llvm.org/
+[GCC]: https://gcc.gnu.org/
+[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Go documentation]: https://go.dev/doc/code#Command
+[Go]: https://go.dev/doc/install
diff --git a/content/en/_common/installation/homebrew.md b/content/en/_common/installation/homebrew.md
new file mode 100644 (file)
index 0000000..14f4817
--- /dev/null
@@ -0,0 +1,13 @@
+---
+_comment: Do not remove front matter.
+---
+
+### Homebrew
+
+[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended edition of Hugo:
+
+```sh
+brew install hugo
+```
+
+[Homebrew]: https://brew.sh/
diff --git a/content/en/_common/menu-entries/pre-and-post.md b/content/en/_common/menu-entries/pre-and-post.md
new file mode 100644 (file)
index 0000000..da3d584
--- /dev/null
@@ -0,0 +1,39 @@
+---
+_comment: Do not remove front matter.
+---
+
+In this site configuration we enable rendering of [emoji shortcodes], and add emoji shortcodes before (pre) and after (post) each menu entry:
+
+{{< code-toggle file=hugo >}}
+enableEmoji = true
+
+[[menus.main]]
+name = 'About'
+pageRef = '/about'
+post = ':point_left:'
+pre = ':point_right:'
+weight = 10
+
+[[menus.main]]
+name = 'Contact'
+pageRef = '/contact'
+post = ':arrow_left:'
+pre = ':arrow_right:'
+weight = 20
+{{< /code-toggle >}}
+
+To render the menu:
+
+```go-html-template
+<ul>
+  {{ range .Site.Menus.main }}
+    <li>
+      {{ .Pre | markdownify }}
+      <a href="{{ .URL }}">{{ .Name }}</a>
+      {{ .Post | markdownify }}
+    </li>
+  {{ end }}
+</ul>
+```
+
+[emoji shortcodes]: /quick-reference/emojis/
diff --git a/content/en/_common/menu-entry-properties.md b/content/en/_common/menu-entry-properties.md
new file mode 100644 (file)
index 0000000..daeadd7
--- /dev/null
@@ -0,0 +1,31 @@
+---
+_comment: Do not remove front matter.
+---
+
+<!--
+This description list intentionally excludes the `pageRef` and `url` properties. Add those properties manually after using the include shortcode to include this list.
+-->
+
+identifier
+: (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores.
+
+name
+: (`string`) The text to display when rendering the menu entry.
+
+params
+: (`map`) User-defined properties for the menu entry.
+
+parent
+: (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu.
+
+post
+: (`string`) The HTML to append when rendering the menu entry.
+
+pre
+: (`string`) The HTML to prepend when rendering the menu entry.
+
+title
+: (`string`) The HTML `title` attribute of the rendered menu entry.
+
+weight
+: (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom.
diff --git a/content/en/_common/methods/page/next-and-prev.md b/content/en/_common/methods/page/next-and-prev.md
new file mode 100644 (file)
index 0000000..f859961
--- /dev/null
@@ -0,0 +1,60 @@
+---
+_comment: Do not remove front matter.
+---
+
+Hugo determines the _next_ and _previous_ page by sorting the site's collection of regular pages according to this sorting hierarchy:
+
+Field|Precedence|Sort direction
+:--|:--|:--
+[`weight`]|1|descending
+[`date`]|2|descending
+[`linkTitle`]|3|descending
+[`path`]|4|descending
+
+[`date`]: /methods/page/date/
+[`weight`]: /methods/page/weight/
+[`linkTitle`]: /methods/page/linktitle/
+[`path`]: /methods/page/path/
+
+The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
+
+For example, with this content structure:
+
+```text
+content/
+├── pages/
+│   ├── _index.md
+│   ├── page-1.md   <-- front matter: weight = 10
+│   ├── page-2.md   <-- front matter: weight = 20
+│   └── page-3.md   <-- front matter: weight = 30
+└── _index.md
+```
+
+And these templates:
+
+```go-html-template {file="layouts/_default/list.html"}
+{{ range .Pages.ByWeight }}
+  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
+
+```go-html-template {file="layouts/_default/single.html"}
+{{ with .Prev }}
+  <a href="{{ .RelPermalink }}">Previous</a>
+{{ end }}
+
+{{ with .Next }}
+  <a href="{{ .RelPermalink }}">Next</a>
+{{ end }}
+```
+
+When you visit page-2:
+
+- The `Prev` method points to page-3
+- The `Next` method points to page-1
+
+To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
+
+[site configuration]: /configuration/page/
+[`Next`]: /methods/pages/prev
+[`Prev`]: /methods/pages/prev
diff --git a/content/en/_common/methods/page/nextinsection-and-previnsection.md b/content/en/_common/methods/page/nextinsection-and-previnsection.md
new file mode 100644 (file)
index 0000000..54d240e
--- /dev/null
@@ -0,0 +1,78 @@
+---
+_comment: Do not remove front matter.
+---
+
+Hugo determines the _next_ and _previous_ page by sorting the current section's regular pages according to this sorting hierarchy:
+
+Field|Precedence|Sort direction
+:--|:--|:--
+[`weight`]|1|descending
+[`date`]|2|descending
+[`linkTitle`]|3|descending
+[`path`]|4|descending
+
+[`date`]: /methods/page/date/
+[`weight`]: /methods/page/weight/
+[`linkTitle`]: /methods/page/linktitle/
+[`path`]: /methods/page/path/
+
+The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
+
+For example, with this content structure:
+
+```text
+content/
+├── pages/
+│   ├── _index.md
+│   ├── page-1.md   <-- front matter: weight = 10
+│   ├── page-2.md   <-- front matter: weight = 20
+│   └── page-3.md   <-- front matter: weight = 30
+└── _index.md
+```
+
+And these templates:
+
+```go-html-template {file="layouts/_default/list.html"}
+{{ range .Pages.ByWeight }}
+  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
+
+```go-html-template {file="layouts/_default/single.html"}
+{{ with .PrevInSection }}
+  <a href="{{ .RelPermalink }}">Previous</a>
+{{ end }}
+
+{{ with .NextInSection }}
+  <a href="{{ .RelPermalink }}">Next</a>
+{{ end }}
+```
+
+When you visit page-2:
+
+- The `PrevInSection` method points to page-3
+- The `NextInSection` method points to page-1
+
+To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
+
+[site configuration]: /configuration/page/
+[`Next`]: /methods/pages/prev
+[`Prev`]: /methods/pages/prev
+
+## Example
+
+Code defensively by checking for page existence:
+
+```go-html-template
+{{ with .PrevInSection }}
+  <a href="{{ .RelPermalink }}">Previous</a>
+{{ end }}
+
+{{ with .NextInSection }}
+  <a href="{{ .RelPermalink }}">Next</a>
+{{ end }}
+```
+
+## Alternative
+
+Use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
diff --git a/content/en/_common/methods/page/output-format-methods.md b/content/en/_common/methods/page/output-format-methods.md
new file mode 100644 (file)
index 0000000..1e914db
--- /dev/null
@@ -0,0 +1,35 @@
+---
+_comment: Do not remove front matter.
+---
+
+### Get IDENTIFIER
+
+(`any`) Returns the `OutputFormat` object with the given identifier.
+
+### MediaType
+
+(`media.Type`) Returns the media type of the output format.
+
+### MediaType.MainType
+
+(`string`) Returns the main type of the output format's media type.
+
+### MediaType.SubType
+
+(`string`) Returns the subtype of the current format's media type.
+
+### Name
+
+(`string`) Returns the output identifier of the output format.
+
+### Permalink
+
+(`string`) Returns the permalink of the page generated by the current output format.
+
+### Rel
+
+(`string`) Returns the `rel` value of the output format, either the default or as defined in the site configuration.
+
+### RelPermalink
+
+(`string`) Returns the relative permalink of the page generated by the current output format.
diff --git a/content/en/_common/methods/pages/group-sort-order.md b/content/en/_common/methods/pages/group-sort-order.md
new file mode 100644 (file)
index 0000000..e2997a1
--- /dev/null
@@ -0,0 +1,5 @@
+---
+_comment: Do not remove front matter.
+---
+
+For the optional sort order, specify either `asc` for ascending order, or `desc` for descending order.
diff --git a/content/en/_common/methods/pages/next-and-prev.md b/content/en/_common/methods/pages/next-and-prev.md
new file mode 100644 (file)
index 0000000..462545c
--- /dev/null
@@ -0,0 +1,72 @@
+---
+_comment: Do not remove front matter.
+---
+
+Hugo determines the _next_ and _previous_ page by sorting the page collection according to this sorting hierarchy:
+
+Field|Precedence|Sort direction
+:--|:--|:--
+[`weight`]|1|descending
+[`date`]|2|descending
+[`linkTitle`]|3|descending
+[`path`]|4|descending
+
+[`date`]: /methods/page/date/
+[`weight`]: /methods/page/weight/
+[`linkTitle`]: /methods/page/linktitle/
+[`path`]: /methods/page/path/
+
+The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
+
+For example, with this content structure:
+
+```text
+content/
+├── pages/
+│   ├── _index.md
+│   ├── page-1.md   <-- front matter: weight = 10
+│   ├── page-2.md   <-- front matter: weight = 20
+│   └── page-3.md   <-- front matter: weight = 30
+└── _index.md
+```
+
+And these templates:
+
+```go-html-template {file="layouts/_default/list.html"}
+{{ range .Pages.ByWeight }}
+  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
+
+```go-html-template {file="layouts/_default/single.html"}
+{{ $pages := .CurrentSection.Pages.ByWeight }}
+
+{{ with $pages.Prev . }}
+  <a href="{{ .RelPermalink }}">Previous</a>
+{{ end }}
+
+{{ with $pages.Next . }}
+  <a href="{{ .RelPermalink }}">Next</a>
+{{ end }}
+```
+
+When you visit page-2:
+
+- The `Prev` method points to page-3
+- The `Next` method points to page-1
+
+To reverse the meaning of _next_ and _previous_ you can chain the [`Reverse`] method to the page collection definition:
+
+```go-html-template {file="layouts/_default/single.html"}
+{{ $pages := .CurrentSection.Pages.ByWeight.Reverse }}
+
+{{ with $pages.Prev . }}
+  <a href="{{ .RelPermalink }}">Previous</a>
+{{ end }}
+
+{{ with $pages.Next . }}
+  <a href="{{ .RelPermalink }}">Next</a>
+{{ end }}
+```
+
+[`Reverse`]: /methods/pages/reverse/
diff --git a/content/en/_common/methods/resource/global-page-remote-resources.md b/content/en/_common/methods/resource/global-page-remote-resources.md
new file mode 100644 (file)
index 0000000..49146ae
--- /dev/null
@@ -0,0 +1,6 @@
+---
+_comment: Do not remove front matter.
+---
+
+> [!note]
+> Use this method with [global resources](g), [page resources](g), or [remote resources](g).
diff --git a/content/en/_common/methods/resource/processing-spec.md b/content/en/_common/methods/resource/processing-spec.md
new file mode 100644 (file)
index 0000000..3952173
--- /dev/null
@@ -0,0 +1,36 @@
+---
+_comment: Do not remove front matter.
+---
+
+## Process specification
+
+The process specification is a space-delimited, case-insensitive list of one or more of the following in any sequence:
+
+action
+: Applicable to the [`Process`](/methods/resource/process) method only. Specify zero or one of `crop`, `fill`, `fit`, or `resize`. If you specify an action you must also provide dimensions.
+
+dimensions
+: Provide width _or_ height when using the [`Resize`](/methods/resource/resize) method, else provide both width _and_ height. See&nbsp;[details](/content-management/image-processing/#dimensions).
+
+anchor
+: Use with the [`Crop`](/methods/resource/crop) and [`Fill`](/methods/resource/fill) methods. Specify zero or one of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`. See&nbsp;[details](/content-management/image-processing/#anchor).
+
+rotation
+: Typically specify zero or one of `r90`, `r180`, or `r270`. Also supports arbitrary rotation angles. See&nbsp;[details](/content-management/image-processing/#rotation).
+
+target format
+: Specify zero or one of `gif`, `jpeg`, `png`, `tiff`, or `webp`. See&nbsp;[details](/content-management/image-processing/#target-format).
+
+quality
+: Applicable to JPEG and WebP images. Optionally specify `qN` where `N` is an integer in the range [0, 100]. Default is `75`. See&nbsp;[details](/content-management/image-processing/#quality).
+
+hint
+: Applicable to WebP images and equivalent to the `-preset` flag for the [`cwebp`] encoder. Specify zero or one of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See&nbsp;[details](/content-management/image-processing/#hint).
+
+[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
+
+background color
+: When converting a PNG or WebP with transparency to a format that does not support transparency, optionally specify a background color using a 3-digit or a 6-digit hexadecimal color code. Default is `#ffffff` (white). See&nbsp;[details](/content-management/image-processing/#background-color).
+
+resampling filter
+: Typically specify zero or one of `Box`, `Lanczos`, `CatmullRom`, `MitchellNetravali`, `Linear`, or `NearestNeighbor`. Other resampling filters are available. See&nbsp;[details](/content-management/image-processing/#resampling-filter).
diff --git a/content/en/_common/methods/taxonomy/get-a-taxonomy-object.md b/content/en/_common/methods/taxonomy/get-a-taxonomy-object.md
new file mode 100644 (file)
index 0000000..6fb729c
--- /dev/null
@@ -0,0 +1,67 @@
+---
+_comment: Do not remove front matter.
+---
+
+Before we can use a `Taxonomy` method, we need to capture a `Taxonomy` object.
+
+## Capture a Taxonomy object
+
+Consider this site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+genre = 'genres'
+author = 'authors'
+{{< /code-toggle >}}
+
+And this content structure:
+
+```text
+content/
+├── books/
+│   ├── and-then-there-were-none.md --> genres: suspense
+│   ├── death-on-the-nile.md        --> genres: suspense
+│   └── jamaica-inn.md              --> genres: suspense, romance
+│   └── pride-and-prejudice.md      --> genres: romance
+└── _index.md
+```
+
+To capture the "genres" `Taxonomy` object from within any template, use the [`Taxonomies`] method on a `Site` object.
+
+```go-html-template
+{{ $taxonomyObject := .Site.Taxonomies.genres }}
+```
+
+To capture the "genres" `Taxonomy` object when rendering its page with a taxonomy template, use the [`Terms`] method on the page's [`Data`] object:
+
+```go-html-template {file="layouts/_default/taxonomy.html"}
+{{ $taxonomyObject := .Data.Terms }}
+```
+
+To inspect the data structure:
+
+```go-html-template
+<pre>{{ debug.Dump $taxonomyObject }}</pre>
+```
+
+Although the [`Alphabetical`] and [`ByCount`] methods provide a better data structure for ranging through the taxonomy, you can render the weighted pages by term directly from the `Taxonomy` object:
+
+```go-html-template
+{{ range $term, $weightedPages := $taxonomyObject }}
+  <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
+  <ul>
+    {{ range $weightedPages }}
+      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+    {{ end }}
+  </ul>
+{{ end }}
+```
+
+In the example above, the first anchor element is a link to the term page.
+
+[`Alphabetical`]: /methods/taxonomy/alphabetical/
+[`ByCount`]: /methods/taxonomy/bycount/
+
+[`data`]: /methods/page/data/
+[`terms`]: /methods/page/data/#in-a-taxonomy-template
+[`taxonomies`]: /methods/site/taxonomies/
diff --git a/content/en/_common/methods/taxonomy/ordered-taxonomy-element-methods.md b/content/en/_common/methods/taxonomy/ordered-taxonomy-element-methods.md
new file mode 100644 (file)
index 0000000..ec5f8e4
--- /dev/null
@@ -0,0 +1,24 @@
+---
+_comment: Do not remove front matter.
+---
+
+An ordered taxonomy is a slice, where each element is an object that contains the term and a slice of its weighted pages.
+
+Each element of the slice provides these methods:
+
+Count
+: (`int`) Returns the number of pages to which the term is assigned.
+
+Page
+: (`page.Page`) Returns the term's `Page` object, useful for linking to the term page.
+
+Pages
+: (`page.Pages`) Returns a `Pages` object containing the `Page` objects to which the term is assigned, sorted by [taxonomic weight](g). To sort or group, use any of the [methods] available to the `Pages` object. For example, sort by the last modification date.
+
+Term
+: (`string`) Returns the term name.
+
+WeightedPages
+: (`page.WeightedPages`) Returns a slice of weighted pages to which the term is assigned, sorted by taxonomic weight. The `Pages` method above is more flexible, allowing you to sort and group.
+
+[methods]: /methods/pages/
diff --git a/content/en/_common/parsable-date-time-strings.md b/content/en/_common/parsable-date-time-strings.md
new file mode 100644 (file)
index 0000000..9284276
--- /dev/null
@@ -0,0 +1,14 @@
+---
+_comment: Do not remove front matter.
+---
+
+Format|Time zone
+:--|:--
+`2023-10-15T13:18:50-07:00`|`America/Los_Angeles`
+`2023-10-15T13:18:50-0700`|`America/Los_Angeles`
+`2023-10-15T13:18:50Z`|`Etc/UTC`
+`2023-10-15T13:18:50`|Default is `Etc/UTC`
+`2023-10-15`|Default is `Etc/UTC`
+`15 Oct 2023`|Default is `Etc/UTC`
+
+The last three examples are not fully qualified, and default to the `Etc/UTC` time zone.
diff --git a/content/en/_common/permalink-tokens.md b/content/en/_common/permalink-tokens.md
new file mode 100644 (file)
index 0000000..4aec68f
--- /dev/null
@@ -0,0 +1,71 @@
+---
+_comment: Do not remove front matter.
+---
+
+`:year`
+: The 4-digit year as defined in the front matter `date` field.
+
+`:month`
+: The 2-digit month as defined in the front matter `date` field.
+
+`:monthname`
+: The name of the month as defined in the front matter `date` field.
+
+`:day`
+: The 2-digit day as defined in the front matter `date` field.
+
+`:weekday`
+: The 1-digit day of the week as defined in the front matter `date` field  (Sunday = `0`).
+
+`:weekdayname`
+: The name of the day of the week as defined in the front matter `date` field.
+
+`:yearday`
+: The 1- to 3-digit day of the year as defined in the front matter `date` field.
+
+`:section`
+: The content's section.
+
+`:sections`
+: The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
+
+`:title`
+: The `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
+
+`:slug`
+: The `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
+
+`:filename`
+: The content's file name without extension, applicable to the `page` page kind.
+
+  {{< deprecated-in v0.144.0 >}}
+  The `:filename` token has been deprecated. Use `:contentbasename` instead.
+  {{< /deprecated-in >}}
+
+`:slugorfilename`
+: The `slug` as defined in front matter, else the content's file name without extension, applicable to the `page` page kind.
+
+  {{< deprecated-in v0.144.0 >}}
+  The `:slugorfilename` token has been deprecated. Use `:slugorcontentbasename` instead.
+  {{< /deprecated-in >}}
+
+`:contentbasename`
+: {{< new-in 0.144.0 />}}
+: The [content base name].
+
+[content base name]: /methods/page/file/#contentbasename
+
+`:slugorcontentbasename`
+: {{< new-in 0.144.0 />}}
+: The `slug` as defined in front matter, else the [content base name].
+
+For time-related values, you can also use the layout string components defined in Go's [time package]. For example:
+
+[time package]: https://pkg.go.dev/time#pkg-constants
+
+{{< code-toggle file=hugo >}}
+permalinks:
+  posts: /:06/:1/:2/:title/
+{{< /code-toggle >}}
+
+[content base name]: /methods/page/file/#contentbasename
diff --git a/content/en/_common/ref-and-relref-error-handling.md b/content/en/_common/ref-and-relref-error-handling.md
new file mode 100644 (file)
index 0000000..1d67bbc
--- /dev/null
@@ -0,0 +1,10 @@
+---
+_comment: Do not remove front matter.
+---
+
+By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+
+{{< code-toggle file=hugo >}}
+refLinksErrorLevel = 'warning'
+refLinksNotFoundURL = '/some/other/url'
+{{< /code-toggle >}}
diff --git a/content/en/_common/ref-and-relref-options.md b/content/en/_common/ref-and-relref-options.md
new file mode 100644 (file)
index 0000000..ed0dd14
--- /dev/null
@@ -0,0 +1,12 @@
+---
+_comment: Do not remove front matter.
+---
+
+path
+: (`string`) The path to the target page. Paths without a leading slash (`/`) are resolved first relative to the current page, and then relative to the rest of the site.
+
+lang
+: (`string`) The language of the target page. Default is the current language. Optional.
+
+outputFormat
+: (`string`) The output format of the target page. Default is the current output format. Optional.
diff --git a/content/en/_common/render-hooks/pageinner.md b/content/en/_common/render-hooks/pageinner.md
new file mode 100644 (file)
index 0000000..a598b88
--- /dev/null
@@ -0,0 +1,47 @@
+---
+_comment: Do not remove front matter.
+---
+
+## PageInner details
+
+{{< new-in 0.125.0 />}}
+
+The primary use case for `PageInner` is to resolve links and [page resources](g) relative to an included `Page`. For example, create an "include" shortcode to compose a page from multiple content files, while preserving a global context for footnotes and the table of contents:
+
+```go-html-template {file="layouts/shortcodes/include.html" copy=true}
+{{ with .Get 0 }}
+  {{ with $.Page.GetPage . }}
+    {{- .RenderShortcodes }}
+  {{ else }}
+    {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
+  {{ end }}
+{{ else }}
+  {{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }}
+{{ end }}
+```
+
+Then call the shortcode in your Markdown:
+
+```text {file="content/posts/p1.md"}
+{{%/* include "/posts/p2" */%}}
+```
+
+Any render hook triggered while rendering `/posts/p2` will get:
+
+- `/posts/p1` when calling `Page`
+- `/posts/p2` when calling `PageInner`
+
+`PageInner` falls back to the value of `Page` if not relevant, and always returns a value.
+
+> [!note]
+> The `PageInner` method is only relevant for shortcodes that invoke the [`RenderShortcodes`] method, and you must call the shortcode using [Markdown notation].
+
+As a practical example, Hugo's embedded link and image render hooks use the `PageInner` method to resolve markdown link and image destinations. See the source code for each:
+
+- [Embedded link render hook]
+- [Embedded image render hook]
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes/
+[Markdown notation]: /content-management/shortcodes/#notation
+[Embedded link render hook]: {{% eturl render-link %}}
+[Embedded image render hook]: {{% eturl render-image %}}
index 074216f7b96101583b6454602361315a710239ff..1dd776130c59399f5961161de848d90e157bfb6b 100644 (file)
@@ -4,7 +4,7 @@
 
 ## Methods
 
-###### Set
+### Set
 
 Sets the value of the given key.
 
@@ -12,7 +12,7 @@ Sets the value of the given key.
 {{ .Store.Set "greeting" "Hello" }}
 ```
 
-###### Get
+### Get
 
 Gets the value of the given key.
 
@@ -21,7 +21,7 @@ Gets the value of the given key.
 {{ .Store.Get "greeting" }} → Hello
 ```
 
-###### Add
+### Add
 
 Adds the given value to the existing value(s) of the given key.
 
@@ -45,7 +45,7 @@ For single values, `Add` accepts values that support Go's `+` operator. If the f
 {{ .Store.Get "greetings" }} → [Hello Welcome Cheers]
 ```
 
-###### SetInMap
+### SetInMap
 
 Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`.
 
@@ -53,9 +53,9 @@ Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to th
 {{ .Store.SetInMap "greetings" "english" "Hello" }}
 {{ .Store.SetInMap "greetings" "french" "Bonjour" }}
 {{ .Store.Get "greetings" }} → map[english:Hello french:Bonjour]
-```
+  ```
 
-###### DeleteInMap
+### DeleteInMap
 
 Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 
@@ -66,7 +66,7 @@ Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 {{ .Store.Get "greetings" }} → map[french:Bonjour]
 ```
 
-###### GetSortedMapValues
+### GetSortedMapValues
 
 Returns an array of values from `key` sorted by `mapKey`.
 
@@ -76,7 +76,7 @@ Returns an array of values from `key` sorted by `mapKey`.
 {{ .Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]
 ```
 
-###### Delete
+### Delete
 
 Removes the given key.
 
diff --git a/content/en/_common/syntax-highlighting-options.md b/content/en/_common/syntax-highlighting-options.md
new file mode 100644 (file)
index 0000000..36144e0
--- /dev/null
@@ -0,0 +1,56 @@
+---
+_comment: Do not remove front matter.
+---
+
+anchorLineNos
+: (`bool`) Whether to render each line number as an HTML anchor element, setting the `id` attribute of the surrounding `span` element to the line number. Irrelevant if `lineNos` is `false`. Default is `false`.
+
+codeFences
+: (`bool`) Whether to highlight fenced code blocks. Default is `true`.
+
+guessSyntax
+: (`bool`) Whether to automatically detect the language if the `LANG` argument is blank or set to a language for which there is no corresponding [lexer](g). Falls back to a plain text lexer if unable to automatically detect the language. Default is `false`.
+
+  > [!note]
+  > The Chroma syntax highlighter includes lexers for approximately 250 languages, but only 5 of these have implemented automatic language detection.
+
+hl_Lines
+: (`string`) A space-delimited list of lines to emphasize within the highlighted code. To emphasize lines 2, 3, 4, and 7, set this value to `2-4 7`. This option is independent of the `lineNoStart` option.
+
+hl_inline
+: (`bool`) Whether to render the highlighted code without a wrapping container. Default is `false`.
+
+lineAnchors
+: (`string`) When rendering a line number as an HTML anchor element, prepend this value to the `id` attribute of the surrounding `span` element. This provides unique `id` attributes when a page contains two or more code blocks. Irrelevant if `lineNos` or `anchorLineNos` is `false`.
+
+lineNoStart
+: (`int`) The number to display at the beginning of the first line. Irrelevant if `lineNos` is `false`. Default is `1`.
+
+lineNos
+: (`any`) Controls line number display. Default is `false`.
+  - `true`: Enable line numbers, controlled by `lineNumbersInTable`.
+  - `false`: Disable line numbers.
+  - `inline`: Enable inline line numbers (sets `lineNumbersInTable` to `false`).
+  - `table`: Enable table-based line numbers (sets `lineNumbersInTable` to `true`).
+
+lineNumbersInTable
+: (`bool`) Whether to render the highlighted code in an HTML table with two cells. The left table cell contains the line numbers, while the right table cell contains the code. Irrelevant if `lineNos` is `false`. Default is `true`.
+
+noClasses
+: (`bool`) Whether to use inline CSS styles instead of an external CSS file. Default is `true`. To use an external CSS file, set this value to `false` and generate the CSS file from the command line:
+
+  ```text
+  hugo gen chromastyles --style=monokai > syntax.css
+  ```
+
+style
+: (`string`) The CSS styles to apply to the highlighted code. Case-sensitive. Default is `monokai`. See [syntax highlighting styles].
+
+tabWidth
+: (`int`) Substitute this number of spaces for each tab character in your highlighted code. Irrelevant if `noClasses` is `false`. Default is `4`.
+
+wrapperClass
+: {{< new-in 0.140.2 />}}
+: (`string`) The class or classes to use for the outermost element of the highlighted code. Default is `highlight`.
+
+[syntax highlighting styles]: /quick-reference/syntax-highlighting-styles/
diff --git a/content/en/_common/time-layout-string.md b/content/en/_common/time-layout-string.md
new file mode 100644 (file)
index 0000000..3664eae
--- /dev/null
@@ -0,0 +1,46 @@
+---
+_comment: Do not remove front matter.
+---
+
+Format a `time.Time` value based on [Go's reference time]:
+
+[Go's reference time]: https://pkg.go.dev/time#pkg-constants
+
+```text
+Mon Jan 2 15:04:05 MST 2006
+```
+
+Create a layout string using these components:
+
+Description|Valid components
+:--|:--
+Year|`"2006" "06"`
+Month|`"Jan" "January" "01" "1"`
+Day of the week|`"Mon" "Monday"`
+Day of the month|`"2" "_2" "02"`
+Day of the year|`"__2" "002"`
+Hour|`"15" "3" "03"`
+Minute|`"4" "04"`
+Second|`"5" "05"`
+AM/PM mark|`"PM"`
+Time zone offsets|`"-0700" "-07:00" "-07" "-070000" "-07:00:00"`
+
+Replace the sign in the layout string with a Z to print Z instead of an offset for the UTC zone.
+
+Description|Valid components
+:--|:--
+Time zone offsets|`"Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00"`
+
+```go-html-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $t = time.AsTime $t }}
+{{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }}
+
+{{ $t }} → Jan 27, 2023 11:44 PM -08:00 
+```
+
+Strings such as `PST` and `CET` are not time zones. They are time zone _abbreviations_.
+
+Strings such as `-07:00` and `+01:00` are not time zones. They are time zone _offsets_.
+
+A time zone is a geographic area with the same local time. For example, the time zone abbreviated by `PST` and `PDT` (depending on Daylight Savings Time) is `America/Los_Angeles`.
index 96ba0c4132ab6c62da9a44724550000a819692fb..358f6a4d9ab79eede42982cb12057486779976a7 100644 (file)
@@ -1,49 +1,4 @@
 ---
-title: The world’s fastest framework for building websites
-date: 2017-03-02T12:00:00-05:00
-features:
-  - heading: Blistering Speed
-    image_path: /images/icon-fast.svg
-    tagline: What's modern about waiting for your site to build?
-    copy: Hugo is the fastest tool of its kind. At <1 ms per page, the average site builds in less than a second.
-
-  - heading: Robust Content Management
-    image_path: /images/icon-content-management.svg
-    tagline: Flexibility rules. Hugo is a content strategist's dream.
-    copy: Hugo supports unlimited content types, taxonomies, menus, dynamic API-driven content, and more, all without plugins.
-
-  - heading: Shortcodes
-    image_path: /images/icon-shortcodes.svg
-    tagline: Hugo's shortcodes are Markdown's hidden superpower.
-    copy: We love the beautiful simplicity of Markdown’s syntax, but there are times when we want more flexibility. Hugo shortcodes allow for both beauty and flexibility.
-
-  - heading: Built-in Templates
-    image_path: /images/icon-built-in-templates.svg
-    tagline: Hugo has common patterns to get your work done quickly.
-    copy: Hugo ships with pre-made templates to make quick work of SEO, commenting, analytics and other functions. One line of code, and you're done.
-
-  - heading: Multilingual and i18n
-    image_path: /images/icon-multilingual2.svg
-    tagline: Polyglot baked in.
-    copy: Hugo provides full i18n support for multi-language sites with the same straightforward development experience Hugo users love in single-language sites.
-
-  - heading: Custom Outputs
-    image_path: /images/icon-custom-outputs.svg
-    tagline: HTML not enough?
-    copy: Hugo allows you to output your content in multiple formats, including JSON or AMP, and makes it easy to create your own.
-sections:
-  - heading: "300+ Themes"
-    cta: Check out the Hugo themes.
-    link: https://themes.gohugo.io/
-    color_classes: bg-accent-color white
-    image: /images/homepage-screenshot-hugo-themes.jpg
-    copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
-  - heading: "Capable Templating"
-    cta: Get Started.
-    link: templates/
-    color_classes: bg-primary-color-light black
-    image: /images/home-page-templating-example.png
-    copy: "Hugo's Go-based templating provides just the right amount of logic to build anything from the simple to complex."
+title: The world's fastest framework for building websites
+description: Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
 ---
-
-Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
index f15c38dcce85c2b697f22e29865619a1a1d742ce..e5580095973ea66b160334840801cdd6d8298c15 100644 (file)
@@ -1,16 +1,9 @@
 ---
 title: About Hugo
-linktitle: About
+linkTitle: About
 description: Learn about Hugo and its features, privacy protections, and security model.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: about-hugo-in-this-section
-    parent: about
-    weight: 10
 weight: 10
 aliases: [/about-hugo/,/docs/]
 ---
-
-Learn about Hugo and its features, privacy protections, and security model.
index 883d534077079837e5808141b617b47a8d805b1c..ff1a6b8eb668fc28069236c4f7348cf7dc5a7de6 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Features
 description: Hugo's rich and powerful feature set provides the framework and tools to create static sites that build in seconds, often less.
-categories: [about]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: about
-    weight: 30
-weight: 30
-toc: true
+weight: 20
 ---
 
 ## Framework
@@ -61,7 +56,7 @@ toc: true
 : Syntactically highlight code examples using Hugo's embedded syntax highlighter, enabled by default for fenced code blocks in Markdown. The syntax highlighter supports hundreds of code languages and dozens of styles.
 
 [Shortcodes]
-: Use Hugo's embedded shortcodes, or create your own, to insert complex content. For example, use shortcodes to include `audio` and `video` elements, render tables from local or remote data sources, insert snippets from other  pages, and more.
+: Use Hugo's embedded shortcodes, or create your own, to insert complex content. For example, use shortcodes to include `audio` and `video` elements, render tables from local or remote data sources, insert snippets from other pages, and more.
 
 ## Content management
 
@@ -83,7 +78,7 @@ toc: true
 ## Asset pipelines
 
 [Image processing]
-: Convert, resize, crop, rotate,  adjust colors, apply filters, overlay text and images, and extract EXIF data.
+: Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data.
 
 [JavaScript bundling]
 : Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing.
@@ -107,18 +102,18 @@ toc: true
 
 [Multilingual]: /content-management/multilingual/
 [Multiplatform]: /installation/
-[Output formats]: /templates/output-formats/
+[Output formats]: /configuration/output-formats/
 [Templates]: /templates/introduction/
 [Themes]: https://themes.gohugo.io/
 [Modules]: /hugo-modules/
-[Privacy]: /about/privacy/
+[Privacy]: /configuration/privacy/
 [Security]: /about/security/
 
 [Content formats]: /content-management/formats/
 [CommonMark]: https://spec.commonmark.org/current/
 [GitHub Flavored Markdown]: https://github.github.com/gfm/
 [Markdown attributes]: /content-management/markdown-attributes/
-[Markdown extensions]: /getting-started/configuration-markup/#goldmark-extensions
+[Markdown extensions]: /configuration/markup/#extensions
 [Markdown render hooks]: /render-hooks/introduction/
 [Diagrams]: /content-management/diagrams/
 [Mathematics]: /content-management/mathematics/
@@ -137,5 +132,5 @@ toc: true
 [Tailwind CSS processing]: /functions/css/tailwindcss/
 
 [Caching]: /functions/partials/includecached/
-[Segmentation]: /getting-started/configuration/#configure-segments
-[Minification]: /getting-started/configuration/#configure-minify
+[Segmentation]: /configuration/segments/
+[Minification]: /configuration/minify/
index d89938eed6dc0e41289804c32a76072784795731..9586d08f8def0b98cdc4ac343df16f2694534868 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Introduction
-description: Hugo is a static site generator written in Go, optimized for speed and designed for flexibility. 
-categories: [about]
+description: Hugo is a static site generator written in Go, optimized for speed and designed for flexibility.
+categories: []
 keywords: []
-menu:
-  docs:
-    identifier: about-introduction
-    parent: about
-    weight: 20
-weight: 20
+weight: 10
 aliases: [/about/what-is-hugo/,/about/benefits/]
 ---
 
@@ -32,8 +27,8 @@ Learn more about Hugo's [features], [privacy protections], and [security model].
 [Go]: https://go.dev
 [Hugo Modules]: /hugo-modules/
 [static site generator]: https://en.wikipedia.org/wiki/Static_site_generator
-[features]: /about/features
-[security model]: /about/security
-[privacy protections]: /about/privacy
+[features]: /about/features/
+[security model]: about/security/
+[privacy protections]: /configuration/privacy
 
 {{< youtube 0RKpf3rK57I >}}
index f434b233e7ebfc35fa6a7c8eccc72e07499bdff6..06a3a695d2b2cdd3efcbfaa352019727f48bf444 100644 (file)
@@ -1,18 +1,13 @@
 ---
 title: License
 description: Hugo is released under the Apache 2.0 license.
-categories: [about]
-keywords: [apache]
-menu:
-  docs:
-    parent: about
-    weight: 60
-weight: 60
+categories: []
+keywords: []
+weight: 40
 ---
 
 ## Apache License
 
-
 _Version 2.0, January 2004_  
 _<http://www.apache.org/licenses/>_
 
diff --git a/content/en/about/privacy.md b/content/en/about/privacy.md
deleted file mode 100644 (file)
index ef4faa7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Privacy
-linkTitle: Privacy
-description: Configure your site to help comply with regional privacy regulations.
-categories: [about]
-keywords: ["GDPR", "Privacy", "Data Protection"]
-menu:
-  docs:
-    parent: about
-    weight: 40
-weight: 40
-toc: true
-aliases: [/gdpr/,/about/hugo-and-gdpr/]
-toc: true
----
-
-## Responsibility
-
-Site authors are responsible for ensuring compliance with regional privacy regulations, including but not limited to:
-
-- GDPR (General Data Protection Regulation): Applies to individuals within the European Union and the European Economic Area.
-- CCPA (California Consumer Privacy Act): Applies to California residents.
-- CPRA (California Privacy Rights Act): Expands upon the CCPA with stronger consumer privacy protections.
-- Virginia Consumer Data Protection Act (CDPA): Applies to businesses that collect, process, or sell the personal data of Virginia residents.
-
-Hugo's privacy settings can assist in compliance efforts.
-
-## Embedded templates
-
-Hugo provides [embedded templates](g) to simplify site and content creation. Some of these templates interact with external services. For example, the `youtube` shortcode connects with YouTube's servers to embed videos on your site.
-
-Some of these templates include settings to enhance privacy.
-
-
-## Configuration
-
-{{% note %}}
-These settings affect the behavior of some of Hugo's embedded templates. These settings may or may not affect the behavior of templates provided by third parties in their modules or themes.
-{{% /note %}}
-
-These are the default privacy settings for Hugo's embedded templates:
-
-{{< code-toggle config=privacy />}}
-
-See each template's documentation for a description of its privacy settings:
-
-- [Disqus partial](/templates/embedded/#privacy-disqus)
-- [Google Analytics partial](/templates/embedded/#privacy-google-analytics)
-- [Instagram shortcode](/shortcodes/instagram/#privacy)
-- [Vimeo shortcode](/shortcodes/vimeo/#privacy)
-- [X shortcode](/shortcodes/x/#privacy)
-- [YouTube shortcode](/shortcodes/youtube/#privacy)
index 29f2c7ed1847adf61c936c15ec874e179071ef40..509ca6a759f32aea5d1aae5c8e8367e1620636b4 100644 (file)
@@ -2,71 +2,57 @@
 title: Security model
 linkTitle: Security 
 description: A summary of Hugo's security model.
-categories: [about]
-keywords: [security,privacy]
-menu:
-  docs:
-    parent: about
-    weight: 50
-weight: 50
-toc: true
+categories: []
+keywords: []
+weight: 30
 aliases: [/about/security-model/]
 ---
 
 ## Runtime security
 
-Hugo produces static output, so once built, the runtime is the browser (assuming the output is HTML) and any server (API) that you integrate with.
+Hugo generates static websites, meaning the final output runs directly in the browser and interacts with any integrated APIs. However, during development and site building, the `hugo` executable itself is the runtime environment.
 
-But when developing and building your site, the runtime is the `hugo` executable. Securing a runtime can be [a real challenge](https://blog.logrocket.com/how-to-protect-your-node-js-applications-from-malicious-dependencies-5f2e60ea08f9/).
+Securing a runtime is a complex task. Hugo addresses this through a robust sandboxing approach and a strict security policy with default protections. Key features include:
 
-**Hugo's main approach is that of sandboxing and a security policy with strict defaults:**
+- Virtual file system: Hugo employs a virtual file system, limiting file access. Only the main project, not external components, can access files or directories outside the project root.
+- Read-Only access: User-defined components have read-only access to the file system, preventing unintended modifications.
+- Controlled external binaries: While Hugo utilizes external binaries for features like Asciidoctor support, these are strictly predefined with specific flags and are disabled by default. The [security policy] details these limitations.
+- No arbitrary commands: To mitigate risks, Hugo intentionally avoids implementing general functions that would allow users to execute arbitrary operating system commands.
 
-* Hugo has a virtual file system and only the main project (not third-party components) is allowed to mount directories or files outside the project root.
-* User-defined components have read-only access to the filesystem.
-* We shell out to some external binaries to support [Asciidoctor](/content-management/formats/#formats) and similar, but those binaries and their flags are predefined and disabled by default (see [Security Policy](#security-policy)). General functions to run arbitrary external OS commands have been [discussed](https://github.com/gohugoio/hugo/issues/796), but not implemented because of security concerns.
+This combination of sandboxing and strict defaults effectively minimizes potential security vulnerabilities during the Hugo build process.
 
-## Security policy
+[security policy]: /configuration/security/
 
-Hugo has a built-in security policy that restricts access to [os/exec](https://pkg.go.dev/os/exec), remote communication and similar.
-
-The default configuration is listed below. Any build using features not in the allow list of the security policy will fail with a detailed message about what needs to be done. Most of these settings are allow lists (string or slice, [Regular Expressions](https://pkg.go.dev/regexp) or `none` which matches nothing).
-
-{{< code-toggle config=security />}}
-
-By default, Hugo permits the [`resources.GetRemote`] function to download files with media types corresponding to an internal allow list. To add media types to the allow list:
+## Dependency security
 
-[`resources.GetRemote`]: /functions/resources/getremote
+Hugo utilizes [Go Modules] to manage its dependencies, compiling as a static binary. Go Modules create a `go.sum` file, a critical security feature. This file acts as a database, storing the expected cryptographic checksums of all dependencies, including those required indirectly (transitive dependencies).
 
-{{< code-toggle file=hugo >}}
-[security.http]
-mediaTypes = ['^image/avif$']
-{{< /code-toggle >}}
+[Hugo Modules], which extend Go Modules' functionality, also produce a `go.sum` file. To ensure dependency integrity, commit this `go.sum` file to your version control. If Hugo detects a checksum mismatch during the build process, it will fail, indicating a possible attempt to [tamper with your project's dependencies].
 
-Note that these and other configuration settings in Hugo can be overridden by the OS environment. For example, if you want to block all remote HTTP fetching of data:
+[Go Modules]: https://go.dev/wiki/Modules#modules
+[Hugo Modules]: /hugo-modules/
+[tamper with your project's dependencies]: https://julienrenaux.fr/2019/12/20/github-actions-security-risk/
 
-```txt
-HUGO_SECURITY_HTTP_URLS=none hugo
-```
+## Web application security
 
-## Dependency security
+Hugo's security philosophy is rooted in established security standards, primarily aligning with the threats defined by [OWASP]. For HTML output, Hugo operates under a clear trust model. This model assumes that template and configuration authors, the developers, are trustworthy. However, the data supplied to these templates is inherently considered untrusted. This distinction is crucial for understanding how Hugo handles potential security risks.
 
-Hugo is built as a static binary using [Go Modules](https://github.com/golang/go/wiki/Modules) to manage its dependencies. Go Modules have several safeguards, one of them being the `go.sum` file. This is a database of the expected cryptographic checksums of all of your dependencies, including transitive dependencies.
+[OWASP]: https://en.wikipedia.org/wiki/OWASP
 
-[Hugo Modules](/hugo-modules/) is a feature built on top of the functionality of Go Modules. Like Go Modules, a Hugo project using Hugo Modules will have a `go.sum` file. We recommend that you commit this file to your version control system. The Hugo build will fail if there is a checksum mismatch, which would be an indication of [dependency tampering](https://julienrenaux.fr/2019/12/20/github-actions-security-risk/).
+To prevent unintended escaping of data that developers know is safe, Hugo provides  [`safe`] functions, such as [`safeHTML`]. These functions allow developers to explicitly mark data as trusted, bypassing the default escaping mechanisms. This is essential for scenarios where data is generated or sourced from reliable sources. However, an exception exists: enabling [inline shortcodes]. By activating this feature, you are implicitly trusting the logic within the shortcodes and the data contained within your content files.
 
-## Web application security
+[`safeHTML`]: /functions/safe/html/
+[inline shortcodes]: /content-management/shortcodes/#inline
 
-These are the security threats as defined by [OWASP](https://en.wikipedia.org/wiki/OWASP).
+It's vital to remember that Hugo is a static site generator. This architectural choice significantly reduces the attack surface by eliminating the complexities and vulnerabilities associated with dynamic user input. Unlike dynamic websites, Hugo generates static HTML files, minimizing the risk of real-time attacks. Regarding content, Hugo's default Markdown renderer is [configured to sanitize] potentially unsafe content. This default behavior ensures that potentially malicious code or scripts are removed or escaped. However, this setting can be reconfigured if you have a high degree of confidence in the safety of your content sources.
 
-For HTML output, this is the core security model:
+[configured to sanitize]: /configuration/markup/#rendererunsafe
 
-<https://pkg.go.dev/html/template#hdr-Security_Model>
+In essence, Hugo prioritizes secure output by establishing a clear trust boundary between developers and data. By default, it errs on the side of caution, sanitizing potentially unsafe content and escaping data. Developers have the flexibility to adjust these defaults through [`safe`] functions and [configuration options], but they must do so with a clear understanding of the security implications. Hugo's static site generation model further strengthens its security posture by minimizing dynamic vulnerabilities.
 
-In short:
+[`safe`]: /functions/safe
+[configuration options]: /configuration/security
 
-Template and configuration authors (you) are trusted, but the data you send in is not.
-This is why you sometimes need to use the _safe_ functions, such as `safeHTML`, to avoid escaping of data you know is safe.
-There is one exception to the above, as noted in the documentation: If you enable inline shortcodes, you also say that the shortcodes and data handling in content files are trusted, as those macros are treated as pure text.
-It may be worth adding that Hugo is a static site generator with no concept of dynamic user input.
+## Configuration
 
-For content, the default Markdown renderer is [configured](/getting-started/configuration-markup) to remove or escape potentially unsafe content. This behavior can be reconfigured if you trust your content.
+See [configure security](/configuration/security/).
index 89f673bf21a33071cadcd9519768b435ff713e05..5869bfd9d033dff39034a9b401b58bb07440c094 100644 (file)
@@ -4,9 +4,5 @@ linkTitle: CLI
 description: Use the command line interface (CLI) to manage your site.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: commands
-    weight: 10
 weight: 10
 ---
index 42f882ad7e8e51a59210a78b71b54ddf1a5a2263..ef0bca9a5f63781872ec8a71c1d447a27bbd9f1f 100644 (file)
@@ -72,6 +72,7 @@ hugo [flags]
 * [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 * [hugo config](/commands/hugo_config/)         - Display site configuration
 * [hugo convert](/commands/hugo_convert/)       - Convert front matter to another format
+* [hugo deploy](/commands/hugo_deploy/)         - Deploy your site to a cloud provider
 * [hugo env](/commands/hugo_env/)       - Display version and environment info
 * [hugo gen](/commands/hugo_gen/)       - Generate documentation and syntax highlighting styles
 * [hugo import](/commands/hugo_import/)         - Import a site from another system
diff --git a/content/en/configuration/_index.md b/content/en/configuration/_index.md
new file mode 100644 (file)
index 0000000..7cb08cc
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: Configuration
+description: Configure your site.
+categories: []
+keywords: []
+weight: 10
+---
diff --git a/content/en/configuration/all.md b/content/en/configuration/all.md
new file mode 100644 (file)
index 0000000..9bc0505
--- /dev/null
@@ -0,0 +1,362 @@
+---
+title: All settings
+description: The complete list of Hugo configuration settings.
+categories: []
+keywords: []
+weight: 20
+aliases: [/getting-started/configuration/]
+---
+
+## Settings
+
+archetypeDir
+: (`string`) The designated directory for [archetypes](g). Default is `archetypes`. {{% module-mounts-note %}}
+
+assetDir
+: (`string`) The designated directory for [global resources](g). Default is `assets`. {{% module-mounts-note %}}
+
+baseURL
+: (`string`) The absolute URL of your published site including the protocol, host, path, and a trailing slash.
+
+build
+: See [configure build](/configuration/build/).
+
+buildDrafts
+: (`bool`) Whether to include draft content when building a site. Default is `false`.
+
+buildExpired
+: (`bool`) Whether to include expired content when building a site. Default is `false`.
+
+buildFuture
+: (`bool`) Whether to include future content when building a site. Default is `false`.
+
+cacheDir
+: (`string`) The designated cache directory. See&nbsp;[details](#cache-directory).
+
+caches
+: See [configure file caches](/configuration/caches/).
+
+canonifyURLs
+: (`bool`) See&nbsp;[details](/content-management/urls/#canonical-urls) before enabling this feature. Default is `false`.
+
+capitalizeListTitles
+: {{< new-in 0.123.3 />}}
+: (`bool`) Whether to capitalize automatic list titles. Applicable to section, taxonomy, and term pages. Default is `true`. Use the [`titleCaseStyle`](#titlecasestyle) setting to configure capitalization rules.
+
+cascade
+: See [configure cascade](/configuration/cascade/).
+
+cleanDestinationDir
+: (`bool`) Whether to remove files from the site's destination directory that do not have corresponding files in the `static` directory during the build. Default is `false`.
+
+contentDir
+: (`string`) The designated directory for content files. Default is `content`. {{% module-mounts-note %}}
+
+copyright
+: (`string`) The copyright notice for a site, typically displayed in the footer.
+
+dataDir
+: (`string`) The designated directory for data files. Default is `data`. {{% module-mounts-note %}}
+
+defaultContentLanguage
+: (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined language keys. Default is `en`.
+
+defaultContentLanguageInSubdir
+: (`bool`) Whether to publish the default language site to a subdirectory matching the `defaultContentLanguage`. Default is `false`.
+
+defaultOutputFormat
+: (`string`) The default output format for the site. If unspecified, the first available format in the defined order (by weight, then alphabetically) will be used.
+
+deployment
+: See [configure deployment](/configuration/deployment/).
+
+disableAliases
+: (`bool`) Whether to disable generation of alias redirects. Even if this option is enabled, the defined aliases will still be present on the page. This allows you to manage redirects separately, for example, by generating 301 redirects in an `.htaccess` file or a Netlify `_redirects` file using a custom output format. Default is `false`.
+
+disableDefaultLanguageRedirect
+: {{< new-in 0.140.0 />}}
+: (`bool`) Whether to disable generation of the alias redirect to the default language when `DefaultContentLanguageInSubdir` is `true`. Default is `false`.
+
+disableHugoGeneratorInject
+: (`bool`) Whether to disable injection of a `<meta name="generator">` tag into the home page. Default is `false`.
+
+disableKinds
+: (`[]string`) A slice of page [kinds](g) to disable during the build process, any of `404`, `home`, `page`, `robotstxt`, `rss`, `section`, `sitemap`, `taxonomy`, or `term`.
+
+disableLanguages
+: (`[]string]`) A slice of language keys representing the languages to disable during the build process. Although this is functional, consider using the [`disabled`] key under each language instead.
+
+disableLiveReload
+: (`bool`) Whether to disable automatic live reloading of the browser window. Default is `false`.
+
+disablePathToLower
+: (`bool`) Whether to disable transformation of page URLs to lower case.
+
+enableEmoji
+: (`bool`) Whether to allow emoji in Markdown. Default is `false`.
+
+enableGitInfo
+: (`bool`) For sites under Git version control, whether to enable the [`GitInfo`] object for each page. With the [default front matter configuration], the `Lastmod` method on a `Page` object will return the Git author date. Default is `false`.
+
+enableMissingTranslationPlaceholders
+: (`bool`) Whether to show a placeholder instead of the default value or an empty string if a translation is missing. Default is `false`.
+
+enableRobotsTXT
+: (`bool`) Whether to enable generation of a `robots.txt` file. Default is `false`.
+
+environment
+: (`string`) The build environment. Default is `production` when running `hugo` and `development` when running `hugo server`.
+
+frontmatter
+: See [configure front matter](/configuration/front-matter/).
+
+hasCJKLanguage
+: (`bool`) Whether to automatically detect [CJK](g) languages in content. Affects the values returned by the [`WordCount`] and [`FuzzyWordCount`] methods. Default is `false`.
+
+HTTPCache
+: See [configure HTTP cache](/configuration/http-cache/).
+
+i18nDir
+: (`string`) The designated directory for translation tables. Default is `i18n`. {{% module-mounts-note %}}
+
+ignoreCache
+: (`bool`) Whether to ignore the cache directory. Default is `false`.
+
+ignoreFiles
+: (`[]string]`) A slice of [regular expressions](g) used to exclude specific files from a build. These expressions are matched against the absolute file path and apply to files within the `content`, `data`, and `i18n` directories. For more advanced file exclusion options, see the section on [module mounts].
+
+ignoreLogs
+: (`[]string`) A slice of message identifiers corresponding to warnings and errors you wish to suppress. See [`erroridf`] and [`warnidf`].
+
+ignoreVendorPaths
+: (`string`) A [glob](g) pattern matching the module paths to exclude from the `_vendor` directory.
+
+imaging
+: See [configure imaging](/configuration/imaging/).
+
+languageCode
+: (`string`) The site's language tag, conforming to the syntax described in [RFC 5646]. This value does not affect translations or localization. Hugo uses this value to populate:
+
+  - The `language` element in the [embedded RSS template]
+  - The `lang` attribute of the `html` element in the [embedded alias template]
+  - The `og:locale` `meta` element in the [embedded Open Graph template]
+
+  When present in the root of the configuration, this value is ignored if one or more language keys exists. Please specify this value independently for each language key.
+
+languages
+: See [configure languages](/configuration/languages/).
+
+layoutDir
+: (`string`) The designated directory for templates. Default is `layouts`. {{% module-mounts-note %}}
+
+mainSections
+: (`string` or `[]string`) The main sections of a site. If set, the [`MainSections`] method on the `Site` object returns the given sections, otherwise it returns the section with the most pages.
+
+markup
+: See [configure markup](/configuration/markup/).
+
+mediaTypes
+: See [configure media types](/configuration/media-types/).
+
+menus
+: See [configure menus](/configuration/menus/).
+
+minify
+: See [configure minify](/configuration/minify/).
+
+module
+: See [configure modules](/configuration/module/).
+
+newContentEditor
+: (`string`) The editor to use when creating new content.
+
+noBuildLock
+: (`bool`) Whether to disable creation of the `.hugo_build.lock` file. Default is `false`.
+
+noChmod
+: (`bool`) Whether to disable synchronization of file permission modes. Default is `false`.
+
+noTimes
+: (`bool`) Whether to disable synchronization of file modification times. Default is `false`.
+
+outputFormats
+: See [configure output formats](/configuration/output-formats/).
+
+outputs
+: See [configure outputs](/configuration/outputs/).
+
+page
+: See [configure page](/configuration/page/).
+
+pagination
+: See [configure pagination](/configuration/pagination/).
+
+panicOnWarning
+: (`bool`) Whether to panic on the first WARNING. Default is `false`.
+
+params
+: See [configure params](/configuration/params/).
+
+permalinks
+: See [configure permalinks](/configuration/permalinks/).
+
+pluralizeListTitles
+: (`bool`) Whether to pluralize automatic list titles. Applicable to section pages. Default is `true`.
+
+printI18nWarnings
+: (`bool`) Whether to log WARNINGs for each missing translation. Default is `false`.
+
+printPathWarnings
+: (`bool`) Whether to log WARNINGs when Hugo publishes two or more files to the same path. Default is `false`.
+
+printUnusedTemplates
+: (`bool`) Whether to log WARNINGs for each unused template. Default is `false`.
+
+privacy
+: See [configure privacy](/configuration/privacy/).
+
+publishDir
+: (`string`) The designated directory for publishing the site. Default is `public`.
+
+refLinksErrorLevel
+: (`string`) The logging error level to use when the `ref` and `relref` functions, methods, and shortcodes are unable to resolve a reference to a page. Either `ERROR` or `WARNING`. Any `ERROR` will fail the build. Default is `ERROR`.
+
+refLinksNotFoundURL
+: (`string`) The URL to return when the `ref` and `relref` functions, methods, and shortcodes are unable to resolve a reference to a page.
+
+related
+: See [configure related content](/configuration/related-content/).
+
+relativeURLs
+: (`bool`) See&nbsp;[details](/content-management/urls/#relative-urls) before enabling this feature. Default is `false`.
+
+removePathAccents
+: (`bool`) Whether to remove [non-spacing marks](https://www.compart.com/en/unicode/category/Mn) from [composite characters](https://en.wikipedia.org/wiki/Precomposed_character) in content paths. Default is `false`.
+
+renderSegments
+: {{< new-in 0.124.0 />}}
+: (`[]string`) A slice of [segments](g) to render. If omitted, all segments are rendered. This option is typically set via a command-line flag, such as `hugo --renderSegments segment1,segment2`. The provided segment names must correspond to those defined in the [`segments`] configuration.
+
+resourceDir
+: (`string`) The designated directory for caching output from [asset pipelines](g). Default is `resources`.
+
+security
+: See [configure security](/configuration/security/).
+
+sectionPagesMenu
+: (`string`) When set, each top-level section will be added to the menu identified by the provided value. See&nbsp;[details](/content-management/menus/#define-automatically).
+
+segments
+: See [configure segments](/configuration/segments/).
+
+server
+: See [configure server](/configuration/server/).
+
+services
+: See [configure services](/configuration/services/).
+
+sitemap
+: See [configure sitemap](/configuration/sitemap/).
+
+staticDir
+: (`string`) The designated directory for static files. Default is `static`. {{% module-mounts-note %}}
+
+summaryLength
+: (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words.
+
+taxonomies
+: See [configure taxonomies](/configuration/taxonomies/).
+
+templateMetrics
+: (`bool`) Whether to print template execution metrics to the console. Default is `false`. See&nbsp;[details](/troubleshooting/performance/#template-metrics).
+
+templateMetricsHints
+: (`bool`) Whether to print template execution improvement hints to the console. Applicable when `templateMetrics` is `true`. Default is `false`. See&nbsp;[details](/troubleshooting/performance/#template-metrics).
+
+theme
+: (`string` or `[]string`) The [theme](g) to use. Multiple themes can be listed, with precedence given from left to right. See&nbsp;[details](/hugo-modules/theme-components/).
+
+themesDir
+: (`string`) The designated directory for themes. Default is `themes`.
+
+timeout
+: (`string`) The timeout for generating page content, either as a [duration] or in seconds. This timeout is used to prevent infinite recursion during content generation. You may need to increase this value if your pages take a long time to generate, for example, due to extensive image processing or reliance on remote content. Default is `30s`.
+
+timeZone
+: (`string`) The time zone used to parse dates without time zone offsets, including front matter date fields and values passed to the [`time.AsTime`] and [`time.Format`] template functions. The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone Database]. For example, `America/Los_Angeles` and `Europe/Oslo` are valid time zones.
+
+title
+: (`string`) The site title.
+
+titleCaseStyle
+: (`string`) The capitalization rules to follow when Hugo automatically generates a section title, or when using the [`strings.Title`] function. One of `ap`, `chicago`, `go`, `firstupper`, or `none`. Default is `ap`. See&nbsp;[details](#title-case-style).
+
+uglyurls
+: See [configure ugly URLs](/configuration/ugly-urls/).
+
+## Cache directory
+
+Hugo's file cache directory is configurable via the [`cacheDir`] configuration option or the `HUGO_CACHEDIR` environment variable. If neither is set, Hugo will use, in order of preference:
+
+1. If running on Netlify: `/opt/build/cache/hugo_cache/`. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other [CI/CD](g) vendors, please read their documentation. For an CircleCI example, see [this configuration].
+1. In a `hugo_cache` directory below the OS user cache directory as defined by Go's [os.UserCacheDir] function. On Unix systems, per the [XDG base directory specification], this is `$XDG_CACHE_HOME` if non-empty, else `$HOME/.cache`. On MacOS, this is `$HOME/Library/Caches`. On Windows, this is`%LocalAppData%`. On Plan 9, this is `$home/lib/cache`.
+1. In a  `hugo_cache_$USER` directory below the OS temp dir.
+
+To determine the current `cacheDir`:
+
+```sh
+hugo config | grep cachedir
+```
+
+## Title case style
+
+Hugo's [`titleCaseStyle`] setting governs capitalization for automatically generated section titles and the [`strings.Title`] function. By default, it follows the capitalization rules published in the Associated Press Stylebook. Change this setting to use other capitalization rules.
+
+ap
+: Use the capitalization rules published in the [Associated Press Stylebook]. This is the default.
+
+chicago
+: Use the capitalization rules published in the [Chicago Manual of Style].
+
+go
+: Capitalize the first letter of every word.
+
+firstupper
+: Capitalize the first letter of the first word.
+
+none
+: Disable transformation of automatic section titles, and disable the transformation performed by the `strings.Title` function. This is useful if you would prefer to manually capitalize section titles as needed, and to bypass opinionated theme usage of the `strings.Title` function.
+
+## Localized settings
+
+Some configuration settings, such as menus and custom parameters, can be defined separately for each language. See [configure languages](/configuration/languages/#localized-settings).
+
+[`cacheDir`]: #cachedir
+[`disabled`]: /configuration/languages/#disabled
+[`erroridf`]: /functions/fmt/erroridf/
+[`FuzzyWordCount`]: /methods/page/fuzzywordcount/
+[`GitInfo`]: /methods/page/gitinfo/
+[`MainSections`]: /methods/site/mainsections/
+[`segments`]: /configuration/segments/
+[`strings.Title`]: /functions/strings/title/
+[`strings.Title`]: /functions/strings/title
+[`Summary`]: /methods/page/summary/
+[`time.AsTime`]: /functions/time/astime/
+[`time.Format`]: /functions/time/format/
+[`titleCaseStyle`]: #titlecasestyle
+[`warnidf`]: /functions/fmt/warnidf/
+[`WordCount`]: /methods/page/wordcount/
+[Associated Press Stylebook]: https://www.apstylebook.com/
+[automatic summaries]: /content-management/summaries/#automatic-summary
+[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
+[default front matter configuration]: /configuration/front-matter/
+[duration]: https://pkg.go.dev/time#Duration
+[embedded alias template]: {{% eturl alias %}}
+[embedded Open Graph template]: {{% eturl opengraph %}}
+[embedded RSS template]: {{% eturl rss %}}
+[IANA Time Zone Database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+[module mounts]: /configuration/module/#mounts
+[os.UserCacheDir]: https://pkg.go.dev/os#UserCacheDir
+[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
+[this configuration]: https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml
+[XDG base directory specification]: https://specifications.freedesktop.org/basedir-spec/latest/
diff --git a/content/en/configuration/build.md b/content/en/configuration/build.md
new file mode 100644 (file)
index 0000000..116294f
--- /dev/null
@@ -0,0 +1,81 @@
+---
+title: Configure build
+linkTitle: Build
+description: Configure global build options.
+categories: []
+keywords: []
+aliases: [/getting-started/configuration-build/]
+---
+
+The `build` configuration section contains global build-related configuration options.
+
+{{< code-toggle config=build />}}
+
+buildStats
+: See the [build stats](#build-stats) section below.
+
+cachebusters
+: See the [cache busters](#cache-busters) section below.
+
+noJSConfigInAssets
+: (`bool`) Whether to disable writing a `jsconfig.json` in your `assets` directory with mapping of imports from running [js.Build](/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written.
+
+useResourceCacheWhen
+: (`string`) When to use the resource file cache, one of `never`, `fallback`, or `always`. Applicable when transpiling Sass to CSS. Default is `fallback`.
+
+## Cache busters
+
+The `build.cachebusters` configuration option was added to support development using Tailwind 3.x's JIT compiler where a `build` configuration may look like this:
+
+{{< code-toggle file=hugo >}}
+[build]
+  [build.buildStats]
+    enable = true
+  [[build.cachebusters]]
+    source = "assets/watching/hugo_stats\\.json"
+    target = "styles\\.css"
+  [[build.cachebusters]]
+    source = "(postcss|tailwind)\\.config\\.js"
+    target = "css"
+  [[build.cachebusters]]
+    source = "assets/.*\\.(js|ts|jsx|tsx)"
+    target = "js"
+  [[build.cachebusters]]
+    source = "assets/.*\\.(.*)$"
+    target = "$1"
+{{< /code-toggle >}}
+
+When `buildStats` is enabled, Hugo writes a `hugo_stats.json` file on each build with HTML classes etc. that's used in the rendered output. Changes to this file will trigger a rebuild of the `styles.css` file. You also need to add `hugo_stats.json` to Hugo's server watcher. See [Hugo Starter Tailwind Basic](https://github.com/bep/hugo-starter-tailwind-basic) for a running example.
+
+source
+: (`string`) A [regular expression](g) matching file(s) relative to one of the virtual component directories in Hugo, typically `assets/...`.
+
+target
+: (`string`) A [regular expression](g) matching the keys in the resource cache that should be expired when `source` changes. You can use the matching regexp groups from `source` in the expression, e.g. `$1`.
+
+## Build stats
+
+{{< code-toggle config=build.buildStats />}}
+
+enable
+: (`bool`) Whether to create a `hugo_stats.json` file in the root of your project. This file contains arrays of the `class` attributes, `id` attributes, and tags of every HTML element within your published site. Use this file as data source when [removing unused CSS] from your site. This process is also known as pruning, purging, or tree shaking. Default is `false`.
+
+[removing unused CSS]: /functions/resources/postprocess/
+
+disableIDs
+: (`bool`) Whether to exclude `id` attributes. Default is `false`.
+
+disableTags
+: (`bool`) Whether to exclude element tags. Default is `false`.
+
+disableClasses
+: (`bool`) Whether to exclude `class` attributes. Default is `false`.
+
+> [!note]
+> Given that CSS purging is typically limited to production builds, place the `buildStats` object below [`config/production`].
+>
+> Built for speed, there may be "false positive" detections (e.g., HTML elements that are not HTML elements) while parsing the published site. These "false positives" are infrequent and inconsequential.
+
+Due to the nature of partial server builds, new HTML entities are added while the server is running, but old values will not be removed until you restart the server or run a regular `hugo` build.
+
+[`config/production`]: /configuration/introduction/#configuration-directory
diff --git a/content/en/configuration/caches.md b/content/en/configuration/caches.md
new file mode 100644 (file)
index 0000000..03b499d
--- /dev/null
@@ -0,0 +1,30 @@
+---
+title: Configure file caches
+linkTitle: Caches
+description: Configure file caches.
+categories: []
+keywords: []
+---
+
+This is the default configuration:
+
+{{< code-toggle config=caches />}}
+
+## Keys
+
+dir
+: (`string`) The absolute file system path where the cached files will be stored. You can begin the path with the `:cacheDir` or `:resourceDir` token. These tokens will be replaced with the actual configured cache directory and resource directory paths, respectively.
+
+maxAge
+: (`string`) The [duration](g) a cached entry remains valid before being evicted. A value of `0` disables the cache. A value of `-1` means the cache entry never expires (the default).
+
+## Tokens
+
+`:cacheDir`
+: (`string`) The designated cache directory. See&nbsp;[details](/configuration/all/#cachedir).
+
+`:project`
+: (`string`) The base directory name of the current Hugo project. By default, this ensures each project has isolated file caches, so running `hugo --gc` will only affect the current project's cache and not those of other Hugo projects on the same machine.
+
+`:resourceDir`
+: (`string`) The designated directory for caching output from [asset pipelines](g). See&nbsp;[details](/configuration/all/#resourcedir).
diff --git a/content/en/configuration/cascade.md b/content/en/configuration/cascade.md
new file mode 100644 (file)
index 0000000..d919963
--- /dev/null
@@ -0,0 +1,77 @@
+---
+title: Configure cascade
+linkTitle: Cascade
+description: Configure cascade.
+categories: []
+keywords: []
+---
+
+You can configure your site to cascade front matter values to the home page and any of its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor [node](g) has already cascaded a value for the same field through its front matter's `cascade` key.
+
+> [!note]
+> You can also configure cascading behavior within a page's front matter. See&nbsp;[details].
+
+For example, to cascade a "color" parameter to the home page and all its descendants:
+
+{{< code-toggle file=hugo >}}
+title = 'Home'
+[cascade.params]
+color = 'red'
+{{< /code-toggle >}}
+
+## Target
+
+<!-- TODO
+Update the <version> and <date> below when we actually get around to deprecating _target.
+
+We deprecated the `_target` front matter key in favor of `target` in <version> on <date>. Remove footnote #1 on or after 2026-03-10 (15 months after deprecation).
+-->
+
+The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter to pages within the "articles" section, including the "articles" section page itself:
+
+[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release.
+
+{{< code-toggle file=hugo >}}
+[cascade.params]
+color = 'red'
+[cascade.target]
+path = '{/articles,/articles/**}'
+{{< /code-toggle >}}
+
+Use any combination of these keywords to target pages and/or environments:
+
+environment
+: (`string`) A [glob](g) pattern matching the build [environment](g). For example: `{staging,production}`.
+
+kind
+: (`string`) A [glob](g) pattern matching the [page kind](g). For example: ` {taxonomy,term}`.
+
+lang
+: (`string`) A [glob](g) pattern matching the [page language]. For example: `{en,de}`.
+
+path
+: (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`.
+
+## Array
+
+Define an array of cascade parameters to apply different values to different targets. For example:
+
+{{< code-toggle file=hugo >}}
+[[cascade]]
+[cascade.params]
+color = 'red'
+[cascade.target]
+path = '{/books/**}'
+kind = 'page'
+lang = '{en,de}'
+[[cascade]]
+[cascade.params]
+color = 'blue'
+[cascade.target]
+path = '{/films/**}'
+kind = 'page'
+environment = 'production'
+{{< /code-toggle >}}
+
+[details]: /content-management/front-matter/#cascade-1
+[page language]: /methods/page/language/
diff --git a/content/en/configuration/content-types.md b/content/en/configuration/content-types.md
new file mode 100644 (file)
index 0000000..4c5b5a2
--- /dev/null
@@ -0,0 +1,63 @@
+---
+title: Configure content types
+linkTitle: Content types
+description: Configure content types.
+categories: []
+keywords: []
+---
+
+{{< new-in 0.144.0 />}}
+
+Hugo supports six [content formats](g):
+
+{{% include "/_common/content-format-table.md" %}}
+
+These can be used as either page content or [page resources](g). When used as page resources, their [resource type](g) is `page`.
+
+Consider this example of a [page bundle](g):
+
+```text
+content/
+└── example/
+    ├── index.md  <-- content
+    ├── a.adoc    <-- resource (resource type: page)
+    ├── b.html    <-- resource (resource type: page)
+    ├── c.md      <-- resource (resource type: page)
+    ├── d.org     <-- resource (resource type: page)
+    ├── e.pdc     <-- resource (resource type: page)
+    ├── f.rst     <-- resource (resource type: page)
+    ├── g.jpg     <-- resource (resource type: image)
+    └── h.png     <-- resource (resource type: image)
+```
+
+The `index.md` file is the page's content, while the other files are page resources. Files `a` through `f` are of resource type `page`, while `g` and `h` are of resource type `image`.
+
+When you build a site, Hugo does not publish page resources having a resource type of `page`. For example, this is the result of building the site above:
+
+```text
+public/
+├── example/
+│   ├── g.jpg
+│   ├── h.png
+│   └── index.html
+└── index.html
+```
+
+The default behavior is appropriate in most cases. Given that page resources containing markup are typically intended for inclusion in the main content, publishing them independently is generally undesirable.
+
+The default behavior is determined by the `contentTypes` configuration:
+
+{{< code-toggle config=contentTypes />}}
+
+In this default configuration, page resources with those media types will have a resource type of `page`, and will not be automatically published. To change the resource type assignment from `page` to `text` for a given media type, remove the corresponding entry from the list.
+
+For example, to set the resource type of `text/html` files to `text`, thereby enabling automatic publication, remove the `text/html` entry:
+
+{{< code-toggle file=hugo >}}
+contentTypes:
+  text/asciidoc: {}
+  text/markdown: {}
+  text/org: {}
+  text/pandoc: {}
+  text/rst: {}
+{{< /code-toggle >}}
diff --git a/content/en/configuration/deployment.md b/content/en/configuration/deployment.md
new file mode 100644 (file)
index 0000000..fad50da
--- /dev/null
@@ -0,0 +1,159 @@
+---
+title: Configure deployment
+linkTitle: Deployment
+description: Configure deployments to Amazon S3, Azure Blob Storage, or Google Cloud Storage.
+categories: []
+keywords: []
+---
+
+> [!note]
+> This configuration is only relevant when running `hugo deploy`. See&nbsp;[details](/host-and-deploy/deploy-with-hugo-deploy/).
+
+## Top-level options
+
+These settings control the overall behavior of the deployment process. This is the default configuration:
+
+{{< code-toggle file=hugo config=deployment />}}
+
+confirm
+: (`bool`) Whether to prompt for confirmation before deploying. Default is `false`.
+
+dryRun
+: (`bool`) Whether to simulate the deployment without any remote changes. Default is `false`.
+
+force
+: (`bool`) Whether to re-upload all files. Default is `false`.
+
+invalidateCDN
+: (`bool`) Whether to invalidate the CDN cache listed in the deployment target. Default is `true`.
+
+maxDeletes
+: (`int`) The maximum number of files to delete, or `-1` to disable. Default is `256`.
+
+matchers
+: (`[]*Matcher`) A slice of [matchers](#matchers-1).
+
+order
+: (`[]string`) An ordered slice of [regular expressions](g) that determines upload priority (left to right). Files not matching any expression are uploaded last in an arbitrary order.
+
+target
+: (`string`) The target deployment [`name`](#name). Defaults to the first target.
+
+targets
+: (`[]*Target`) A slice of [targets](#targets-1).
+
+workers
+: (`int`) The number of concurrent workers to use when uploading files. Default is `10`.
+
+## Targets
+
+A target represents a deployment target such as "staging" or "production".
+
+cloudFrontDistributionID
+: (`string`) The CloudFront Distribution ID, applicable if you are using the Amazon Web Services CloudFront CDN. Hugo will invalidate the CDN when deploying this target.
+
+exclude
+: (`string`) A [glob](g) pattern matching files to exclude when deploying to this target. Local files failing the include/exclude filters are not uploaded, and remote files failing these filters are not deleted.
+
+googleCloudCDNOrigin
+: (`string`) The Google Cloud project and CDN origin to invalidate when deploying this target, specified as `<project>/<origin>`.
+
+include
+: (`string`) A [glob](g) pattern matching files to include when deploying to this target. Local files failing the include/exclude filters are not uploaded, and remote files failing these filters are not deleted.
+
+name
+: (`string`) An arbitrary name for this target.
+
+stripIndexHTML
+: (`bool`) Whether to map files named `<dir>/index.html` to `<dir>` on the remote (except for the root `index.html`). This is useful for key-value cloud storage (e.g., Amazon S3, Google Cloud Storage, Azure Blob Storage) to align canonical URLs with object keys. Default is `false`.
+
+url
+: (`string`) The [destination URL](#destination-urls) for deployment.
+
+## Matchers
+
+A Matcher represents a configuration to be applied to files whose paths match
+the specified pattern.
+
+cacheControl
+: (`string`) The caching attributes to use when serving the blob. See&nbsp;[details][cacheControl].
+
+contentEncoding
+: (`string`) The encoding used for the blob's content, if any. See&nbsp;[details][contentEncoding].
+
+contentType
+: (`string`) The media type of the blob being written. See&nbsp;[details][contentType].
+
+force
+: (`bool`) Whether matching files should be re-uploaded. Useful when other route-determined metadata (e.g., `contentType`) has changed. Default is `false`.
+
+gzip
+: (`bool`) Whether the file should be gzipped before upload. If so, the `ContentEncoding` field will automatically be set to `gzip`. Default is `false`.
+
+pattern
+: (`string`) A [regular expression](g) used to match paths. Paths are converted to use forward slashes (`/`) before matching.
+
+[cacheControl]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
+[contentEncoding]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
+[contentType]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
+
+## Destination URLs
+
+Service|URL example
+:--|:--
+Amazon Simple Storage Service (S3)|`s3://my-bucket?region=us-west-1`
+Azure Blob Storage|`azblob://my-container`
+Google Cloud Storage (GCS)|`gs://my-bucket`
+
+With Google Cloud Storage you can target a subdirectory:
+
+```text
+gs://my-bucket?prefix=a/subdirectory
+```
+
+You can also to deploy to storage servers compatible with Amazon S3 such as:
+
+- [Ceph]
+- [MinIO]
+- [SeaweedFS]
+
+[Ceph]: https://ceph.com/
+[Minio]: https://www.minio.io/
+[SeaweedFS]: https://github.com/chrislusf/seaweedfs
+
+For example, the `url` for a MinIO deployment target might resemble this:
+
+```text
+s3://my-bucket?endpoint=https://my.minio.instance&awssdk=v2&use_path_style=true&disable_https=false
+```
+
+## Example
+
+{{< code-toggle file=hugo >}}
+[deployment]
+  order = ['.jpg$', '.gif$']
+  [[deployment.matchers]]
+    cacheControl = 'max-age=31536000, no-transform, public'
+    gzip = true
+    pattern = '^.+\.(js|css|svg|ttf)$'
+  [[deployment.matchers]]
+    cacheControl = 'max-age=31536000, no-transform, public'
+    gzip = false
+    pattern = '^.+\.(png|jpg)$'
+  [[deployment.matchers]]
+    contentType = 'application/xml'
+    gzip = true
+    pattern = '^sitemap\.xml$'
+  [[deployment.matchers]]
+    gzip = true
+    pattern = '^.+\.(html|xml|json)$'
+  [[deployment.targets]]
+    url = 's3://my_production_bucket?region=us-west-1'
+    cloudFrontDistributionID = 'E1234567890ABCDEF0'
+    exclude = '**.{heic,psd}'
+    name = 'production'
+  [[deployment.targets]]
+    url = 's3://my_staging_bucket?region=us-west-1'
+    exclude = '**.{heic,psd}'
+    name = 'staging'
+{{< /code-toggle >}}
diff --git a/content/en/configuration/front-matter.md b/content/en/configuration/front-matter.md
new file mode 100644 (file)
index 0000000..9f51b8a
--- /dev/null
@@ -0,0 +1,91 @@
+---
+title: Configure front matter
+linkTitle: Front matter
+description: Configure front matter.
+categories: []
+keywords: []
+---
+
+## Dates
+
+There are four methods on a `Page` object that return a date.
+
+Method|Description
+:--|:--
+[`Date`]|Returns the date of the given page.
+[`ExpiryDate`]|Returns the expiry date of the given page.
+[`Lastmod`]|Returns the last modification date of the given page.
+[`PublishDate`]|Returns the publish date of the given page.
+
+[`Date`]: /methods/page/date
+[`ExpiryDate`]: /methods/page/expirydate
+[`Lastmod`]: /methods/page/lastmod
+[`PublishDate`]: /methods/page/publishdate
+
+Hugo determines the values to return based on this configuration:
+
+{{< code-toggle config=frontmatter />}}
+
+The `ExpiryDate` method, for example, returns the `expirydate` value if it exists, otherwise it returns `unpublishdate`.
+
+You can also use custom date parameters:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+date = ["myDate", "date"]
+{{< /code-toggle >}}
+
+In the example above, the `Date` method returns the `myDate` value if it exists, otherwise it returns `date`.
+
+To fall back to the default sequence of dates, use the `:default` token:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+date = ["myDate", ":default"]
+{{< /code-toggle >}}
+
+In the example above, the `Date` method returns the `myDate` value if it exists, otherwise it returns the first valid date from `date`, `publishdate`, `pubdate`, `published`, `lastmod`, and `modified`.
+
+## Aliases
+
+Some of the front matter fields have aliases.
+
+Front matter field|Aliases
+:--|:--
+`expiryDate`|`unpublishdate`
+`lastmod`|`modified`
+`publishDate`|`pubdate`, `published`
+
+The default front matter configuration includes these aliases.
+
+## Tokens
+
+Hugo provides several [tokens](g) to assist with front matter configuration.
+
+Token|Description
+:--|:--
+`:default`|The default ordered sequence of date fields.
+`:fileModTime`|The file's last modification timestamp.
+`:filename`|The date from the file name, if present.
+`:git`|The Git author date for the file's last revision.
+
+When Hugo extracts a date from a file name, it uses the rest of the file name to generate the page's [`slug`], but only if a slug isn't already specified in the page's front matter. For example, given the name `2025-02-01-article.md`, Hugo will set the `date` to `2025-02-01` and the `slug` to `article`.
+
+[`slug`]: /content-management/front-matter/#slug
+
+To enable access to the Git author date, set [`enableGitInfo`] to `true`, or use\
+the `--enableGitInfo` flag when building your site.
+
+[`enableGitInfo`]: /configuration/all/#enablegitinfo
+
+Consider this example:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+date = [':filename', ':default']
+lastmod = ['lastmod', ':fileModTime']
+{{< /code-toggle >}}
+
+To determine `date`, Hugo tries to extract the date from the file name, falling back to the default ordered sequence of date fields.
+
+To determine `lastmod`, Hugo looks for a `lastmod` field in front matter, falling back to the file's last modification timestamp.
diff --git a/content/en/configuration/http-cache.md b/content/en/configuration/http-cache.md
new file mode 100644 (file)
index 0000000..788d22a
--- /dev/null
@@ -0,0 +1,107 @@
+---
+title: Configure the HTTP cache
+linkTitle: HTTP cache
+description: Configure the HTTP cache.
+categories: []
+keywords: []
+---
+
+> [!note]
+> This configuration is only relevant when using the [`resources.GetRemote`] function.
+
+## Layered caching
+
+Hugo employs a layered caching system.
+
+```goat {.w-40}
+ .-----------.
+|  dynacache  |
+ '-----+-----'
+       |
+       v
+ .----------.
+| HTTP cache |
+ '-----+----'
+       |
+       v
+ .----------.
+| file cache |
+ '-----+----'
+```
+
+Dynacache
+: An in-memory cache employing a Least Recently Used (LRU) eviction policy. Entries are removed from the cache when changes occur, when they match [cache-busting] patterns, or under low-memory conditions.
+
+HTTP Cache
+: An HTTP cache for remote resources as specified in [RFC 9111]. Optimal performance is achieved when resources include appropriate HTTP cache headers. The HTTP cache utilizes the file cache for storage and retrieval of cached resources.
+
+File cache
+: See [configure file caches].
+
+The HTTP cache involves two key aspects: determining which content to cache (the caching process itself) and defining the frequency with which to check for updates (the polling strategy).
+
+## HTTP caching
+
+The HTTP cache behavior is defined for a configured set of resources. Stale resources will be refreshed from the file cache, even if their configured Time-To-Live (TTL) has not expired. If HTTP caching is disabled for a resource, Hugo will bypass the cache and access the file directly.
+
+The default configuration disables everything:
+
+{{< code-toggle file=hugo >}}
+[HTTPCache.cache.for]
+excludes = ['**']
+includes = []
+{{< /code-toggle >}}
+
+cache.for.excludes
+: (`string`) A list of [glob](g) patterns to exclude from caching.
+
+cache.for.includes
+: (`string`) A list of [glob](g) patterns to cache.
+
+## HTTP polling
+
+Polling is used in watch mode (e.g., `hugo server`) to detect changes in remote resources. Polling can be enabled even if HTTP caching is disabled. Detected changes trigger a rebuild of pages using the affected resource. Polling can be disabled for specific resources, typically those known to be static.
+
+The default configuration disables everything:
+
+{{< code-toggle file=hugo >}}
+[[HTTPCache.polls]]
+disable = true
+high = '0s'
+low = '0s'
+[HTTPCache.polls.for]
+includes = ['**']
+excludes = []
+{{< /code-toggle >}}
+
+polls
+: A slice of polling configurations.
+
+polls.disable
+: (`bool`) Whether to disable polling for this configuration.
+
+polls.low
+: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`.
+
+polls.high
+: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable.
+
+polls.for.excludes
+: (`string`) A list of [glob](g) patterns to exclude from polling for this configuration.
+
+polls.for.includes
+: (`string`) A list of [glob](g) patterns to include in polling for this configuration.
+
+## Behavior
+
+Polling and HTTP caching interact as follows:
+
+- With polling enabled, rebuilds are triggered only by actual changes, detected via `eTag` changes (Hugo generates an MD5 hash if the server doesn't provide one).
+- If polling is enabled but HTTP caching is disabled, the remote is checked for changes only after the file cache's TTL expires (e.g., a `maxAge` of `10h` with a `1s` polling interval is inefficient).
+- If both polling and HTTP caching are enabled, changes are checked for even before the file cache's TTL expires. Cached `eTag` and `last-modified` values are sent in `if-none-match` and `if-modified-since` headers, respectively, and a cached response is returned on HTTP [304].
+
+[`resources.GetRemote`]: /functions/resources/getremote/
+[304]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304
+[cache-busting]: /configuration/build/#cache-busters
+[configure file caches]: /configuration/caches/
+[RFC 9111]: https://datatracker.ietf.org/doc/html/rfc9111
diff --git a/content/en/configuration/imaging.md b/content/en/configuration/imaging.md
new file mode 100644 (file)
index 0000000..13ecf9c
--- /dev/null
@@ -0,0 +1,69 @@
+---
+title: Configure imaging
+linkTitle: Imaging
+description: Configure imaging.
+categories: []
+keywords: []
+---
+
+## Processing options
+
+These are the default settings for processing images:
+
+{{< code-toggle file=hugo >}}
+[imaging]
+anchor = 'Smart'
+bgColor = '#ffffff'
+hint = 'photo'
+quality = 75
+resampleFilter = 'box'
+{{< /code-toggle >}}
+
+anchor
+: (`string`) When using the [`Crop`] or [`Fill`] method, the anchor determines the placement of the crop box. One of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`.
+
+bgColor
+: (`string`) The background color of the resulting image. Applicable when converting from a format that supports transparency to a format that does not support transparency, for example, when converting from PNG to JPEG. Expressed as an RGB [hexadecimal] value. Default is `#ffffff`.
+
+[hexadecimal]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
+
+hint
+: (`string`) Applicable to WebP images, this option corresponds to a set of predefined encoding parameters. One of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See&nbsp;[details](/content-management/image-processing/#hint).
+
+quality
+: (`int`) Applicable to JPEG and WebP images, this value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between `1` and `100`, inclusive. Default is `75`.
+
+resampleFilter
+: (`string`) The resampling filter used when resizing an image. Default is `box`. See&nbsp;[details](/content-management/image-processing/#resampling-filter)
+
+## EXIF data
+
+These are the default settings for extracting EXIF data from images:
+
+{{< code-toggle file=hugo >}}
+[imaging.exif]
+includeFields = ""
+excludeFields = ""
+disableDate = false
+disableLatLong = false
+{{< /code-toggle >}}
+
+disableDate
+: (`bool`) Whether to disable extraction of the image creation date/time. Default is `false`.
+
+disableLatLong
+: (`bool`) Whether to disable extraction of the GPS latitude and longitude. Default is `false`.
+
+excludeFields
+: (`string`) A [regular expression](g) matching the tags to exclude when extracting EXIF data.
+
+includeFields
+: (`string`) A [regular expression](g) matching the tags to include when extracting EXIF data. To include all available tags, set this value to&nbsp;`".*"`.
+
+> [!note]
+> To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
+>
+> To control tag availability, change the `excludeFields` or `includeFields` settings as described above.
+
+[`Crop`]: /methods/resource/crop/
+[`Fill`]: /methods/resource/fill/
diff --git a/content/en/configuration/introduction.md b/content/en/configuration/introduction.md
new file mode 100644 (file)
index 0000000..121a483
--- /dev/null
@@ -0,0 +1,284 @@
+---
+title: Introduction
+description: Configure your site using files, directories, and environment variables.
+categories: []
+keywords: []
+weight: 10
+---
+
+## Sensible defaults
+
+Hugo offers many configuration options, but its defaults are often sufficient. A new site requires only these settings:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+languageCode = 'en-us'
+title = 'My New Hugo Site'
+{{< /code-toggle >}}
+
+Only define settings that deviate from the defaults. A smaller configuration file is easier to read, understand, and debug. Keep your configuration concise.
+
+> [!note]
+> The best configuration file is a short configuration file.
+
+## Configuration file
+
+Create a site configuration file in the root of your project directory, naming it `hugo.toml`, `hugo.yaml`, or `hugo.json`, with that order of precedence.
+
+```text
+my-project/
+└── hugo.toml
+```
+
+> [!note]
+> For versions v0.109.0 and earlier, the site configuration file was named `config`. While you can still use this name, it's recommended to switch to the newer naming convention, `hugo`.
+
+A simple example:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+languageCode = 'en-us'
+title = 'ABC Widgets, Inc.'
+[params]
+subtitle = 'The Best Widgets on Earth'
+[params.contact]
+email = 'info@example.org'
+phone = '+1 202-555-1212'
+{{< /code-toggle >}}
+
+To use a different configuration file when building your site, use the `--config` flag:
+
+```sh
+hugo --config other.toml
+```
+
+Combine two or more configuration files, with left-to-right precedence:
+
+```sh
+hugo --config a.toml,b.yaml,c.json
+```
+
+> [!note]
+> See the specifications for each file format: [TOML], [YAML], and [JSON].
+
+## Configuration directory
+
+Instead of a single site configuration file, split your configuration by [environment](g), root configuration key, and language. For example:
+
+```text
+my-project/
+└── config/
+    ├── _default/
+    │   ├── hugo.toml
+    │   ├── menus.en.toml
+    │   ├── menus.de.toml
+    │   └── params.toml
+    └── production/
+        └── params.toml
+```
+
+The root configuration keys are {{< root-configuration-keys >}}.
+
+### Omit the root key
+
+When splitting the configuration by root key, omit the root key in the component file. For example, these are equivalent:
+
+{{< code-toggle file=config/_default/hugo >}}
+[params]
+foo = 'bar'
+{{< /code-toggle >}}
+
+{{< code-toggle file=config/_default/params >}}
+foo = 'bar'
+{{< /code-toggle >}}
+
+### Recursive parsing
+
+Hugo parses the `config` directory recursively, allowing you to organize the files into subdirectories. For example:
+
+```text
+my-project/
+└── config/
+    └── _default/
+        ├── navigation/
+        │   ├── menus.de.toml
+        │   └── menus.en.toml
+        └── hugo.toml
+```
+
+### Example
+
+```text
+my-project/
+└── config/
+    ├── _default/
+    │   ├── hugo.toml
+    │   ├── menus.en.toml
+    │   ├── menus.de.toml
+    │   └── params.toml
+    ├── production/
+    │   ├── hugo.toml
+    │   └── params.toml
+    └── staging/
+        ├── hugo.toml
+        └── params.toml
+```
+
+Considering the structure above, when running `hugo --environment staging`, Hugo will use every setting from `config/_default` and merge `staging`'s on top of those.
+
+Let's take an example to understand this better. Let's say you are using Google Analytics for your website. This requires you to specify a [Google tag ID] in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[services.googleAnalytics]
+ID = 'G-XXXXXXXXX'
+{{< /code-toggle >}}
+
+Now consider the following scenario:
+
+1. You don't want to load the analytics code when running `hugo server`.
+1. You want to use different Google tag IDs for your production and staging environments. For example:
+    - `G-PPPPPPPPP` for production
+    - `G-SSSSSSSSS` for staging
+
+To satisfy these requirements, configure your site as follows:
+
+1. `config/_default/hugo.toml`
+    - Exclude the `services.googleAnalytics` section. This will prevent loading of the analytics code when you run `hugo server`.
+    - By default, Hugo sets its `environment` to `development` when running `hugo server`. In the absence of a `config/development` directory, Hugo uses the `config/_default` directory.
+1. `config/production/hugo.toml`
+    - Include this section only:
+
+      {{< code-toggle file=hugo >}}
+      [services.googleAnalytics]
+      ID = 'G-PPPPPPPPP'
+      {{< /code-toggle >}}
+
+    - You do not need to include other parameters in this file. Include only those parameters that are specific to your production environment. Hugo will merge these parameters with the default configuration.
+    - By default, Hugo sets its `environment` to `production` when running `hugo`. The analytics code will use the `G-PPPPPPPPP` tag ID.
+
+1. `config/staging/hugo.toml`
+
+    - Include this section only:
+
+      {{< code-toggle file=hugo >}}
+      [services.googleAnalytics]
+      ID = 'G-SSSSSSSSS'
+      {{< /code-toggle >}}
+
+    - You do not need to include other parameters in this file. Include only those parameters that are specific to your staging environment. Hugo will merge these parameters with the default configuration.
+    - To build your staging site, run `hugo --environment staging`. The analytics code will use the `G-SSSSSSSSS` tag ID.
+
+## Merge configuration settings
+
+Hugo merges configuration settings from themes and modules, prioritizing the project's own settings. Given this simplified project structure with two themes:
+
+```text
+project/
+├── themes/
+│   ├── theme-a/
+│   │   └── hugo.toml
+│   └── theme-b/
+│       └── hugo.toml
+└── hugo.toml
+```
+
+and this project-level configuration:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+languageCode = 'en-us'
+title = 'My New Hugo Site'
+theme = ['theme-a','theme-b']
+{{< /code-toggle >}}
+
+Hugo merges settings in this order:
+
+1. Project configuration (`hugo.toml` in the project root)
+1. `theme-a` configuration
+1. `theme-b` configuration
+
+The `_merge` setting within each top-level configuration key controls _which_ settings are merged and _how_ they are merged.
+
+The value for `_merge` can be one of:
+
+none
+: No merge.
+
+shallow
+: Only add values for new keys.
+
+deep
+: Add values for new keys, merge existing.
+
+Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set.
+
+{{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}}
+
+## Environment variables
+
+You can also configure settings using operating system environment variables:
+
+```sh
+export HUGO_BASEURL=https://example.org/
+export HUGO_ENABLEGITINFO=true
+export HUGO_ENVIRONMENT=staging
+hugo
+```
+
+The above sets the [`baseURL`], [`enableGitInfo`], and [`environment`] configuration options and then builds your site.
+
+> [!note]
+> An environment variable takes precedence over the values set in the configuration file. This means that if you set a configuration value with both an environment variable and in the configuration file, the value in the environment variable will be used.
+
+Environment variables simplify configuration for [CI/CD](g) deployments like GitHub Pages, GitLab Pages, and Netlify by allowing you to set values directly within their respective configuration and workflow files.
+
+> [!note]
+> Environment variable names must be prefixed with `HUGO_`.
+>
+> To set custom site parameters, prefix the name with `HUGO_PARAMS_`.
+
+For snake_case variable names, the standard `HUGO_` prefix won't work. Hugo infers the delimiter from the first character following `HUGO`. This allows for variations like `HUGOxPARAMSxAPI_KEY=abcdefgh` using any [permitted delimiter].
+
+In addition to configuring standard settings, environment variables may be used to override default values for certain internal settings:
+
+DART_SASS_BINARY
+: (`string`) The absolute path to the Dart Sass executable. By default, Hugo searches for the executable in each of the paths in the `PATH` environment variable.
+
+HUGO_FILE_LOG_FORMAT
+: (`string`) A format string for the file path, line number, and column number displayed when reporting errors, or when calling the `Position` method from a shortcode or Markdown render hook. Valid tokens are `:file`, `:line`, and `:col`. Default is `:file::line::col`.
+
+HUGO_MEMORYLIMIT
+: {{< new-in 0.123.0 />}}
+: (`int`) The maximum amount of system memory, in gigabytes, that Hugo can use while rendering your site. Default is 25% of total system memory. Note that The `HUGO_MEMORYLIMIT` is a “best effort” setting. Don't expect Hugo to build a million pages with only 1 GB memory. You can get more information about how this behaves during the build by building with `hugo --logLevel info` and look for the `dynacache` label.
+
+HUGO_NUMWORKERMULTIPLIER
+: (`int`) The number of workers used in parallel processing. Default is the number of logical CPUs.
+
+## Current configuration
+
+Display the complete site configuration with:
+
+```sh
+hugo config
+```
+
+Display a specific configuration setting with:
+
+```sh
+hugo config | grep [key]
+```
+
+Display the configured file mounts with:
+
+```sh
+hugo config mounts
+```
+
+[`baseURL`]: /configuration/all#baseurl
+[`enableGitInfo`]: /configuration/all#enablegitinfo
+[`environment`]: /configuration/all#environment
+[Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en
+[JSON]: https://datatracker.ietf.org/doc/html/rfc7159
+[permitted delimiter]: https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html
+[TOML]: https://toml.io/en/latest
+[YAML]: https://yaml.org/spec/
diff --git a/content/en/configuration/languages.md b/content/en/configuration/languages.md
new file mode 100644 (file)
index 0000000..540cfd3
--- /dev/null
@@ -0,0 +1,193 @@
+---
+title: Configure languages
+linkTitle: Languages
+description: Configure the languages in your multilingual site.
+categories: []
+keywords: []
+---
+
+## Base settings
+
+Configure the following base settings within the site's root configuration:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = false
+disableDefaultLanguageRedirect = false
+disableLanguages = []
+{{< /code-toggle >}}
+
+defaultContentLanguage
+: (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined [language keys](#language-keys). Default is `en`.
+
+defaultContentLanguageInSubdir
+: (`bool`) Whether to publish the default language site to a subdirectory matching the `defaultContentLanguage`. Default is `false`.
+
+disableDefaultLanguageRedirect
+: {{< new-in 0.140.0 />}}
+: (`bool`) Whether to disable generation of the alias redirect to the default language when `DefaultContentLanguageInSubdir` is `true`. Default is `false`.
+
+disableLanguages
+: (`[]string]`) A slice of language keys representing the languages to disable during the build process. Although this is functional, consider using the [`disabled`](#disabled) key under each language instead.
+
+## Language settings
+
+Configure each language under the `languages` key:
+
+{{< code-toggle config=languages />}}
+
+In the above, `en` is the [language key](#language-keys).
+
+disabled
+: (`bool`) Whether to disable this language when building the site. Default is `false`.
+
+languageCode
+: (`string`) The language tag as described in [RFC 5646]. This value does not affect localization or URLs. Hugo uses this value to populate:
+
+  - The `lang` attribute of the `html` element in the [embedded alias template]
+  - The `language` element in the [embedded RSS template]
+  - The `locale` property in the [embedded OpenGraph template]
+
+  Access this value from a template using the [`Language.LanguageCode`] method on a `Site` or `Page` object.
+
+languageDirection
+: (`string`) The language direction, either left-to-right (`ltr`) or right-to-left (`rtl`). Use this value in your templates with the global [`dir`] HTML attribute. Access this value from a template using the [`Language.LanguageDirection`] method on a `Site` or `Page` object.
+
+languageName
+: (`string`) The language name, typically used when rendering a language switcher. Access this value from a template using the [`Language.LanguageName`] method on a `Site` or `Page` object.
+
+title
+: (`string`) The site title for this language. Access this value from a template using the [`Title`] method on a `Site` object.
+
+weight
+: (`int`) The language [weight](g). When set to a non-zero value, this is the primary sort criteria for this language. Access this value from a template using the [`Language.Weight`] method on a `Site` or `Page` object.
+
+## Localized settings
+
+Some configuration settings can be defined separately for each language. For example:
+
+{{< code-toggle file=hugo >}}
+[languages.en]
+languageCode = 'en-US'
+languageName = 'English'
+weight = 1
+title = 'Project Documentation'
+timeZone = 'America/New_York'
+[languages.en.pagination]
+path = 'page'
+[languages.en.params]
+subtitle = 'Reference, Tutorials, and Explanations'
+{{< /code-toggle >}}
+
+The following configuration keys can be defined separately for each language:
+
+{{< per-lang-config-keys >}}
+
+Any key not defined in a `languages` object will fall back to the global value in the root of the site configuration.
+
+## Language keys
+
+Language keys must conform to the syntax described in [RFC 5646]. For example:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'de'
+[languages.de]
+  weight = 1
+[languages.en-US]
+  weight = 2
+[languages.pt-BR]
+  weight = 3
+{{< /code-toggle >}}
+
+Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. Omit the `art-x-` prefix from the language key. For example:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+[languages.en]
+weight = 1
+[languages.hugolang]
+weight = 2
+{{< /code-toggle >}}
+
+> [!note]
+> Private use subtags must not exceed 8 alphanumeric characters.
+
+## Example
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'de'
+defaultContentLanguageInSubdir = true
+disableDefaultLanguageRedirect = false
+
+[languages.de]
+contentDir = 'content/de'
+disabled = false
+languageCode = 'de-DE'
+languageDirection = 'ltr'
+languageName = 'Deutsch'
+title = 'Projekt Dokumentation'
+weight = 1
+
+[languages.de.params]
+subtitle = 'Referenz, Tutorials und Erklärungen'
+
+[languages.en]
+contentDir = 'content/en'
+disabled = false
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+title = 'Project Documentation'
+weight = 2
+
+[languages.en.params]
+subtitle = 'Reference, Tutorials, and Explanations'
+{{< /code-toggle >}}
+
+> [!note]
+> In the example above, omit `contentDir` if [translating by file name].
+
+## Multihost
+
+Hugo supports multiple languages in a multihost configuration. This means you can configure a `baseURL` per `language`.
+
+> [!note]
+> If you define a `baseURL` for one language, you must define a unique `baseURL` for all languages.
+
+For example:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'fr'
+[languages]
+  [languages.en]
+    baseURL = 'https://en.example.org/'
+    languageName = 'English'
+    title = 'In English'
+    weight = 2
+  [languages.fr]
+    baseURL = 'https://fr.example.org'
+    languageName = 'Français'
+    title = 'En Français'
+    weight = 1
+{{</ code-toggle >}}
+
+With the above, Hugo publishes two sites, each with their own root:
+
+```text
+public
+├── en
+└── fr
+```
+
+[`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir
+[`Language.LanguageCode`]: /methods/site/language/#languagecode
+[`Language.LanguageDirection`]: /methods/site/language/#languagedirection
+[`Language.LanguageName`]: /methods/site/language/#languagename
+[`Language.Weight`]: /methods/site/language/#weight
+[`Title`]: /methods/site/title/
+[embedded alias template]: {{% eturl alias %}}
+[embedded OpenGraph template]: {{% eturl opengraph %}}
+[embedded RSS template]: {{% eturl rss %}}
+[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
+[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
+[translating by file name]: /content-management/multilingual/#translation-by-file-name
diff --git a/content/en/configuration/markup.md b/content/en/configuration/markup.md
new file mode 100644 (file)
index 0000000..b6135ce
--- /dev/null
@@ -0,0 +1,341 @@
+---
+title: Configure markup
+linkTitle: Markup
+description: Configure markup.
+categories: []
+keywords: []
+aliases: [/getting-started/configuration-markup/]
+---
+
+## Default handler
+
+In its default configuration, Hugo uses [Goldmark] to render Markdown to HTML.
+
+{{< code-toggle file=hugo >}}
+[markup]
+defaultMarkdownHandler = 'goldmark'
+{{< /code-toggle >}}
+
+Files with ending with `.md`, `.mdown`, or `.markdown` are processed as Markdown, unless you've explicitly set a different format using the `markup` field in your front matter.
+
+To use a different renderer for Markdown files, specify one of `asciidocext`, `org`, `pandoc`, or `rst` in your site configuration.
+
+`defaultMarkdownHandler`|Renderer
+:--|:--
+`asciidocext`|[AsciiDoc]
+`goldmark`|[Goldmark]
+`org`|[Emacs Org Mode]
+`pandoc`|[Pandoc]
+`rst`|[reStructuredText]
+
+To use AsciiDoc, Pandoc, or reStructuredText you must install the relevant renderer and update your [security policy].
+
+> [!note]
+> Unless you need a unique capability provided by one of the alternative Markdown handlers, we strongly recommend that you use the default setting. Goldmark is fast, well maintained, conforms to the [CommonMark] specification, and is compatible with [GitHub Flavored Markdown] (GFM).
+
+## Goldmark
+
+This is the default configuration for the Goldmark Markdown renderer:
+
+{{< code-toggle config=markup.goldmark />}}
+
+### Extensions
+
+The extensions below, excluding Extras and Passthrough, are enabled by default.
+
+Extension|Documentation|Enabled
+:--|:--|:-:
+`cjk`|[Goldmark Extensions: CJK]|:heavy_check_mark:
+`definitionList`|[PHP Markdown Extra: Definition lists]|:heavy_check_mark:
+`extras`|[Hugo Goldmark Extensions: Extras]||
+`footnote`|[PHP Markdown Extra: Footnotes]|:heavy_check_mark:
+`linkify`|[GitHub Flavored Markdown: Autolinks]|:heavy_check_mark:
+`passthrough`|[Hugo Goldmark Extensions: Passthrough]||
+`strikethrough`|[GitHub Flavored Markdown: Strikethrough]|:heavy_check_mark:
+`table`|[GitHub Flavored Markdown: Tables]|:heavy_check_mark:
+`taskList`|[GitHub Flavored Markdown: Task list items]|:heavy_check_mark:
+`typographer`|[Goldmark Extensions: Typographer]|:heavy_check_mark:
+
+#### Extras
+
+{{< new-in 0.126.0 />}}
+
+Enable [deleted text], [inserted text], [mark text], [subscript], and [superscript] elements in Markdown.
+
+Element|Markdown|Rendered
+:--|:--|:--
+Deleted text|`~~foo~~`|`<del>foo</del>`
+Inserted text|`++bar++`|`<ins>bar</ins>`
+Mark text|`==baz==`|`<mark>baz</mark>`
+Subscript|`H~2~O`|`H<sub>2</sub>O`
+Superscript|`1^st^`|`1<sup>st</sup>`
+
+To avoid a conflict when enabling the "subscript" feature of the Extras extension, if you want to render subscript and strikethrough text concurrently you must:
+
+1. Disable the Strikethrough extension
+1. Enable the "deleted text" feature of the Extras extension
+
+For example:
+
+{{< code-toggle file=hugo >}}
+[markup.goldmark.extensions]
+strikethrough = false
+
+[markup.goldmark.extensions.extras.delete]
+enable = true
+
+[markup.goldmark.extensions.extras.subscript]
+enable = true
+{{< /code-toggle >}}
+
+#### Passthrough
+
+{{< new-in 0.122.0 />}}
+
+Enable the Passthrough extension to include mathematical equations and expressions in Markdown using LaTeX markup. See [mathematics in Markdown] for details.
+
+#### Typographer
+
+The Typographer extension replaces certain character combinations with HTML entities as specified below:
+
+Markdown|Replaced by|Description
+:--|:--|:--
+`...`|`&hellip;`|horizontal ellipsis
+`'`|`&rsquo;`|apostrophe
+`--`|`&ndash;`|en dash
+`---`|`&mdash;`|em dash
+`«`|`&laquo;`|left angle quote
+`“`|`&ldquo;`|left double quote
+`‘`|`&lsquo;`|left single quote
+`»`|`&raquo;`|right angle quote
+`”`|`&rdquo;`|right double quote
+`’`|`&rsquo;`|right single quote
+
+### Settings explained
+
+Most of the Goldmark settings above are self-explanatory, but some require explanation.
+
+duplicateResourceFiles
+: {{< new-in 0.123.0 />}}
+: (`bool`) Whether to duplicate shared page resources for each language on multilingual single-host sites. See [multilingual page resources] for details. Default is `false`.
+
+  > [!note]
+  > With multilingual single-host sites, setting this parameter to `false` will enable Hugo's [embedded link render hook] and [embedded image render hook]. This is the default configuration for multilingual single-host sites.
+
+parser.wrapStandAloneImageWithinParagraph
+: (`bool`) Whether to wrap image elements without adjacent content within a `p` element when rendered. This is the default Markdown behavior. Set to `false` when using an [image render hook] to render standalone images as `figure` elements. Default is `true`.
+
+parser.autoDefinitionTermID
+: {{< new-in 0.144.0 />}}
+: (`bool`) Whether to automatically add `id` attributes to description list terms (i.e., `dt` elements). When `true`, the `id` attribute of each `dt` element is accessible through the [`Fragments.Identifiers`] method on a `Page` object.
+
+parser.autoHeadingID
+: (`bool`) Whether to automatically add `id` attributes to headings (i.e., `h1`, `h2`, `h3`, `h4`, `h5`, and `h6` elements).
+
+parser.autoIDType
+: (`string`) The strategy used to automatically generate `id` attributes, one of `github`, `github-ascii` or `blackfriday`.
+
+  - `github` produces GitHub-compatible `id` attributes
+  - `github-ascii` drops any non-ASCII characters after accent normalization
+  - `blackfriday` produces `id` attributes compatible with the Blackfriday Markdown renderer
+
+  This is also the strategy used by the [anchorize](/functions/urls/anchorize) template function. Default is `github`.
+
+parser.attribute.block
+: (`bool`) Whether to enable [Markdown attributes] for block elements. Default is `false`.
+
+parser.attribute.title
+: (`bool`) Whether to enable [Markdown attributes] for headings. Default is `true`.
+
+renderHooks.image.enableDefault
+: {{< new-in 0.123.0 />}}
+: (`bool`) Whether to enable the [embedded image render hook]. Default is `false`.
+
+  > [!note]
+  > The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
+
+renderHooks.link.enableDefault
+: {{< new-in 0.123.0 />}}
+: (`bool`) Whether to enable the [embedded link render hook]. Default is `false`.
+
+  > [!note]
+  > The embedded link render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
+
+renderer.hardWraps
+: (`bool`) Whether to replace newline characters within a paragraph with `br` elements. Default is `false`.
+
+renderer.unsafe
+: (`bool`) Whether to render raw HTML mixed within Markdown. This is unsafe unless the content is under your control. Default is `false`.
+
+## AsciiDoc
+
+This is the default configuration for the AsciiDoc renderer:
+
+{{< code-toggle config=markup.asciidocExt />}}
+
+### Settings explained
+
+attributes
+: (`map`) A map of key-value pairs, each a document attribute. See Asciidoctor's [attributes].
+
+backend
+: (`string`) The backend output file format. Default is `html5`.
+
+extensions
+: (`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`.
+
+  > [!note]
+  > To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`.
+
+failureLevel
+: (`string`) The minimum logging level that triggers a non-zero exit code (failure). Default is `fatal`.
+
+noHeaderOrFooter
+: (`bool`) Whether to output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Default is `true`.
+
+preserveTOC
+: (`bool`) Whether to preserve the table of contents (TOC) rendered by Asciidoctor. By default, to make the TOC compatible with existing themes, Hugo removes the TOC rendered by Asciidoctor. To render the TOC, use the [`TableOfContents`] method on a `Page` object in your templates. Default is `false`.
+
+safeMode
+: (`string`) The safe mode level, one of `unsafe`, `safe`, `server`, or `secure`. Default is `unsafe`.
+
+sectionNumbers
+: (`bool`) Whether to number each section title. Default is `false`.
+
+trace
+: (`bool`) Whether to include backtrace information on errors. Default is `false`.
+
+verbose
+: (`bool`) Whether to verbosely print processing information and configuration file checks to stderr. Default is `false`.
+
+workingFolderCurrent
+: (`bool`) Whether to set the working directory to be the same as that of the AsciiDoc file being processed, allowing [includes] to work with relative paths. Set to `true` to render diagrams with the [asciidoctor-diagram] extension. Default is `false`.
+
+### Configuration example
+
+{{< code-toggle file=hugo >}}
+[markup.asciidocExt]
+    extensions = ["asciidoctor-html5s", "asciidoctor-diagram"]
+    workingFolderCurrent = true
+    [markup.asciidocExt.attributes]
+        my-base-url = "https://example.com/"
+        my-attribute-name = "my value"
+{{< /code-toggle >}}
+
+### Syntax highlighting
+
+Follow the steps below to enable syntax highlighting.
+
+#### Step 1
+
+Set the `source-highlighter` attribute in your site configuration. For example:
+
+{{< code-toggle file=hugo >}}
+[markup.asciidocExt.attributes]
+source-highlighter = 'rouge'
+{{< /code-toggle >}}
+
+#### Step 2
+
+Generate the highlighter CSS. For example:
+
+```text
+rougify style monokai.sublime > assets/css/syntax.css
+```
+
+#### Step 3
+
+In your base template add a link to the CSS file:
+
+```go-html-template {file="layouts/_default/baseof.html"}
+<head>
+  ...
+  {{ with resources.Get "css/syntax.css" }}
+    <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+  {{ end }}
+  ...
+</head>
+```
+
+Then add the code to be highlighted to your markup:
+
+```text
+[#hello,ruby]
+----
+require 'sinatra'
+
+get '/hi' do
+  "Hello World!"
+end
+----
+```
+
+### Troubleshooting
+
+Run `hugo --logLevel debug` to examine Hugo's call to the Asciidoctor executable:
+
+```txt
+INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ...
+```
+
+## Highlight
+
+This is the default configuration.
+
+{{< code-toggle config=markup.highlight />}}
+
+{{% include "/_common/syntax-highlighting-options.md" %}}
+
+## Table of contents
+
+This is the default configuration for the table of contents, applicable to Goldmark and Asciidoctor:
+
+{{< code-toggle config=markup.tableOfContents />}}
+
+startLevel
+: (`int`) Heading levels less than this value will be excluded from the table of contents. For example, to exclude `h1` elements from the table of contents, set this value to `2`. Default is `2`.
+
+endLevel
+: (`int`) Heading levels greater than this value will be excluded from the table of contents. For example, to exclude `h4`, `h5`, and `h6` elements from the table of contents, set this value to `3`. Default is `3`.
+
+ordered
+: (`bool`) Whether to generates an ordered list instead of an unordered list. Default is `false`.
+
+[`Fragments.Identifiers`]: /methods/page/fragments/#identifiers
+[`TableOfContents`]: /methods/page/tableofcontents/
+[asciidoctor-diagram]: https://asciidoctor.org/docs/asciidoctor-diagram/
+[attributes]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions
+[CommonMark]: https://spec.commonmark.org/current/
+[deleted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
+[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
+[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
+[embedded image render hook]: /render-hooks/images/#default
+[embedded image render hook]: /render-hooks/images/#default
+[embedded link render hook]: /render-hooks/links/#default
+[embedded link render hook]: /render-hooks/links/#default
+[GitHub Flavored Markdown]: https://github.github.com/gfm/
+[GitHub Flavored Markdown: Autolinks]: https://github.github.com/gfm/#autolinks-extension-
+[GitHub Flavored Markdown: Strikethrough]: https://github.github.com/gfm/#strikethrough-extension-
+[GitHub Flavored Markdown: Tables]: https://github.github.com/gfm/#tables-extension-
+[GitHub Flavored Markdown: Task list items]: https://github.github.com/gfm/#task-list-items-extension-
+[Goldmark]: https://github.com/yuin/goldmark/
+[Goldmark Extensions: CJK]: https://github.com/yuin/goldmark?tab=readme-ov-file#cjk-extension
+[Goldmark Extensions: Typographer]: https://github.com/yuin/goldmark?tab=readme-ov-file#typographer-extension
+[Hugo Goldmark Extensions: Extras]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#extras-extension
+[Hugo Goldmark Extensions: Passthrough]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#passthrough-extension
+[image render hook]: /render-hooks/images/
+[includes]: https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#includes
+[inserted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
+[mark text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark
+[Markdown attributes]: /content-management/markdown-attributes/
+[mathematics in Markdown]: content-management/mathematics/
+[multilingual page resources]: /content-management/page-resources/#multilingual
+[PHP Markdown Extra: Definition lists]: https://michelf.ca/projects/php-markdown/extra/#def-list
+[PHP Markdown Extra: Footnotes]: https://michelf.ca/projects/php-markdown/extra/#footnotes
+[security policy]: /configuration/security/
+[subscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub
+[superscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup
+[AsciiDoc]: https://asciidoc.org/
+[Emacs Org Mode]: https://orgmode.org/
+[Pandoc]: https://www.pandoc.org/
+[reStructuredText]: https://docutils.sourceforge.io/rst.html
diff --git a/content/en/configuration/media-types.md b/content/en/configuration/media-types.md
new file mode 100644 (file)
index 0000000..ea89ee0
--- /dev/null
@@ -0,0 +1,82 @@
+---
+title: Configure media types
+linkTitle: Media types
+description: Configure media types.
+categories: []
+keywords: []
+---
+
+{{% glossary-term "media type" %}}
+
+Configured media types serve multiple purposes in Hugo, including the definition of [output formats](g). This is the default media type configuration in tabular form:
+
+{{< datatable "config" "mediaTypes" "_key" "suffixes" >}}
+
+The `suffixes` column in the table above shows the suffixes associated with each media type. For example, Hugo associates `.html` and `.htm` files with the `text/html` media type.
+
+> [!note]
+> The first suffix is the primary suffix. Use the primary suffix when naming template files. For example, when creating a template for an RSS feed, use the `xml` suffix.
+
+## Default configuration
+
+The following is the default configuration that matches the table above:
+
+{{< code-toggle file=hugo config=mediaTypes />}}
+
+delimiter
+: (`string`) The delimiter between the file name and the suffix. The delimiter, in conjunction with the suffix, forms the file extension. Default is `"."`.
+
+suffixes
+: (`[]string`) The suffixes associated with this media type. The first suffix is the primary suffix.
+
+## Modify a media type
+
+You can modify any of the default media types. For example, to switch the primary suffix for `text/html` from `html` to `htm`:
+
+{{< code-toggle file=hugo >}}
+[mediaTypes.'text/html']
+suffixes = ['htm','html']
+{{< /code-toggle >}}
+
+If you alter a default media type, you must also explicitly redefine all output formats that utilize that media type. For example, to ensure the changes above affect the `html` output format, redefine the `html` output format:
+
+{{< code-toggle file=hugo >}}
+[outputFormats.html]
+mediaType = 'text/html'
+{{< /code-toggle >}}
+
+## Create a media type
+
+You can create new media types as needed. For example, to create a media type for an Atom feed:
+
+{{< code-toggle file=hugo >}}
+[mediaTypes.'application/atom+xml']
+suffixes = ['atom']
+{{< /code-toggle >}}
+
+## Media types without suffixes
+
+Occasionally, you may need to create a media type without a suffix or delimiter. For example, [Netlify] recognizes configuration files named `_redirects` and `_headers`, which Hugo can generate using custom [output formats](g).
+
+To support these custom output formats, register a custom media type with no suffix or delimiter:
+
+{{< code-toggle file=hugo >}}
+[mediaTypes."text/netlify"]
+delimiter = ""
+{{< /code-toggle >}}
+
+The custom output format definitions would look something like this:
+
+{{< code-toggle file=hugo >}}
+[outputFormats.redir]
+baseName    = "_redirects"
+isPlainText = true
+mediatype   = "text/netlify"
+[outputFormats.headers]
+baseName       = "_headers"
+isPlainText    = true
+mediatype      = "text/netlify"
+notAlternative = true
+{{< /code-toggle >}}
+
+[Netlify]: https://www.netlify.com/
diff --git a/content/en/configuration/menus.md b/content/en/configuration/menus.md
new file mode 100644 (file)
index 0000000..759f53f
--- /dev/null
@@ -0,0 +1,135 @@
+---
+title: Configure menus
+linkTitle: Menus
+description: Centrally define menu entries for one or more menus.
+categories: []
+keywords: []
+---
+
+> [!note]
+> To understand Hugo's menu system, please refer to the [menus] page.
+
+There are three ways to define menu entries:
+
+1. [Automatically]
+1. [In front matter]
+1. In site configuration
+
+This page covers the site configuration method.
+
+## Example
+
+To define entries for a "main" menu:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'Home'
+pageRef = '/'
+weight = 10
+
+[[menus.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 20
+
+[[menus.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 30
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with [`Menus`] method on a `Site` object:
+
+```go-html-template
+{{ range .Site.Menus.main }}
+  ...
+{{ end }}
+```
+
+See [menu templates] for a detailed example.
+
+To define entries for a "footer" menu:
+
+{{< code-toggle file=hugo >}}
+[[menus.footer]]
+name = 'Terms'
+pageRef = '/terms'
+weight = 10
+
+[[menus.footer]]
+name = 'Privacy'
+pageRef = '/privacy'
+weight = 20
+{{< /code-toggle >}}
+
+Access this menu structure in the same way:
+
+```go-html-template
+{{ range .Site.Menus.footer }}
+  ...
+{{ end }}
+```
+
+## Properties
+
+Menu entries usually include at least three properties: `name`, `weight`, and either `pageRef` or `url`. Use `pageRef` for internal page destinations and `url` for external destinations.
+
+These are the available menu entry properties:
+
+{{% include "/_common/menu-entry-properties.md" %}}
+
+pageRef
+: (`string`) The [logical path](g) of the target page. For example:
+
+  page kind|pageRef
+  :--|:--
+  home|`/`
+  page|`/books/book-1`
+  section|`/books`
+  taxonomy|`/tags`
+  term|`/tags/foo`
+
+url
+: (`string`) The destination URL. Use this for external destinations only.
+
+## Nested menu
+
+This nested menu demonstrates some of the available properties:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+
+[[menus.main]]
+name = 'Hardware'
+pageRef = '/products/hardware'
+parent = 'Products'
+weight = 1
+
+[[menus.main]]
+name = 'Software'
+pageRef = '/products/software'
+parent = 'Products'
+weight = 2
+
+[[menus.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+
+[[menus.main]]
+name = 'Hugo'
+pre = '<i class="fa fa-heart"></i>'
+url = 'https://gohugo.io/'
+weight = 30
+[menus.main.params]
+rel = 'external'
+{{< /code-toggle >}}
+
+[`Menus`]: /methods/site/menus/
+[Automatically]: /content-management/menus/#define-automatically
+[In front matter]: /content-management/menus/#define-in-front-matter
+[menu templates]: /templates/menu/
+[menus]: /content-management/menus/
diff --git a/content/en/configuration/minify.md b/content/en/configuration/minify.md
new file mode 100644 (file)
index 0000000..a530cb7
--- /dev/null
@@ -0,0 +1,15 @@
+---
+title: Configure minify
+linkTitle: Minify
+description: Configure minify.
+categories: []
+keywords: []
+---
+
+This is the default configuration:
+
+{{< code-toggle config=minify />}}
+
+See the [tdewolff/minify] project page for details.
+
+[tdewolff/minify]: https://github.com/tdewolff/minify
diff --git a/content/en/configuration/module.md b/content/en/configuration/module.md
new file mode 100644 (file)
index 0000000..d736b7c
--- /dev/null
@@ -0,0 +1,179 @@
+---
+title: Configure modules
+linkTitle: Modules
+description: Configure modules.
+categories: []
+keywords: []
+aliases: [/hugo-modules/configuration/]
+---
+
+## Top-level options
+
+This is the default configuration:
+
+{{< code-toggle file=hugo >}}
+[module]
+noProxy = 'none'
+noVendor = ''
+private = '*.*'
+proxy = 'direct'
+vendorClosest = false
+workspace = 'off'
+{{< /code-toggle >}}
+
+auth
+: {{< new-in 0.144.0 />}}
+: (`string`) Configures `GOAUTH` when running the Go command for module operations. This is a semicolon-separated list of authentication commands for go-import and HTTPS module mirror interactions. This is useful for private repositories. See `go help goauth` for more information.
+
+noProxy
+: (`string`) A comma-separated list of [glob](g) patterns matching paths that should not use the [configured proxy server](#proxy).
+
+noVendor
+: (`string`) A [glob](g) pattern matching module paths to skip when vendoring.
+
+private
+: (`string`) A comma-separated list of [glob](g) patterns matching paths that should be treated as private.
+
+proxy
+: (`string`) The proxy server to use to download remote modules. Default is `direct`, which means `git clone` and similar.
+
+replacements
+: (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`].
+
+  {{< code-toggle file=hugo >}}
+  [module]
+  replacements = 'github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path'
+  {{< /code-toggle >}}
+
+vendorClosest
+: (`bool`) Whether to pick the vendored module closest to the module using it. The default behavior is to pick the first. Note that there can still be only one dependency of a given module path, so once it is in use it cannot be redefined. Default is `false`.
+
+workspace
+: (`string`) The Go workspace file to use, either as an absolute path or a path relative to the current working directory. Enabling this activates Go workspace mode and requires Go 1.18 or later. The default is `off`.
+
+You may also use environment variables to set any of the above. For example:
+
+```sh
+export HUGO_MODULE_PROXY="https://proxy.example.org"
+export HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."
+export HUGO_MODULE_WORKSPACE="/my/hugo.work"
+```
+
+{{% include "/_common/gomodules-info.md" %}}
+
+## Hugo version
+
+You can specify a required Hugo version for your module in the `module` section. Users will then receive a warning if their Hugo version is incompatible.
+
+This is the default configuration:
+
+{{< code-toggle config=module.hugoVersion />}}
+
+You can omit any of the settings above.
+
+extended
+: (`bool`) Whether the extended edition of Hugo is required, satisfied by installing either the extended or extended/deploy edition.
+
+max
+: (`string`) The maximum Hugo version supported, for example `0.143.0`.
+
+min
+: (`string`) The minimum Hugo version supported, for example `0.123.0`.
+
+[`themesDir`]: /configuration/all/#themesdir
+
+## Imports
+
+{{< code-toggle file=hugo >}}
+[[module.imports]]
+disable = false
+ignoreConfig = false
+ignoreImports = false
+path = "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v"
+[[module.imports]]
+path = "my-shortcodes"
+{{< /code-toggle >}}
+
+disable
+: (`bool`) Whether to disable the module but keep version information in the `go.*` files. Default is `false`.
+
+ignoreConfig
+: (`bool`) Whether to ignore module configuration files, for example, `hugo.toml`. This will also prevent loading of any transitive module dependencies. Default is `false`.
+
+ignoreImports
+: (`bool`) Whether to ignore module imports. Default is `false`.
+
+noMounts
+: (`bool`) Whether to disable directory mounting for this import. Default is `false`.
+
+noVendor
+: (`bool`) Whether to disable vendoring for this import. This setting is restricted to the main project. Default is `false`.
+
+path
+: (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`].
+
+[`themesDir`]: /configuration/all#themesDir
+
+{{% include "/_common/gomodules-info.md" %}}
+
+## Mounts
+
+Before Hugo v0.56.0, custom component paths could only be configured by setting [`archetypeDir`], [`assetDir`], [`contentDir`], [`dataDir`], [`i18nDir`], [`layoutDi`], or [`staticDir`] in the site configuration. Module mounts offer greater flexibility than these legacy settings, but
+you cannot use both.
+
+[`archetypeDir`]: /configuration/all/
+[`assetDir`]: /configuration/all/
+[`contentDir`]: /configuration/all/
+[`dataDir`]: /configuration/all/
+[`i18nDir`]: /configuration/all/
+[`layoutDi`]: /configuration/all/
+[`staticDir`]: /configuration/all/
+
+> [!note]
+> If you use module mounts do not use the legacy settings.
+
+### Default mounts
+
+> [!note]
+> Adding a new mount to a target root will cause the existing default mount for that root to be ignored. If you still need the default mount, you must explicitly add it along with the new mount.
+
+The are the default mounts:
+
+{{< code-toggle config=module.mounts />}}
+
+source
+: (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
+
+target
+: (`string`) Where the mount will reside within Hugo's virtual file system. It must begin with one of Hugo's component directories: `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, or `static`. For example, `content/blog`.
+
+disableWatch
+: {{< new-in 0.128.0 />}}
+: (`bool`) Whether to disable watching in watch mode for this mount. Default is `false`.
+
+lang
+: (`string`) The language code, e.g. "en". Relevant for `content` mounts, and `static` mounts when in multihost mode.
+
+includeFiles
+: (`string` or `[]string`) One or more [glob](g) patterns matching files or directories to include. If `excludeFiles` is not set, the files matching `includeFiles` will be the files mounted.
+
+  The glob patterns are matched against file names relative to the source root. Use Unix-style forward slashes (`/`), even on Windows. A single forward slash (`/`) matches the mount root, and double asterisks (`**`) act as a recursive wildcard, matching all directories and files beneath a given point (e.g., `/posts/**.jpg`). The search is case-insensitive.
+
+excludeFiles
+: (`string` or `[]string`) One or more [glob](g) patterns matching files to exclude.
+
+### Example
+
+{{< code-toggle file=hugo >}}
+[module]
+[[module.mounts]]
+    source="content"
+    target="content"
+    excludeFiles="docs/*"
+[[module.mounts]]
+    source="node_modules"
+    target="assets"
+[[module.mounts]]
+    source="assets"
+    target="assets"
+{{< /code-toggle >}}
diff --git a/content/en/configuration/output-formats.md b/content/en/configuration/output-formats.md
new file mode 100644 (file)
index 0000000..2627c6d
--- /dev/null
@@ -0,0 +1,209 @@
+---
+title: Configure output formats
+linkTitle: Output formats
+description: Configure output formats.
+categories: []
+keywords: []
+---
+
+{{% glossary-term "output format" %}}
+
+You can output a page in as many formats as you want. Define an infinite number of output formats, provided they each resolve to a unique file system path.
+
+This is the default output format configuration in tabular form:
+
+{{< datatable
+  "config"
+  "outputFormats"
+  "_key"
+  "mediaType"
+  "weight"
+  "baseName"
+  "isHTML"
+  "isPlainText"
+  "noUgly"
+  "notAlternative"
+  "path"
+  "permalinkable"
+  "protocol"
+  "rel"
+  "root"
+  "ugly"
+>}}
+
+## Default configuration
+
+The following is the default configuration that matches the table above:
+
+{{< code-toggle config=outputFormats />}}
+
+baseName
+: (`string`) The base name of the published file. Default is `index`.
+
+isHTML
+: (`bool`) Whether to classify the output format as HTML. Hugo uses this value to determine when to create alias redirects and when to inject the LiveReload script. Default is `false`.
+
+isPlainText
+: (`bool`) Whether to parse templates for this output format with Go's [text/template] package instead of the [html/template] package. Default is `false`.
+
+mediaType
+: (`string`) The [media type](g) of the published file. This must match one of the [configured media types].
+
+notAlternative
+: (`bool`) Whether to exclude this output format from the values returned by the [`AlternativeOutputFormats`] method on a `Page` object. Default is `false`.
+
+noUgly
+: (`bool`) Whether to disable ugly URLs for this output format when [`uglyURLs`] are enabled in your site configuration. Default is `false`.
+
+path
+: (`string`) The published file's directory path, relative to the root of the publish directory. If not specified, the file will be published using its content path.
+
+permalinkable
+: (`bool`) Whether to return the rendering output format rather than main output format when invoking the [`Permalink`] and [`RelPermalink`] methods on a `Page` object. See&nbsp;[details](#link-to-output-formats). Enabled by default for the `html` and `amp` output formats. Default is `false`.
+
+protocol
+: (`string`) The protocol (scheme) of the URL for this output format. For example, `https://` or `webcal://`. Default is the scheme of the [`baseURL`] parameter in your site configuration, typically `https://`.
+
+rel
+: (`string`) If provided, you can assign this value to `rel` attributes in `link` elements when iterating over output formats in your templates. Default is `alternate`.
+
+root
+: (`bool`) Whether to publish files to the root of the publish directory. Default is `false`.
+
+ugly
+: (`bool`) Whether to enable uglyURLs for this output format when `uglyURLs` is `false` in your site configuration. Default is `false`.
+
+weight
+: (`int`) When set to a non-zero value, Hugo uses the `weight` as the first criteria when sorting output formats, falling back to the name of the output format. Lighter items float to the top, while heavier items sink to the bottom. Hugo renders output formats sequentially based on the sort order. Default is `0`, except for the `html` output format, which has a default weight of `10`.
+
+## Modify an output format
+
+You can modify any of the default output formats. For example, to prioritize `json` rendering over `html` rendering, when both are generated, adjust the [`weight`](#weight):
+
+{{< code-toggle file=hugo >}}
+[outputFormats.json]
+weight = 1
+[outputFormats.html]
+weight = 2
+{{< /code-toggle >}}
+
+The example above shows that when you modify a default content format, you only need to define the properties that differ from their default values.
+
+## Create an output format
+
+You can create new output formats as needed. For example, you may wish to create an output format to support Atom feeds.
+
+### Step 1
+
+Output formats require a specified media type. Because Atom feeds use `application/atom+xml`, which is not one of the [default media types], you must create it first.
+
+{{< code-toggle file=hugo >}}
+[mediaTypes.'application/atom+xml']
+suffixes = ['atom']
+{{< /code-toggle >}}
+
+See [configure media types] for more information.
+
+### Step 2
+
+Create a new output format:
+
+{{< code-toggle file=hugo >}}
+[outputFormats.atom]
+mediaType = 'application/atom+xml'
+noUgly = true
+{{< /code-toggle >}}
+
+Note that we use the default settings for all other output format properties.
+
+### Step 3
+
+Specify the page [kinds](g) for which to render this output format:
+
+{{< code-toggle file=hugo >}}
+[outputs]
+home = ['html', 'rss', 'atom']
+section = ['html', 'rss', 'atom']
+taxonomy = ['html', 'rss', 'atom']
+term = ['html', 'rss', 'atom']
+{{< /code-toggle >}}
+
+See [configure outputs] for more information.
+
+### Step 4
+
+Create a template to render the output format. Since Atom feeds are lists, you need to create a list template. Consult the [template lookup order] to find the correct template path:
+
+```text
+layouts/_default/list.atom.atom
+```
+
+We leave writing the template code as an exercise for you. Aim for a result similar to the [embedded RSS template].
+
+## List output formats
+
+To access output formats, each `Page` object provides two methods: [`OutputFormats`] (for all formats, including the current one) and [`AlternativeOutputFormats`]. Use `AlternativeOutputFormats` to create a link `rel` list within your site's `head` element, as shown below:
+
+```go-html-template
+{{ range .AlternativeOutputFormats }}
+  <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
+{{ end }}
+```
+
+## Link to output formats
+
+By default, a `Page` object's [`Permalink`] and [`RelPermalink`] methods return the URL of the [primary output format](g), typically `html`. This behavior remains consistent regardless of the template used.
+
+For example, in `single.json.json`, you'll see:
+
+```go-html-template
+{{ .RelPermalink }} → /that-page/
+{{ with .OutputFormats.Get "json" }}
+  {{ .RelPermalink }} → /that-page/index.json
+{{ end }}
+```
+
+To make these methods return the URL of the _current_ template's output format, you must set the [`permalinkable`] setting to `true` for that format.
+
+With `permalinkable` set to true for `json` in the same `single.json.json` template:
+
+```go-html-template
+{{ .RelPermalink }} → /that-page/index.json
+{{ with .OutputFormats.Get "html" }}
+  {{ .RelPermalink }} → /that-page/
+{{ end }}
+```
+
+## Template lookup order
+
+Each output format requires a template conforming to the [template lookup order].
+
+For the highest specificity in the template lookup order, include the page kind, output format, and suffix in the file name:
+
+```text
+[page kind].[output format].[suffix]
+```
+
+For example, for section pages:
+
+Output format|Template path
+:--|:--
+`html`|`layouts/_default/section.html.html`
+`json`|`layouts/_default/section.json.json`
+`rss`|`layouts/_default/section.rss.xml`
+
+[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats/
+[`OutputFormats`]: /methods/page/outputformats/
+[`Permalink`]: /methods/page/permalink/
+[`RelPermalink`]: /methods/page/relpermalink/
+[`baseURL`]: /configuration/all/#baseurl
+[`permalinkable`]: #permalinkable
+[`uglyURLs`]: /configuration/ugly-urls/
+[configure media types]: /configuration/media-types/
+[configure outputs]: /configuration/outputs/
+[configured media types]: /configuration/media-types/
+[default media types]: /configuration/media-types/
+[embedded RSS template]: {{% eturl rss %}}
+[html/template]: https://pkg.go.dev/html/template
+[template lookup order]: /templates/lookup-order/
+[text/template]: https://pkg.go.dev/text/template
diff --git a/content/en/configuration/outputs.md b/content/en/configuration/outputs.md
new file mode 100644 (file)
index 0000000..9a83cb6
--- /dev/null
@@ -0,0 +1,49 @@
+---
+title: Configure outputs
+linkTitle: Outputs
+description: Configure which output formats to render for each page kind.
+categories: []
+keywords: []
+---
+
+{{% glossary-term "output format" %}}
+
+Learn more about creating and configuring output formats in the [configure output formats] section.
+
+## Outputs per page kind
+
+The following default configuration determines the output formats generated for each page kind:
+
+{{< code-toggle config=outputs />}}
+
+To render the built-in `json` output format for the `home` page kind, assuming you've already created the necessary template, add the following to your configuration:
+
+{{< code-toggle file=hugo >}}
+[outputs]
+home = ['html','rss','json']
+{{< /code-toggle >}}
+
+Notice in this example that we only specified the `home` page kind. You don't need to include entries for other page kinds unless you intend to modify their default output formats.
+
+> [!note]
+> The order of the output formats in the arrays above is important. The first element will be the _primary output format_ for that page kind, and in most cases that should be `html` as shown in the default configuration.
+>
+> The primary output format for a given page kind determines the value returned by the [`Permalink`] and [`RelPermalink`] methods on a `Page` object.
+>
+> See the [link to output formats] section for details.
+
+## Outputs per page
+
+Add output formats to a page's rendering using the `outputs` field in its front matter. For example, to include `json` in the output formats rendered for a specific page:
+
+{{< code-toggle file=content/example.md fm=true >}}
+title = 'Example'
+outputs = ['json']
+{{< /code-toggle >}}
+
+In its default configuration, Hugo will render both the `html` and `json` output formats for this page. The `outputs` field appends to, rather than replaces, the site's configured outputs.
+
+[`Permalink`]: /methods/page/permalink/
+[`RelPermalink`]: /methods/page/relpermalink/
+[configure output formats]: /configuration/output-formats/
+[link to output formats]: configuration/output-formats/#link-to-output-formats
diff --git a/content/en/configuration/page.md b/content/en/configuration/page.md
new file mode 100644 (file)
index 0000000..81169e5
--- /dev/null
@@ -0,0 +1,34 @@
+---
+title: Configure page
+linkTitle: Page
+description: Configure page behavior.
+categories: []
+keywords: []
+---
+
+{{< new-in 0.133.0 />}}
+
+{{% glossary-term "default sort order" %}}
+
+Hugo uses the default sort order to determine the _next_ and _previous_ page relative to the current page when calling these methods on a `Page` object:
+
+- [`Next`](/methods/page/next/) and [`Prev`](/methods/page/prev/)
+- [`NextInSection`](/methods/page/nextinsection/) and [`PrevInSection`](/methods/page/previnsection/)
+
+This is based on this default site configuration:
+
+{{< code-toggle config=page />}}
+
+To reverse the meaning of _next_ and _previous_:
+
+{{< code-toggle file=hugo >}}
+[page]
+  nextPrevInSectionSortOrder = 'asc'
+  nextPrevSortOrder = 'asc'
+{{< /code-toggle >}}
+
+> [!note]
+> These settings do not apply to the [`Next`] or [`Prev`] methods on a `Pages` object.
+
+[`Next`]: /methods/pages/next
+[`Prev`]: /methods/pages/next
diff --git a/content/en/configuration/pagination.md b/content/en/configuration/pagination.md
new file mode 100644 (file)
index 0000000..66b3b8c
--- /dev/null
@@ -0,0 +1,45 @@
+---
+title: Configure pagination
+linkTitle: Pagination
+description: Configure pagination.
+categories: []
+keywords: []
+---
+
+This is the default configuration:
+
+{{< code-toggle config=pagination />}}
+
+disableAliases
+: (`bool`) Whether to disable alias generation for the first pager. Default is `false`.
+
+pagerSize
+: (`int`) The number of pages per pager. Default is `10`.
+
+path
+: (`string`) The segment of each pager URL indicating that the target page is a pager. Default is `page`.
+
+With multilingual sites you can define the pagination behavior for each language:
+
+{{< code-toggle file=hugo >}}
+[languages.en]
+contentDir = 'content/en'
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+weight = 1
+[languages.en.pagination]
+disableAliases = true
+pagerSize = 10
+path = 'page'
+[languages.de]
+contentDir = 'content/de'
+languageCode = 'de-DE'
+languageDirection = 'ltr'
+languageName = 'Deutsch'
+weight = 2
+[languages.de.pagination]
+disableAliases = true
+pagerSize = 20
+path = 'blatt'
+{{< /code-toggle >}}
diff --git a/content/en/configuration/params.md b/content/en/configuration/params.md
new file mode 100644 (file)
index 0000000..239b0c2
--- /dev/null
@@ -0,0 +1,100 @@
+---
+title: Configure params
+linkTitle: Params
+description: Create custom site parameters.
+categories: []
+keywords: []
+---
+
+Use the `params` key for custom parameters:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+title = 'Project Documentation'
+languageCode = 'en-US'
+[params]
+subtitle = 'Reference, Tutorials, and Explanations'
+[params.contact]
+email = 'info@example.org'
+phone = '+1 206-555-1212'
+{{< /code-toggle >}}
+
+Access the custom parameters from your templates using the [`Params`] method on a `Site` object:
+
+[`Params`]: /methods/site/params/
+
+```go-html-template
+{{ .Site.Params.subtitle }} → Reference, Tutorials, and Explanations
+{{ .Site.Params.contact.email }} → info@example.org
+```
+
+Key names should use camelCase or snake_case. While TOML, YAML, and JSON allow kebab-case keys, they are not valid [identifiers](g) and cannot be used when [chaining](g) identifiers.
+
+For example, you can do either of these:
+
+```go-html-template
+{{ .Site.params.camelCase.foo }}
+{{ .Site.params.snake_case.foo }}
+```
+
+But you cannot do this:
+
+```go-html-template
+{{ .Site.params.kebab-case.foo }}
+```
+
+## Multilingual sites
+
+For multilingual sites, create a `params` key under each language:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+defaultContentLanguage = 'en'
+
+[languages.de]
+languageCode = 'de-DE'
+languageDirection = 'ltr'
+languageName = 'Deutsch'
+title = 'Projekt Dokumentation'
+weight = 1
+
+[languages.de.params]
+subtitle = 'Referenz, Tutorials und Erklärungen'
+
+[languages.de.params.contact]
+email = 'info@de.example.org'
+phone = '+49 30 1234567'
+
+[languages.en]
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+title = 'Project Documentation'
+weight = 2
+
+[languages.en.params]
+subtitle = 'Reference, Tutorials, and Explanations'
+
+[languages.en.params.contact]
+email = 'info@example.org'
+phone = '+1 206-555-1212'
+{{< /code-toggle >}}
+
+## Namespacing
+
+To prevent naming conflicts, module and theme developers should namespace any custom parameters specific to their module or theme.
+
+{{< code-toggle file=hugo >}}
+[params.modules.myModule.colors]
+background = '#efefef'
+font = '#222222'
+{{< /code-toggle >}}
+
+To access the module/theme settings:
+
+```go-html-template
+{{ $cfg := .Site.Params.module.mymodule }}
+
+{{ $cfg.colors.background }} → #efefef
+{{ $cfg.colors.font }} → #222222
+```
diff --git a/content/en/configuration/permalinks.md b/content/en/configuration/permalinks.md
new file mode 100644 (file)
index 0000000..0810624
--- /dev/null
@@ -0,0 +1,162 @@
+---
+title: Configure permalinks
+linkTitle: Permalinks
+description: Configure permalinks.
+categories: []
+keywords: []
+---
+
+This is the default configuration:
+
+{{< code-toggle config=permalinks />}}
+
+Define a URL pattern for each top-level section. Each URL pattern can target a given language and/or page kind.
+
+> [!note]
+> The [`url`] front matter field overrides any matching permalink pattern.
+
+## Monolingual example
+
+With this content structure:
+
+```text
+content/
+├── posts/
+│   ├── bash-in-slow-motion.md
+│   └── tls-in-a-nutshell.md
+├── tutorials/
+│   ├── git-for-beginners.md
+│   └── javascript-bundling-with-hugo.md
+└── _index.md
+```
+
+Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy:
+
+{{< code-toggle file=hugo >}}
+[permalinks.page]
+posts = '/articles/:year/:month/:slug/'
+tutorials = '/training/:slug/'
+[permalinks.section]
+posts = '/articles/'
+tutorials = '/training/'
+{{< /code-toggle >}}
+
+The structure of the published site will be:
+
+```text
+public/
+├── articles/
+│   ├── 2023/
+│   │   ├── 04/
+│   │   │   └── bash-in-slow-motion/
+│   │   │       └── index.html
+│   │   └── 06/
+│   │       └── tls-in-a-nutshell/
+│   │           └── index.html
+│   └── index.html
+├── training/
+│   ├── git-for-beginners/
+│   │   └── index.html
+│   ├── javascript-bundling-with-hugo/
+│   │   └── index.html
+│   └── index.html
+└── index.html
+```
+
+To create a date-based hierarchy for regular pages in the content root:
+
+{{< code-toggle file=hugo >}}
+[permalinks.page]
+"/" = "/:year/:month/:slug/"
+{{< /code-toggle >}}
+
+Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL:
+
+{{< code-toggle file=hugo >}}
+[permalinks.term]
+'tags' = '/:slug/'
+{{< /code-toggle >}}
+
+## Multilingual example
+
+Use the `permalinks` configuration as a component of your localization strategy.
+
+With this content structure:
+
+```text
+content/
+├── en/
+│   ├── books/
+│   │   ├── les-miserables.md
+│   │   └── the-hunchback-of-notre-dame.md
+│   └── _index.md
+└── es/
+    ├── books/
+    │   ├── les-miserables.md
+    │   └── the-hunchback-of-notre-dame.md
+    └── _index.md
+```
+
+And this site configuration:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+
+[languages.en]
+contentDir = 'content/en'
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+weight = 1
+
+[languages.en.permalinks.page]
+books = "/books/:slug/"
+
+[languages.en.permalinks.section]
+books = "/books/"
+
+[languages.es]
+contentDir = 'content/es'
+languageCode = 'es-ES'
+languageDirection = 'ltr'
+languageName = 'Español'
+weight = 2
+
+[languages.es.permalinks.page]
+books = "/libros/:slug/"
+
+[languages.es.permalinks.section]
+books = "/libros/"
+{{< /code-toggle >}}
+
+The structure of the published site will be:
+
+```text
+public/
+├── en/
+│   ├── books/
+│   │   ├── les-miserables/
+│   │   │   └── index.html
+│   │   ├── the-hunchback-of-notre-dame/
+│   │   │   └── index.html
+│   │   └── index.html
+│   └── index.html
+├── es/
+│   ├── libros/
+│   │   ├── les-miserables/
+│   │   │   └── index.html
+│   │   ├── the-hunchback-of-notre-dame/
+│   │   │   └── index.html
+│   │   └── index.html
+│   └── index.html
+└── index.html
+```
+
+## Tokens
+
+Use these tokens when defining a URL pattern.
+
+{{% include "/_common/permalink-tokens.md" %}}
+
+[`url`]: /content-management/front-matter/#url
diff --git a/content/en/configuration/privacy.md b/content/en/configuration/privacy.md
new file mode 100644 (file)
index 0000000..c94f2c1
--- /dev/null
@@ -0,0 +1,43 @@
+---
+title: Configure privacy
+linkTitle: Privacy
+description: Configure your site to help comply with regional privacy regulations.
+categories: []
+keywords: []
+aliases: [/about/privacy/]
+---
+
+## Responsibility
+
+Site authors are responsible for ensuring compliance with regional privacy regulations, including but not limited to:
+
+- GDPR (General Data Protection Regulation): Applies to individuals within the European Union and the European Economic Area.
+- CCPA (California Consumer Privacy Act): Applies to California residents.
+- CPRA (California Privacy Rights Act): Expands upon the CCPA with stronger consumer privacy protections.
+- Virginia Consumer Data Protection Act (CDPA): Applies to businesses that collect, process, or sell the personal data of Virginia residents.
+
+Hugo's privacy settings can assist in compliance efforts.
+
+## Embedded templates
+
+Hugo provides [embedded templates](g) to simplify site and content creation. Some of these templates interact with external services. For example, the `youtube` shortcode connects with YouTube's servers to embed videos on your site.
+
+Some of these templates include settings to enhance privacy.
+
+## Configuration
+
+> [!note]
+> These settings affect the behavior of some of Hugo's embedded templates. These settings may or may not affect the behavior of templates provided by third parties in their modules or themes.
+
+These are the default privacy settings for Hugo's embedded templates:
+
+{{< code-toggle config=privacy />}}
+
+See each template's documentation for a description of its privacy settings:
+
+- [Disqus partial](/templates/embedded/#privacy-disqus)
+- [Google Analytics partial](/templates/embedded/#privacy-google-analytics)
+- [Instagram shortcode](/shortcodes/instagram/#privacy)
+- [Vimeo shortcode](/shortcodes/vimeo/#privacy)
+- [X shortcode](/shortcodes/x/#privacy)
+- [YouTube shortcode](/shortcodes/youtube/#privacy)
diff --git a/content/en/configuration/related-content.md b/content/en/configuration/related-content.md
new file mode 100644 (file)
index 0000000..c6e182f
--- /dev/null
@@ -0,0 +1,111 @@
+---
+title: Configure related content
+linkTitle: Related content
+description: Configure related content.
+categories: []
+keywords: []
+---
+
+> [!note]
+> To understand Hugo's related content identification, please refer to the [related content] page.
+
+Hugo provides a sensible default configuration for identifying related content, but you can customize it in your site configuration, either globally or per language.
+
+## Default configuration
+
+This is the default configuration:
+
+{{< code-toggle config=related />}}
+
+> [!note]
+> Adding a `related` section to your site configuration requires you to provide a full configuration. You cannot override individual default values without specifying all related settings.
+
+## Top-level options
+
+threshold
+: (`int`) A value between 0-100, inclusive. A lower value will return more, but maybe not so relevant, matches.
+
+includeNewer
+: (`bool`) Whether to include pages newer than the current page in the related content listing. This will mean that the output for older posts may change as new related content gets added. Default is `false`.
+
+toLower
+: (`bool`) Whether to transform keywords in both the indexes and the queries to lower case. This may give more accurate results at a slight performance penalty. Default is `false`.
+
+## Per-index options
+
+name
+: (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
+
+type
+: (`string`) One of `basic` or `fragments`. Default is `basic`.
+
+applyFilter
+: (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type.
+
+weight
+: (`int`) An integer weight that indicates how important this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best. Default is `0`.
+
+cardinalityThreshold
+: (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`.
+
+pattern
+: (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
+
+toLower
+: (`bool`) Whether to transform keywords in both the indexes and the queries to lower case. This may give more accurate results at a slight performance penalty. Default is `false`.
+
+## Example
+
+Imagine we're building a book review site. Our main content will be book reviews, and we'll use genres and authors as taxonomies. When someone views a book review, we want to show a short list of related reviews based on shared authors and genres.
+
+Create the content:
+
+```text
+content/
+└── book-reviews/
+    ├── book-review-1.md
+    ├── book-review-2.md
+    ├── book-review-3.md
+    ├── book-review-4.md
+    └── book-review-5.md
+```
+
+Configure the taxonomies:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+author = 'authors'
+genre = 'genres'
+{{< /code-toggle >}}
+
+Configure the related content identification:
+
+{{< code-toggle file=hugo >}}
+[related]
+includeNewer = true
+threshold = 80
+toLower = true
+[[related.indices]]
+name = 'authors'
+weight = 2
+[[related.indices]]
+name = 'genres'
+weight = 1
+{{< /code-toggle >}}
+
+We've configured the `authors` index with a weight of `2` and the `genres` index with a weight of `1`. This means Hugo prioritizes shared `authors` as twice as significant as shared `genres`.
+
+Then render a list of 5 related reviews with a partial template like this:
+
+```go-html-template {file="layouts/partials/related.html" copy=true}
+{{ with site.RegularPages.Related . | first 5 }}
+  <p>Related content:</p>
+  <ul>
+    {{ range . }}
+      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+    {{ end }}
+  </ul>
+{{ end }}
+```
+
+[related content]: /content-management/related-content/
diff --git a/content/en/configuration/security.md b/content/en/configuration/security.md
new file mode 100644 (file)
index 0000000..f950dd2
--- /dev/null
@@ -0,0 +1,50 @@
+---
+title: Configure security
+linkTitle: Security
+description: Configure security.
+categories: []
+keywords: []
+---
+
+Hugo's built-in security policy, which restricts access to `os/exec`, remote communication, and similar operations, is configured via allow lists. By default, access is restricted. If a build attempts to use a feature not included in the allow list, it will fail, providing a detailed message.
+
+This is the default security configuration:
+
+{{< code-toggle config=security />}}
+
+enableInlineShortcodes
+: (`bool`) Whether to enable [inline shortcodes]. Default is `false`.
+
+exec.allow
+: (`[]string`) A slice of [regular expressions](g) matching the names of external executables that Hugo is allowed to run.
+
+exec.osEnv
+: (`[]string`) A slice of [regular expressions](g) matching the names of operating system environment variables that Hugo is allowed to access.
+
+funcs.getenv
+: (`[]string`) A slice of [regular expressions](g) matching the names of operating system environment variables that Hugo is allowed to access with the [`os.Getenv`] function.
+
+http.methods
+: (`[]string`) A slice of [regular expressions](g) matching the HTTP methods that the [`resources.GetRemote`] function is allowed to use.
+
+http.mediaTypes
+: (`[]string`) Applicable to the `resources.GetRemote` function, a slice of [regular expressions](g) matching the `Content-Type` in HTTP responses that Hugo trusts, bypassing file content analysis for media type detection.
+
+http.urls
+: (`[]string`) A slice of [regular expressions](g) matching the URLs that the `resources.GetRemote` function is allowed to access.
+
+> [!note]
+> Setting an allow list to the string `none` will completely disable the associated feature.
+
+You can also override the site configuration with environment variables. For example, to block `resources.GetRemote` from accessing any URL:
+
+```txt
+export HUGO_SECURITY_HTTP_URLS=none
+```
+
+Learn more about [using environment variables] to configure your site.
+
+[`os.Getenv`]: /functions/os/getenv
+[`resources.GetRemote`]: /functions/resources/getremote
+[inline shortcodes]: /content-management/shortcodes/#inline
+[using environment variables]: /configuration/introduction/#environment-variables
diff --git a/content/en/configuration/segments.md b/content/en/configuration/segments.md
new file mode 100644 (file)
index 0000000..0c40987
--- /dev/null
@@ -0,0 +1,77 @@
+---
+title: Configure segments
+linkTitle: Segments
+description: Configure your site for segmented rendering.
+categories: []
+keywords: []
+---
+
+{{< new-in 0.124.0 />}}
+
+> [!note]
+> The `segments` configuration applies only to segmented rendering. While it controls when content is rendered, it doesn't restrict access to Hugo's complete object graph (sites and pages), which remains fully available.
+
+Segmented rendering offers several advantages:
+
+- Faster builds: Process large sites more efficiently.
+- Rapid development: Render only a subset of your site for quicker iteration.
+- Scheduled rebuilds: Rebuild specific sections at different frequencies (e.g., home page and news hourly, full site weekly).
+- Targeted output: Generate specific output formats (like JSON for search indexes).
+
+## Segment definition
+
+Each segment is defined by include and exclude filters:
+
+- Filters: Each segment has zero or more exclude filters and zero or more include filters.
+- Matchers: Each filter contains one or more field [glob](g) matchers.
+- Logic: Matchers within a filter use AND logic. Filters within a section (include or exclude) use OR logic.
+
+## Filter fields
+
+Available fields for filtering:
+
+kind
+: (`string`) A [glob](g) pattern matching the [page kind](g). For example: ` {taxonomy,term}`.
+
+lang
+: (`string`) A [glob](g) pattern matching the [page language]. For example: `{en,de}`.
+
+output
+: (`string`) A [glob](g) pattern matching the [output format](g) of the page. For example: `{html,json}`.
+
+path
+: (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`.
+
+## Example
+
+Place broad filters, such as those for language or output format, in the excludes section. For example:
+
+{{< code-toggle file=hugo >}}
+[segments.segment1]
+  [[segments.segment1.excludes]]
+    lang = "n*"
+  [[segments.segment1.excludes]]
+    lang   = "en"
+    output = "rss"
+  [[segments.segment1.includes]]
+    kind = "{home,term,taxonomy}"
+  [[segments.segment1.includes]]
+    path = "{/docs,/docs/**}"
+{{< /code-toggle >}}
+
+## Rendering segments
+
+Render specific segments using the [`renderSegments`] configuration or the `--renderSegments` flag:
+
+```bash
+hugo --renderSegments segment1
+```
+
+You can configure multiple segments and use a comma-separated list with `--renderSegments` to render them all.
+
+```bash
+hugo --renderSegments segment1,segment2
+```
+
+[`renderSegments`]: /configuration/all/#rendersegments
+[page language]: /methods/page/language/
diff --git a/content/en/configuration/server.md b/content/en/configuration/server.md
new file mode 100644 (file)
index 0000000..92f0f0c
--- /dev/null
@@ -0,0 +1,128 @@
+---
+title: Configure server
+linkTitle: Server
+description: Configure the development server.
+categories: []
+keywords: []
+---
+
+These settings are exclusive to Hugo's development server, so a dedicated [configuration directory] for development, where the server is configured accordingly, is the recommended approach.
+
+[configuration directory]: /configuration/introduction/#configuration-directory
+
+```text
+project/
+└── config/
+    ├── _default/
+    │   └── hugo.toml
+    └── development/
+        └── server.toml
+```
+
+## Default settings
+
+The development server defaults to redirecting to `/404.html` for any requests to URLs that don't exist. See the [404 errors](#404-errors) section below for details.
+
+{{< code-toggle config=server />}}
+
+force
+: (`bool`) Whether to force a redirect even if there is existing content in the path.
+
+from
+: (`string`) A [glob](g) pattern matching the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns.
+
+fromHeaders
+: {{< new-in 0.144.0 />}}
+: (`map[string][string]`) Headers to match for the redirect. This maps the HTTP header name to a [glob](g) pattern with values to match. If the map is empty, the redirect will always be triggered.
+
+fromRe
+: {{< new-in 0.144.0 />}}
+: (`string`) A [regular expression](g) used to match the requested URL. Either `from` or `fromRE` must be set. If both `from` and `fromRe` are specified, the URL must match both patterns. Capture groups from the regular expression are accessible in the `to` field as `$1`, `$2`, and so on.
+
+status
+: (`string`) The HTTP status code to use for the redirect. A status code of 200 will trigger a URL rewrite.
+
+to
+: (`string`) The URL to forward the request to.
+
+## Headers
+
+Include headers in every server response to facilitate testing, particularly for features like Content Security Policies.
+
+[Content Security Policies]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
+
+{{< code-toggle file=config/development/server >}}
+[[headers]]
+for = "/**"
+
+[headers.values]
+X-Frame-Options = "DENY"
+X-XSS-Protection = "1; mode=block"
+X-Content-Type-Options = "nosniff"
+Referrer-Policy = "strict-origin-when-cross-origin"
+Content-Security-Policy = "script-src localhost:1313"
+{{< /code-toggle >}}
+
+## Redirects
+
+You can define simple redirect rules.
+
+{{< code-toggle file=config/development/server >}}
+[[redirects]]
+from = "/myspa/**"
+to = "/myspa/"
+status = 200
+force = false
+{{< /code-toggle >}}
+
+The `200` status code in this example triggers a URL rewrite, which is typically the desired behavior for [single-page applications].
+
+[single-page applications]: https://en.wikipedia.org/wiki/Single-page_application
+
+## 404 errors
+
+The development server defaults to redirecting to /404.html for any requests to URLs that don't exist.
+
+{{< code-toggle config=server />}}
+
+If you've already defined other redirects, you must explicitly add the 404 redirect.
+
+{{< code-toggle file=config/development/server >}}
+[[redirects]]
+force = false
+from   = "/**"
+to     = "/404.html"
+status = 404
+{{< /code-toggle >}}
+
+For multilingual sites, ensure the default language 404 redirect is defined last:
+
+{{< code-toggle file=config/development/server >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = false
+[[redirects]]
+from = '/fr/**'
+to = '/fr/404.html'
+status = 404
+
+[[redirects]] # Default language must be last.
+from = '/**'
+to = '/404.html'
+status = 404
+{{< /code-toggle >}}
+
+When the default language is served from a subdirectory:
+
+{{< code-toggle file=config/development/server >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+[[redirects]]
+from = '/fr/**'
+to = '/fr/404.html'
+status = 404
+
+[[redirects]] # Default language must be last.
+from = '/**'
+to = '/en/404.html'
+status = 404
+{{< /code-toggle >}}
diff --git a/content/en/configuration/services.md b/content/en/configuration/services.md
new file mode 100644 (file)
index 0000000..dbe3893
--- /dev/null
@@ -0,0 +1,52 @@
+---
+title: Configure services
+linkTitle: Services
+description: Configure embedded templates.
+categories: []
+keywords: []
+---
+
+Hugo provides [embedded templates](g) to simplify site and content creation. Some of these templates are configurable. For example, the embedded Google Analytics template requires a Google tag ID.
+
+This is the default configuration:
+
+{{< code-toggle config=services />}}
+
+disqus.shortname
+: (`string`) The `shortname` used with the Disqus commenting system. See&nbsp;[details](/templates/embedded/#disqus). To access this value from a template:
+
+  ```go-html-template
+  {{ .Site.Config.Services.Disqus.Shortname }}
+  ```
+
+googleAnalytics.id
+: (`string`) The Google tag ID for Google Analytics 4 properties. See&nbsp;[details](/templates/embedded/#google-analytics). To access this value from a template:
+
+  ```go-html-template
+  {{ .Site.Config.Services.GoogleAnalytics.ID }}
+  ```
+
+instagram.accessToken <!-- TODO: Remove when no longer in docs.yaml -->
+: (`string`) Do not use. Deprecated in [v0.123.0]. The embedded `instagram` shortcode no longer uses this setting.
+
+instagram.disableInlineCSS <!-- TODO: Remove when no longer in docs.yaml -->
+: (`bool`) Do not use. Deprecated in [v0.123.0]. The embedded `instagram` shortcode no longer uses this setting.
+
+rss.limit
+: (`int`) The maximum number of items to include in an RSS feed. Set to `-1` for no limit. Default is `-1`. See&nbsp;[details](/templates/rss/). To access this value from a template:
+
+  ```go-html-template
+  {{ .Site.Config.Services.RSS.Limit }}
+  ```
+
+twitter.disableInlineCSS <!-- TODO: Remove when no longer in docs.yaml -->
+: (`bool`) Do not use. Deprecated in [v0.141.0]. Use the `x` shortcode instead.
+
+x.disableInlineCSS
+: (`bool`) Whether to disable the inline CSS rendered by the embedded `x` shortode. See&nbsp;[details](/shortcodes/x/#privacy). Default is `false`. To access this value from a template:
+
+  ```go-html-template
+  {{ .Site.Config.Services.X.DisableInlineCSS }}
+
+[v0.141.0]: https://github.com/gohugoio/hugo/releases/tag/v0.141.0
+[v0.123.0]: https://github.com/gohugoio/hugo/releases/tag/v0.123.0
diff --git a/content/en/configuration/sitemap.md b/content/en/configuration/sitemap.md
new file mode 100644 (file)
index 0000000..bc97299
--- /dev/null
@@ -0,0 +1,24 @@
+---
+title: Configure sitemap
+linkTitle: Sitemap
+description: Configure the sitemap.
+categories: []
+keywords: []
+---
+
+These are the default sitemap configuration values. They apply to all pages unless overridden in front matter.
+
+{{< code-toggle config=sitemap />}}
+
+changefreq
+: (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#changefreqdef).
+
+disable
+: {{< new-in 0.125.0 />}}
+: (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
+
+filename
+: (`string`) The name of the generated file. Default is `sitemap.xml`.
+
+priority
+: (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#prioritydef).
diff --git a/content/en/configuration/taxonomies.md b/content/en/configuration/taxonomies.md
new file mode 100644 (file)
index 0000000..4b5ba97
--- /dev/null
@@ -0,0 +1,68 @@
+---
+title: Configure taxonomies
+linkTitle: Taxonomies
+description: Configure taxonomies.
+categories: []
+keywords: []
+---
+
+The default configuration defines two [taxonomies](g), `categories` and `tags`.
+
+{{< code-toggle config=taxonomies />}}
+
+When creating a taxonomy:
+
+- Use the singular form for the key (e.g., `category`).
+- Use the plural form for the value (e.g., `categories`).
+
+Then use the value as the key in front matter:
+
+{{< code-toggle file=content/example.md fm=true >}}
+---
+title: Example
+categories:
+  - vegetarian
+  - gluten-free
+tags:
+  - appetizer
+  - main course
+{{< /code-toggle >}}
+
+If you do not expect to assign more than one [term](g) from a given taxonomy to a content page, you may use the singular form for both key and value:
+
+{{< code-toggle file=hugo >}}
+taxonomies:
+  author: author
+{{< /code-toggle >}}
+
+Then in front matter:
+
+{{< code-toggle file=content/example.md fm=true >}}
+---
+title: Example
+author:
+  - Robert Smith
+{{< /code-toggle >}}
+
+The example above illustrates that even with a single term, the value is still provided as an array.
+
+You must explicitly define the default taxonomies to maintain them when adding a new one:
+
+{{< code-toggle file=hugo >}}
+taxonomies:
+  author: author
+  category: categories
+  tag: tags
+{{< /code-toggle >}}
+
+To disable the taxonomy system, use the [`disableKinds`] setting in the root of your site configuration to disable the `taxonomy` and `term` page [kinds](g).
+
+{{< code-toggle file=hugo >}}
+disableKinds = ['categories','tags']
+{{< /code-toggle >}}
+
+[`disableKinds`]: /configuration/all/#disablekinds
+
+See the [taxonomies] section for more information.
+
+[taxonomies]: /content-management/taxonomies/
diff --git a/content/en/configuration/ugly-urls.md b/content/en/configuration/ugly-urls.md
new file mode 100644 (file)
index 0000000..ec1dd8a
--- /dev/null
@@ -0,0 +1,36 @@
+---
+title: Configure ugly URLs
+linkTitle: Ugly URLs
+description: Configure ugly URLs.
+categories: []
+keywords: []
+---
+
+{{% glossary-term "ugly url" %}}&nbsp;For example:
+
+```text
+https://example.org/section/article.html
+```
+
+In its default configuration, Hugo generates [pretty URLs](g). For example:
+```text
+https://example.org/section/article/
+```
+
+This is the default configuration:
+
+{{< code-toggle config=uglyURLs />}}
+
+To generate ugly URLs for the entire site:
+
+{{< code-toggle file=hugo >}}
+uglyURLs = true
+{{< /code-toggle >}}
+
+To generate ugly URLs for specific sections of your site:
+
+{{< code-toggle file=hugo >}}
+[uglyURLs]
+books = true
+films = false
+{{< /code-toggle >}}
diff --git a/content/en/content-management/_common/_index.md b/content/en/content-management/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/content-management/_common/page-kinds.md b/content/en/content-management/_common/page-kinds.md
deleted file mode 100644 (file)
index 8f10dcd..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-| Kind | Description | Example |
-|----------------|--------------------------------------------------------------------|-------------------------------------------------------------------------------|
-| `home` | The landing page for the home page | `/index.html` |
-| `page` | The landing page for a given page | `my-post` page (`/posts/my-post/index.html`) |
-| `section` | The landing page of a given section | `posts` section (`/posts/index.html`) |
-| `taxonomy` | The landing page for a taxonomy | `tags` taxonomy (`/tags/index.html`) |
-| `term` | The landing page for one taxonomy's term | term `awesome` in `tags` taxonomy (`/tags/awesome/index.html`) |
-
-Four other page kinds unrelated to content are `robotsTXT`, `RSS`, `sitemap`, and `404`. Although primarily for internal use, you can specify the name when disabling one or more page kinds on your site. For example:
-
-{{< code-toggle file=hugo >}}
-disableKinds = ['robotsTXT','404']
-{{< /code-toggle >}}
index 21d0b8739885dfadb532fbdadb4e69810d0eb9fe..4e20607567626b3fa91f35e9734e92b2705244df 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Content management
-
 description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: content-management-in-this-section
-    parent: content-management
-    weight: 10
 weight: 10
 aliases: [/content/,/content/organization]
 ---
-
-A static site generator needs to extend beyond front matter and a couple of templates to be both scalable and *manageable*. Hugo was designed with not only developers in mind, but also content managers and authors.
index 966c847db0a44f7cfe3e9b789b084db9e085af21..db083850423c0f6b08a7cc37f311e4d07720022d 100644 (file)
@@ -1,15 +1,8 @@
 ---
 title: Archetypes
 description: An archetype is a template for new content.
-categories: [content management]
-keywords: [archetypes,generators,metadata,front matter]
-menu:
-  docs:
-    parent: content-management
-    weight: 140
-  quicklinks:
-weight: 140
-toc: true
+categories: []
+keywords: []
 aliases: [/content/archetypes/]
 ---
 
@@ -102,7 +95,7 @@ Although typically used as a front matter template, you can also use an archetyp
 
 For example, in a documentation site you might have a section (content type) for functions. Every page within this section should follow the same format: a brief description, the function signature, examples, and notes. We can pre-populate the page to remind content authors of the standard format.
 
-{{< code file=archetypes/functions.md >}}
+````text {file="archetypes/functions.md"}
 ---
 date: '{{ .Date }}'
 draft: true
@@ -126,7 +119,7 @@ One or more practical examples, each within a fenced code block.
 ## Notes
 
 Additional information to clarify as needed.
-{{< /code >}}
+````
 
 Although you can include [template actions](g) within the content body, remember that Hugo evaluates these once---at the time of content creation. In most cases, place template actions in a [template](g) where Hugo evaluates the actions every time you [build](g) the site.
 
index e7846245530f18b6137578c788e1e81352f24af5..8c29a19b90fcca889ee82d798462f425163b5c5b 100644 (file)
@@ -1,18 +1,18 @@
 ---
 title: Build options
 description: Build options help define how Hugo must treat a given page when building the site.
-categories: [content management,fundamentals]
-keywords: [build,content,front matter, page resources]
-menu:
-  docs:
-    parent: content-management
-    weight: 70
-weight: 70
-toc: true
+categories: []
+keywords: []
 aliases: [/content/build-options/]
 ---
 
-Build options are stored in a reserved front matter object named `build` with these defaults:
+<!-- TODO
+We deprecated the `_build` front matter key in favor of `build` in v0.145.0 on 2025-02-26. Remove footnote #1 on or after 2026-05-26 (15 months after deprecation).
+-->
+
+Build options are stored in a reserved front matter object named `build`[^1] with these defaults:
+
+[^1]: The `_build` alias for `build` is deprecated and will be removed in a future release.
 
 {{< code-toggle file=content/example/index.md fm=true >}}
 [build]
@@ -23,49 +23,26 @@ render = 'always'
 
 list
 : When to include the page within page collections. Specify one of:
-  
-  - `always`
-    : Include the page in _all_ page collections. For example, `site.RegularPages`, `.Pages`, etc. This is the default value.
 
-  - `local`
-    : Include the page in _local_ page collections. For example, `.RegularPages`, `.Pages`, etc. Use this option to create fully navigable but headless content sections.
-
-  - `never`
-    : Do not include the page in _any_ page collection.
+  - `always`: Include the page in _all_ page collections. For example, `site.RegularPages`, `.Pages`, etc. This is the default value.
+  - `local`: Include the page in _local_ page collections. For example, `.RegularPages`, `.Pages`, etc. Use this option to create fully navigable but headless content sections.
+  - `never`: Do not include the page in _any_ page collection.
 
 publishResources
 : Applicable to [page bundles], determines whether to publish the associated [page resources]. Specify one of:
 
-  - `true`
-    : Always publish resources. This is the default value.
-
-  - `false`
-    : Only publish a resource when invoking its [`Permalink`], [`RelPermalink`], or [`Publish`] method within a template.
+  - `true`: Always publish resources. This is the default value.
+  - `false`: Only publish a resource when invoking its [`Permalink`], [`RelPermalink`], or [`Publish`] method within a template.
 
 render
 : When to render the page. Specify one of:
 
-  - `always`
-    : Always render the page to disk. This is the default value.
+  - `always`: Always render the page to disk. This is the default value.
+  - `link`: Do not render the page to disk, but assign `Permalink` and `RelPermalink` values.
+  - `never`: Never render the page to disk, and exclude it from all page collections.
 
-  - `link`
-    : Do not render the page to disk, but assign `Permalink` and `RelPermalink` values.
-
-  - `never`
-    : Never render the page to disk, and exclude it from all page collections.
-
-[page bundles]: /content-management/page-bundles/
-[page resources]: /content-management/page-resources/
-[`Permalink`]: /methods/resource/permalink/
-[`RelPermalink`]: /methods/resource/relpermalink/
-[`Publish`]: /methods/resource/publish/
-
-{{% note %}}
-Any page, regardless of its build options, will always be available by using the [`.Page.GetPage`] or [`.Site.GetPage`] method.
-
-[`.Page.GetPage`]: /methods/page/getpage/
-[`.Site.GetPage`]: /methods/site/getpage/
-{{% /note %}}
+> [!note]
+> Any page, regardless of its build options, will always be available by using the [`.Page.GetPage`] or [`.Site.GetPage`] method.
 
 ## Example -- headless page
 
@@ -92,14 +69,14 @@ title = 'Headless page'
 
 To include the content and images on the home page:
 
-{{< code file=layouts/_default/home.html  >}}
+```go-html-template {file="layouts/_default/home.html"}
 {{ with .Site.GetPage "/headless" }}
   {{ .Content }}
   {{ range .Resources.ByType "image" }}
     <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 The published site will have this structure:
 
@@ -120,8 +97,6 @@ In the example above, note that:
 
 Create a unpublished section whose content and resources can be included in other pages.
 
-[branch bundle]: /content-management/page-bundles/
-
 ```text
 content/
 ├── headless/
@@ -152,7 +127,7 @@ In the front matter above, note that we have set `list` to `local` to include th
 
 To include the content and images on the home page:
 
-{{< code file=layouts/_default/home.html  >}}
+```go-html-template {file="layouts/_default/home.html"}
 {{ with .Site.GetPage "/headless" }}
   {{ range .Pages }}
     {{ .Content }}
@@ -161,7 +136,7 @@ To include the content and images on the home page:
     {{ end }}
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 The published site will have this structure:
 
@@ -211,14 +186,14 @@ render = 'always'
 
 To render the glossary:
 
-{{< code file=layouts/glossary/list.html  >}}
+```go-html-template {file="layouts/glossary/list.html"}
 <dl>
   {{ range .Pages }}
     <dt>{{ .Title }}</dt>
     <dd>{{ .Content }}</dd>
   {{ end }}
 </dl>
-{{< /code >}}
+```
 
 The published site will have this structure:
 
@@ -253,7 +228,7 @@ list = 'never'
 
 The published site will have this structure:
 
-```html
+```text
 public/
 ├── books/
 │   ├── book-1/
@@ -296,13 +271,13 @@ title = 'Internal'
 [cascade.build]
 render = 'never'
 list = 'never'
-[cascade._target]
+[cascade.target]
 environment = 'production'
 {{< /code-toggle >}}
 
 The production site will have this structure:
 
-```html
+```text
 public/
 ├── reference/
 │   ├── reference-1/
@@ -318,3 +293,11 @@ public/
 │   └── index.html
 └── index.html
 ```
+
+[`.Page.GetPage`]: /methods/page/getpage/
+[`.Site.GetPage`]: /methods/site/getpage/
+[`Permalink`]: /methods/resource/permalink/
+[`Publish`]: /methods/resource/publish/
+[`RelPermalink`]: /methods/resource/relpermalink/
+[page bundles]: /content-management/page-bundles/
+[page resources]: /content-management/page-resources/
index 721f1fe5a0a7d00831d34b3223bf4d50e85d9441..fee4fb37230a0fa9440681e6d14476d668d6d294 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Comments
 description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
-categories: [content management]
-keywords: [sections,content,organization]
-menu:
-  docs:
-    parent: content-management
-    weight: 220
-weight: 220
-toc: true
+categories: []
+keywords: []
 aliases: [/extras/comments/]
 ---
 
@@ -31,9 +25,9 @@ shortname = 'your-disqus-shortname'
 
 For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter] of a single content file:
 
-* `disqus_identifier`
-* `disqus_title`
-* `disqus_url`
+- `disqus_identifier`
+- `disqus_title`
+- `disqus_url`
 
 ### Render Hugo's built-in Disqus partial template
 
@@ -67,7 +61,7 @@ Open-source commenting systems:
 - [Talkyard](https://blog-comments.talkyard.io/)
 - [Utterances](https://utteranc.es/)
 
-[configuration]: /getting-started/configuration/
+[configuration]: /configuration/
 [disquspartial]: /templates/embedded/#disqus
 [disqussetup]: https://disqus.com/profile/signup/
 [forum]: https://discourse.gohugo.io
index 420d49d9d9f156d033dbdf4121b70cb9bdce999b..3468bb728454aec7ae8e391241a3ba70446a8e3a 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Content adapters
 description: Create content adapters to dynamically add content when building your site.
-categories: [content management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: content-management
-    weight: 290
-weight: 290
-toc: true
 ---
 
 {{< new-in 0.126.0 />}}
@@ -39,11 +33,11 @@ Each content adapter is named _content.gotmpl and uses the same [syntax] as temp
 
 Use these methods within a content adapter.
 
-###### AddPage
+### AddPage
 
 Adds a page to the site.
 
-{{< code file=content/books/_content.gotmpl >}}
+```go-html-template {file="content/books/_content.gotmpl"}
 {{ $content := dict
   "mediaType" "text/markdown"
   "value" "The _Hunchback of Notre Dame_ was written by Victor Hugo."
@@ -55,13 +49,13 @@ Adds a page to the site.
   "title" "The Hunchback of Notre Dame"
 }}
 {{ .AddPage $page }}
-{{< /code >}}
+```
 
-###### AddResource
+### AddResource
 
 Adds a page resource to the site.
 
-{{< code file=content/books/_content.gotmpl >}}
+```go-html-template {file="content/books/_content.gotmpl"}
 {{ with resources.Get "images/a.jpg" }}
   {{ $content := dict
     "mediaType" .MediaType.Type
@@ -73,42 +67,41 @@ Adds a page resource to the site.
   }}
   {{ $.AddResource $resource }}
 {{ end }}
-{{< /code >}}
+```
 
 Then retrieve the new page resource with something like:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ with .Resources.Get "cover.jpg" }}
   <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
 {{ end }}
-{{< /code >}}
+```
 
-###### Site
+### Site
 
 Returns the `Site` to which the pages will be added.
 
-{{< code file=content/books/_content.gotmpl >}}
+```go-html-template {file="content/books/_content.gotmpl"}
 {{ .Site.Title }}
-{{< /code >}}
+```
 
-{{% note %}}
-Note that the `Site` returned isn't fully built when invoked from the content adapters; if you try to call methods that depends on pages, e.g. `.Site.Pages`, you will get an error saying "this method cannot be called before the site is fully initialized".
-{{% /note %}}
+> [!note]
+> Note that the `Site` returned isn't fully built when invoked from the content adapters; if you try to call methods that depends on pages, e.g. `.Site.Pages`, you will get an error saying "this method cannot be called before the site is fully initialized".
 
-###### Store
+### Store
 
 Returns a persistent “scratch pad” to store and manipulate data. The main use case for this is to transfer values between executions when [EnableAllLanguages](#enablealllanguages) is set. See [examples](/methods/page/store/).
 
-{{< code file=content/books/_content.gotmpl >}}
+```go-html-template {file="content/books/_content.gotmpl"}
 {{ .Store.Set "key" "value" }}
 {{ .Store.Get "key" }}
-{{< /code >}}
+```
 
-###### EnableAllLanguages
+### EnableAllLanguages
 
-By default, Hugo executes the content adapter for the language defined by the _content.gotmpl file . Use this method to activate the content adapter for all languages.
+By default, Hugo executes the content adapter for the language defined by the _content.gotmpl file. Use this method to activate the content adapter for all languages.
 
-{{< code file=content/books/_content.gotmpl >}}
+```go-html-template {file="content/books/_content.gotmpl"}
 {{ .EnableAllLanguages }}
 {{ $content := dict
   "mediaType" "text/markdown"
@@ -121,7 +114,7 @@ By default, Hugo executes the content adapter for the language defined by the _c
   "title" "The Hunchback of Notre Dame"
 }}
 {{ .AddPage $page }}
-{{< /code >}}
+```
 
 ## Page map
 
@@ -141,11 +134,10 @@ Key|Description|Required
 `path`|The page's [logical path](g) relative to the content adapter. Do not include a leading slash or file extension.|:heavy_check_mark:
 `title`|The page title.|&nbsp;
 
-{{% note %}}
-While `path` is the only required field, we recommend setting `title` as well.
-
-When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C` produces a logical path of `/section/a-b-c`.
-{{% /note %}}
+> [!note]
+> While `path` is the only required field, we recommend setting `title` as well.
+>
+> When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C` produces a logical path of `/section/a-b-c`.
 
 ## Resource map
 
@@ -160,18 +152,18 @@ Key|Description|Required
 `path`|The resources's [logical path](g) relative to the content adapter. Do not include a leading slash.|:heavy_check_mark:
 `title`|The resource title.|&nbsp;
 
-{{% note %}}
-If the `content.value` is a string Hugo creates a new resource. If the `content.value` is a resource, Hugo obtains the value from the existing resource.
-
-When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C/cover.jpg` produces a logical path of `/section/a-b-c/cover.jpg`.
-{{% /note %}}
+> [!note]
+> If the `content.value` is a string Hugo creates a new resource. If the `content.value` is a resource, Hugo obtains the value from the existing resource.
+>
+> When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C/cover.jpg` produces a logical path of `/section/a-b-c/cover.jpg`.
 
 ## Example
 
 Create pages from remote data, where each page represents a book review.
 
-Step 1
-: Create the content structure.
+### Step 1
+
+Create the content structure.
 
 ```text
 content/
@@ -180,15 +172,15 @@ content/
     └── _index.md
 ```
 
-Step 2
-: Inspect the remote data to determine how to map key-value pairs to front matter fields.
+### Step 2
+Inspect the remote data to determine how to map key-value pairs to front matter fields.\
+<https://gohugo.io/shared/examples/data/books.json>
 
-: <https://gohugo.io/shared/examples/data/books.json>
+### Step 3
 
-Step 3
-: Create the content adapter.
+Create the content adapter.
 
-{{< code file=content/books/_content.gotmpl copy=true >}}
+```go-html-template {file="content/books/_content.gotmpl" copy=true}
 {{/* Get remote data. */}}
 {{ $data := dict }}
 {{ $url := "https://gohugo.io/shared/examples/data/books.json" }}
@@ -241,12 +233,13 @@ Step 3
   {{ end }}
 
 {{ end }}
-{{< /code >}}
+```
+
+### Step 4
 
-Step 4
-: Create a single template to render each book review.
+Create a single template to render each book review.
 
-{{< code file=layouts/books/single.html copy=true >}}
+```go-html-template {file="layouts/books/single.html" copy=true}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
 
@@ -273,7 +266,7 @@ Step 4
 
   {{ .Content }}
 {{ end }}
-{{< /code >}}
+```
 
 ## Multilingual sites
 
diff --git a/content/en/content-management/cross-references.md b/content/en/content-management/cross-references.md
deleted file mode 100644 (file)
index 66a7792..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
----
-title: Links and cross references
-description: Shortcodes for creating links to documents.
-categories: [content management]
-keywords: [cross references,references,anchors,urls]
-menu:
-  docs:
-    parent: content-management
-    weight: 170
-weight: 170
-toc: true
-aliases: [/extras/crossreferences/]
----
-
-The `ref` and `relref` shortcodes display the absolute and relative permalinks to a document, respectively.
-
-## Use of `ref` and `relref`
-
-The `ref` and `relref` shortcodes require a single argument: the path to a content document, with or without a file extension, with or without an anchor. Paths without a leading `/` are first resolved relative to the current page, then to the remainder of the site.
-
-```text
-.
-└── content
-    ├── about
-    |   ├── _index.md
-    |   └── credits.md
-    ├── pages
-    |   ├── document1.md
-    |   └── document2.md    // has anchor #anchor
-    ├── products
-    |   └── index.md
-    └── blog
-        └── my-post.md
-```
-
-The pages can be referenced as follows:
-
-```text
-{{</* ref "document2" */>}}             <-- From pages/document1.md, relative path
-{{</* ref "document2#anchor" */>}}      
-{{</* ref "document2.md" */>}}          
-{{</* ref "document2.md#anchor" */>}}   
-{{</* ref "#anchor" */>}}               <-- From pages/document2.md
-{{</* ref "/blog/my-post" */>}}         <-- From anywhere, absolute path
-{{</* ref "/blog/my-post.md" */>}}
-{{</* relref "document" */>}}
-{{</* relref "document.md" */>}}
-{{</* relref "#anchor" */>}}
-{{</* relref "/blog/my-post.md" */>}}
-```
-
-`index.md` can be reference either by its path or by its containing directory without the ending `/`. `_index.md` can be referenced only by its containing directory:
-
-```text
-{{</* ref "/about" */>}}             <-- References /about/_index.md
-{{</* ref "/about/_index" */>}}      <-- Raises REF_NOT_FOUND error
-{{</* ref "/about/credits.md" */>}}  <-- References /about/credits.md
-
-{{</* ref "/products" */>}}          <-- References /products/index.md
-{{</* ref "/products/index" */>}}    <-- References /products/index.md
-```
-
-To generate a hyperlink using `ref` or `relref` in Markdown:
-
-```text
-[About]({{</* ref "/about" */>}} "About Us")
-```
-
-Hugo emits an error or warning if a document cannot be uniquely resolved. The error behavior is configurable; see below.
-
-### Link to another language version
-
-Using `ref` or `relref` without specifying a language, will make the reference resolve to the language of the current content page.
-
-To link to another language version of a document, use this syntax:
-
-```text
-{{</* relref path="document.md" lang="ja" */>}}
-```
-
-### Get another output format
-
-To link to another Output Format of a document, use this syntax:
-
-```text
-{{</* relref path="document.md" outputFormat="rss" */>}}
-```
-
-### Heading IDs
-
-When using Markdown document types, Hugo generates element IDs for every heading on a page. For example:
-
-```text
-## Reference
-```
-
-produces this HTML:
-
-```html
-<h2 id="reference">Reference</h2>
-```
-
-Get the permalink to a heading by appending the ID to the path when using the `ref` or `relref` shortcodes:
-
-```text
-{{</* ref "document.md#reference" */>}}
-{{</* relref "document.md#reference" */>}}
-```
-
-Generate a custom heading ID by including an attribute. For example:
-
-```text
-## Reference A {#foo}
-## Reference B {id="bar"}
-```
-
-produces this HTML:
-
-```html
-<h2 id="foo">Reference A</h2>
-<h2 id="bar">Reference B</h2>
-```
-
-Hugo will generate unique element IDs if the same heading appears more than once on a page. For example:
-
-```text
-## Reference
-## Reference
-## Reference
-```
-
-produces this HTML:
-
-```html
-<h2 id="reference">Reference</h2>
-<h2 id="reference-1">Reference</h2>
-<h2 id="reference-2">Reference</h2>
-```
-
-## Ref and RelRef Configuration
-
-The behavior can be configured in `hugo.toml`:
-
-refLinksErrorLevel ("ERROR")
-: When using `ref` or `relref` to resolve page links and a link cannot be resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
-
-refLinksNotFoundURL
-: URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
index 1237e4f4d5ec983973e1d33038ef8aeb5c15a8d6..3fc98b36a92a6b649e5fa12726a08abac23d4b4d 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Data sources
 description: Use local and remote data sources to augment or create content.
-categories: [content management]
-keywords: [data,json,toml,yaml,xml]
-menu:
-  docs:
-    parent: content-management
-    weight: 280
-weight: 280
-toc: true
+categories: []
+keywords: []
 aliases: [/extras/datafiles/,/extras/datadrivencontent/,/doc/datafiles/,/templates/data-templates/]
 ---
 
@@ -22,9 +16,8 @@ The `data` directory in the root of your project may contain one or more data fi
 
 Hugo also merges data directories from themes and modules into this single data structure, where the `data` directory in the root of your project takes precedence.
 
-{{% note %}}
-Hugo reads the combined data structure into memory and keeps it there for the entire build. For data that is infrequently accessed, use global or page resources instead.
-{{% /note %}}
+> [!note]
+> Hugo reads the combined data structure into memory and keeps it there for the entire build. For data that is infrequently accessed, use global or page resources instead.
 
 Theme and module authors may wish to namespace their data files to prevent collisions. For example:
 
@@ -35,14 +28,11 @@ project/
         └── foo.json
 ```
 
-{{% note %}}
-Do not place CSV files in the `data` directory. Access CSV files as page, global, or remote resources.
-{{% /note %}}
+> [!note]
+> Do not place CSV files in the `data` directory. Access CSV files as page, global, or remote resources.
 
 See the documentation for the [`Data`] method on a `Site` object for details and examples.
 
-[`Data`]: /methods/site/data/
-
 ## Global resources
 
 Use the `resources.Get` and `transform.Unmarshal` functions to access data files that exist as global resources.
@@ -65,17 +55,17 @@ See the [`transform.Unmarshal`](/functions/transform/unmarshal/#remote-resource)
 
 Use data sources to augment existing content. For example, create a shortcode to render an HTML table from a global CSV resource.
 
-{{< code file=assets/pets.csv >}}
+```csv {file="assets/pets.csv"}
 "name","type","breed","age"
 "Spot","dog","Collie","3"
 "Felix","cat","Malicious","7"
-{{< /code >}}
+```
 
-{{< code file=content/example.md lang=text >}}
+```text {file="content/example.md"}
 {{</* csv-to-table "pets.csv" */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/csv-to-table.html >}}
+```go-html-template {file="layouts/shortcodes/csv-to-table.html"}
 {{ with $file := .Get 0 }}
   {{ with resources.Get $file }}
     {{ with . | transform.Unmarshal }}
@@ -104,7 +94,7 @@ Use data sources to augment existing content. For example, create a shortcode to
 {{ else }}
   {{ errorf "The %q shortcode requires one positional argument, the path to the CSV file relative to the assets directory. See %s" .Name .Position }}
 {{ end }}
-{{< /code >}}
+```
 
 Hugo renders this to:
 
@@ -117,4 +107,5 @@ Felix|cat|Malicious|7
 
 Use [content adapters] to create new content.
 
+[`Data`]: /methods/site/data/
 [content adapters]: /content-management/content-adapters/
index f9f3cd30f648e36868628b3c91fe6cc60fa6d59c..0070ced5954dd502a3c95f312efb1a5830d34d0f 100644 (file)
@@ -1,23 +1,14 @@
 ---
 title: Diagrams
 description: Use fenced code blocks and Markdown render hooks to include diagrams in your content.
-categories: [content management]
-keywords: [diagrams,drawing]
-menu:
-  docs:
-    parent: content-management
-    weight: 260
-weight: 260
-toc: true
+categories: []
+keywords: []
 ---
 
 ## GoAT diagrams (ASCII)
 
 Hugo natively supports [GoAT] diagrams with an [embedded code block render hook]. This means that this code block:
 
-[GoAT]: https://github.com/bep/goat
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
-
 ````txt
 ```goat
       .               .                .               .--- 1          .-- 1     / 1
@@ -48,18 +39,16 @@ Will be rendered as:
 
 Hugo does not provide a built-in template for Mermaid diagrams. Create your own using a [code block render hook]:
 
-[code block render hook]: /render-hooks/code-blocks/
-
-{{< code file=layouts/_default/_markup/render-codeblock-mermaid.html >}}
+```go-html-template {file="layouts/_default/_markup/render-codeblock-mermaid.html" copy=true}
 <pre class="mermaid">
-  {{- .Inner | htmlEscape | safeHTML }}
+  {{ .Inner | htmlEscape | safeHTML }}
 </pre>
 {{ .Page.Store.Set "hasMermaid" true }}
-{{< /code >}}
+```
 
-And then include this snippet at the bottom of the content template:
+Then include this snippet at the _bottom_ of your base template, before the closing `body` tag:
 
-```go-html-template
+```go-html-template {file="layouts/_default/baseof.html" copy=true}
 {{ if .Store.Get "hasMermaid" }}
   <script type="module">
     import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
@@ -70,7 +59,7 @@ And then include this snippet at the bottom of the content template:
 
 With that you can use the `mermaid` language in Markdown code blocks:
 
-````text
+````text {copy=true}
 ```mermaid
 sequenceDiagram
     participant Alice
@@ -158,7 +147,7 @@ sequenceDiagram
 
 Created from <https://arthursonzogni.com/Diagon/#Tree>
 
-```goat  { width=300  color="orange" }
+```goat  {width=300 color="orange"}
 ───Linux─┬─Android
          ├─Debian─┬─Ubuntu─┬─Lubuntu
          │        │        ├─Kubuntu
@@ -173,7 +162,7 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
 
 <https://arthursonzogni.com/Diagon/#Sequence>
 
-```goat { class="w-40" }
+```goat {class="w-40"}
 ┌─────┐       ┌───┐
 │Alice│       │Bob│
 └──┬──┘       └─┬─┘
@@ -238,7 +227,7 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
 
 <https://arthursonzogni.com/Diagon/#Table>
 
-```goat { class="w-80 dark-blue" }
+```goat {class="w-80 dark-blue"}
 ┌────────────────────────────────────────────────┐
 │                                                │
 ├────────────────────────────────────────────────┤
@@ -265,3 +254,7 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
 │LITERAL    = """" character { character } """" .│
 └────────────────────────────────────────────────┘
 ```
+
+[code block render hook]: /render-hooks/code-blocks/
+[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[GoAT]: https://github.com/bep/goat
index a1f203f3c7daaf10be3a009aae3c0fb89bdb4fea..1acaae0635aed87ff13cee389431d0d8460ce4db 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Content formats
 description: Create your content using Markdown, HTML, Emacs Org Mode, AsciiDoc, Pandoc, or reStructuredText.
-categories: [content management]
-keywords: [markdown,asciidoc,pandoc,content format]
-menu:
-  docs:
-    parent: content-management
-    weight: 40
-weight: 40
-toc: true
+categories: []
+keywords: []
 aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/]
 ---
 
@@ -58,13 +52,13 @@ Hugo provides custom Markdown features including:
 
 [Attributes]: /content-management/markdown-attributes/
 [CommonMark]: https://spec.commonmark.org/current/
-[Extensions]: /getting-started/configuration-markup/#goldmark-extensions
+[Extensions]: /configuration/markup/#extensions
 [GitHub Flavored Markdown]: https://github.github.com/gfm/
 [Goldmark]: https://github.com/yuin/goldmark
 [Markdown]: https://daringfireball.net/projects/markdown/
 [Mathematics]: /content-management/mathematics/
 [Render hooks]: /render-hooks/introduction/
-[configure goldmark]: /getting-started/configuration-markup/#goldmark
+[configure goldmark]: /configuration/markup/#goldmark
 
 ### HTML
 
@@ -98,8 +92,8 @@ hugo --logLevel info
 ```
 
 [AsciiDoc]: https://asciidoc.org/
-[configure the AsciiDoc renderer]: /getting-started/configuration-markup/#asciidoc
-[configure asciidoc]: /getting-started/configuration-markup/#asciidoc
+[configure the AsciiDoc renderer]: /configuration/markup/#asciidoc
+[configure asciidoc]: /configuration/markup/#asciidoc
 
 ### Pandoc
 
@@ -128,14 +122,7 @@ Hugo passes these CLI flags when calling the rst2html executable:
 
 ## Classification
 
-Content format|Media type|Identifier|File extensions
-:--|:--|:--|:--
-Markdown|`text/markdown`|`markdown`|`markdown`,`md`, `mdown`
-HTML|`text/html`|`html`|`htm`, `html`
-Emacs Org Mode|`text/org`|`org`|`org`
-AsciiDoc|`text/asciidoc`|`asciidoc`|`ad`, `adoc`, `asciidoc`
-Pandoc|`text/pandoc`|`pandoc`|`pandoc`, `pdc`
-reStructuredText|`text/rst`|`rst`|`rst`
+{{% include "/_common/content-format-table.md" %}}
 
 When converting content to HTML, Hugo uses:
 
index 9f5fc9e11d0266297cfe3199452affceee03549b..8bfbd1acc6dcbac802e78fe2ed2382c28ec9160b 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Front matter
 description: Use front matter to add metadata to your content.
-categories: [content management]
-keywords: [front matter,yaml,toml,json,metadata,archetypes]
-menu:
-  docs:
-    parent: content-management
-    weight: 60
-weight: 60
-toc: true
+categories: []
+keywords: []
 aliases: [/content/front-matter/]
 ---
 
@@ -45,216 +39,140 @@ Front matter fields may be [boolean](g), [integer](g), [float](g), [string](g),
 
 The most common front matter fields are `date`, `draft`, `title`, and `weight`, but you can specify metadata using any of fields below.
 
-{{% note %}}
-The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details.
+> [!note]
+The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details.
 
 [parameters]: #parameters
-{{% /note %}}
 
-###### aliases
+aliases
+: (`string array`) An array of one or more aliases, where each alias is a relative URL that will redirect the browser to the current location. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details.
 
-(`string array`) An array of one or more aliases, where each alias is a relative URL that will redirect the browser to the current location. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details.
+build
+: (`map`) A map of [build options].
 
-[`aliases`]: /methods/page/aliases/
-[aliases]: /content-management/urls/#aliases
+cascade
+: (`map`) A map of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details.
 
-###### build
+date
+: (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object.
 
-(`map`) A map of [build options].
+description
+: (`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object.
 
-[build options]: /content-management/build-options/
+draft
+: (`bool`) Whether to disable rendering unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object.
 
-###### cascade {#cascade-field}
+expiryDate
+: (`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`ExpiryDate`] method on a `Page` object.
 
-(`map`) A map of front matter keys whose values are passed down to the page’s descendants unless overwritten by self or a closer ancestor’s cascade. See the [cascade] section for details.
+headless
+: (`bool`) Applicable to [leaf bundles], whether to set the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources].
 
-[cascade]: #cascade
+isCJKLanguage
+: (`bool`) Whether the content language is in the [CJK](g) family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object.
 
-###### date
+keywords
+: (`string array`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy](g) to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object.
 
-(`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object.
+lastmod
+: (`string`) The date that the page was last modified. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Lastmod`] method on a `Page` object.
 
-[`date`]: /methods/page/date/
+layout
+: (`string`) Provide a template name to [target a specific template],  overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object.
 
-###### description
+linkTitle
+: (`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object.
 
-(`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object.
+markup
+: (`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension.
 
-[`description`]: /methods/page/description/
+menus
+: (`string`, `string array`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details.
 
-###### draft
+modified
+: Alias to [lastmod](#lastmod).
 
-(`bool`)
-If `true`, the page will not be rendered unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object.
+outputs
+: (`string array`) The [output formats] to render. See [configure outputs] for more information.
 
-[`draft`]: /methods/page/draft/
+params
+: {{< new-in 0.123.0 />}}
+: (`map`) A map of custom [page parameters].
 
-###### expiryDate
+pubdate
+: Alias to [publishDate](#publishdate).
 
-(`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`ExpiryDate`] method on a `Page` object.
+publishDate
+: (`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`PublishDate`] method on a `Page` object.
 
-[`expirydate`]: /methods/page/expirydate/
+published
+: Alias to [publishDate](#publishdate).
 
-###### headless
+resources
+: (`map array`) An array of maps to provide metadata for [page resources].
 
-(`bool`) Applicable to [leaf bundles], if `true` this value sets the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources].
+sitemap
+: (`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object.
 
-[leaf bundles]: /content-management/page-bundles/#leaf-bundles
-[page resources]: /content-management/page-resources/
+slug
+: (`string`) Overrides the last segment of the URL path. Not applicable to section pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object.
 
-###### isCJKLanguage
+summary
+: (`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object.
 
-(`bool`) Set to `true` if the content language is in the [CJK](g) family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object.
+title
+: (`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object.
 
-[`fuzzywordcount`]: /methods/page/wordcount/
-[`readingtime`]: /methods/page/readingtime/
-[`summary`]: /methods/page/summary/
-[`wordcount`]: /methods/page/wordcount/
-
-###### keywords
+translationKey
+: (`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object.
 
-(`string array`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy](g) to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object.
-
-[`keywords`]: /methods/page/keywords/
-
-<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
-<!--
-kind
-: The kind of page, e.g. "page", "section", "home" etc. This is usually derived from the content path.
--->
+type
+: (`string`) The [content type](g), overriding the value derived from the top-level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object.
 
-<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
-<!--
-lang
-: The language code for this page. This is usually derived from the module mount or filename.
--->
+unpublishdate
+: Alias to [expirydate](#expirydate).
 
-###### lastmod
+url
+: (`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details.
 
-(`string`) The date that the page was last modified. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Lastmod`] method on a `Page` object.
+weight
+: (`int`) The page [weight](g), used to order the page within a [page collection](g). Access this value from a template using the [`Weight`] method on a `Page` object.
 
+[URL management]: /content-management/urls/#slug
+[`Summary`]: /methods/page/summary/
+[`aliases`]: /methods/page/aliases/
+[`date`]: /methods/page/date/
+[`description`]: /methods/page/description/
+[`draft`]: /methods/page/draft/
+[`expirydate`]: /methods/page/expirydate/
+[`fuzzywordcount`]: /methods/page/wordcount/
+[`keywords`]: /methods/page/keywords/
 [`lastmod`]: /methods/page/date/
-
-###### layout
-
-(`string`) Provide a template name to [target a specific template],  overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object.
-
 [`layout`]: /methods/page/layout/
-[template lookup order]: /templates/lookup-order/
-[target a specific template]: /templates/lookup-order/#target-a-template
-
-###### linkTitle
-
-(`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object.
-
 [`linktitle`]: /methods/page/linktitle/
-
-###### markup
-
-(`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension.
-
-[content formats]: /content-management/formats/#classification
-
-###### menus
-
-(`string`, `string array`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details.
-
-[menus]: /content-management/menus/#define-in-front-matter
-
-###### modified
-
-Alias to [lastmod](#lastmod).
-
-###### outputs
-
-(`string array`) The [output formats] to render.
-
-[output formats]: /templates/output-formats/
-
-<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
-<!--
-path
-: The canonical page path.
--->
-
-###### params
-
-{{< new-in 0.123.0 />}}
-
-(`map`) A map of custom [page parameters].
-
-[page parameters]: #parameters
-
-###### pubdate
-
-Alias to [publishDate](#publishdate).
-
-###### publishDate
-
-(`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`PublishDate`] method on a `Page` object.
-
 [`publishdate`]: /methods/page/publishdate/
-
-###### published
-
-Alias to [publishDate](#publishdate).
-
-###### resources
-
-(`map array`) An array of maps to provide metadata for [page resources].
-
-[page-resources]: /content-management/page-resources/#page-resources-metadata
-
-###### sitemap
-
-(`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object.
-
-[sitemap templates]: /templates/sitemap/
+[`readingtime`]: /methods/page/readingtime/
 [`sitemap`]: /methods/page/sitemap/
-
-###### slug
-
-(`string`) Overrides the last segment of the URL path. Not applicable to section pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object.
-
 [`slug`]: /methods/page/slug/
-[URL management]: /content-management/urls/#slug
-
-###### summary
-
-(`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object.
-
-[`Summary`]: /methods/page/summary/
-
-###### title
-
-(`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object.
-
+[`summary`]: /methods/page/summary/
 [`title`]: /methods/page/title/
-
-###### translationKey
-
-(`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object.
-
 [`translationkey`]: /methods/page/translationkey/
-
-###### type
-
-(`string`) The [content type](g), overriding the value derived from the top level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object.
-
 [`type`]: /methods/page/type/
-
-###### unpublishdate
-
-Alias to [expirydate](#expirydate).
-
-###### url
-
-(`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details.
-
-###### weight
-(`int`) The page [weight](g), used to order the page within a [page collection](g). Access this value from a template using the [`Weight`] method on a `Page` object.
-
 [`weight`]: /methods/page/weight/
+[`wordcount`]: /methods/page/wordcount/
+[aliases]: /content-management/urls/#aliases
+[build options]: /content-management/build-options/
+[cascade]: #cascade-1
+[configure outputs]: /configuration/outputs/#outputs-per-page
+[content formats]: /content-management/formats/#classification
+[leaf bundles]: /content-management/page-bundles/#leaf-bundles
+[menus]: /content-management/menus/#define-in-front-matter
+[output formats]: /configuration/output-formats/
+[page parameters]: #parameters
+[page resources]: /content-management/page-resources/#metadata
+[sitemap templates]: /templates/sitemap/
+[target a specific template]: /templates/lookup-order/#target-a-template
+[template lookup order]: /templates/lookup-order/
 
 ## Parameters
 
@@ -286,11 +204,6 @@ Parameter|Data type|Used by these embedded templates
 
 The embedded templates will skip a parameter if not provided in front matter, but will throw an error if the data type is unexpected.
 
-[`opengraph.html`]: {{% eturl opengraph %}}
-[`schema.html`]: {{% eturl schema %}}
-[`twitter_cards.html`]: {{% eturl twitter_cards %}}
-[embedded templates]: /templates/embedded/
-
 ## Taxonomies
 
 Classify content by adding taxonomy terms to front matter. For example, with this site configuration:
@@ -324,7 +237,7 @@ You can add taxonomy terms to the front matter of any these [page kinds](g):
 
 Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] method on a `Page` object. For example:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ with .GetTerms "tags" }}
   <p>Tags</p>
   <ul>
@@ -333,81 +246,84 @@ Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] metho
     {{ end }}
   </ul>
 {{ end }}
-{{< /code >}}
+```
 
 [`Params`]: /methods/page/params/
 [`GetTerms`]: /methods/page/getterms/
 
 ## Cascade
 
-Any [node](g) can pass down to its descendants a set of front matter values.
-
-### Target specific pages
+A [node](g) can cascade front matter values to its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor node has already cascaded a value for that same field.
 
-The `cascade` block can be an array with an optional `_target` keyword, allowing you to target different page sets while cascading values.
+For example, to cascade a "color" parameter from the home page to all its descendants:
 
 {{< code-toggle file=content/_index.md fm=true >}}
-title ="Home"
-[[cascade]]
-[cascade.params]
-background = "yosemite.jpg"
-[cascade._target]
-path="/articles/**"
-lang="en"
-kind="page"
-[[cascade]]
+title = 'Home'
 [cascade.params]
-background = "goldenbridge.jpg"
-[cascade._target]
-kind="section"
-{{</ code-toggle >}}
-
-Use any combination of these keywords to target a set of pages:
-
-###### path {#cascade-path}
+color = 'red'
+{{< /code-toggle >}}
 
-(`string`) A [Glob](https://github.com/gobwas/glob) pattern matching the content path below /content. Expects Unix-styled slashes. Note that this is the virtual path, so it starts at the mount root. The matching supports double-asterisks so you can match for patterns like `/blog/*/**` to match anything from the third level and down.
+### Target
 
-###### kind {#cascade-kind}
+<!-- TODO
+Update the <version> and <date> below when we actually get around to deprecating _target.
 
-(`string`) A Glob pattern matching the Page's Kind(s), e.g. "{home,section}".
+We deprecated the `_target` front matter key in favor of `target` in <version> on <date>. Remove footnote #1 on or after 2026-03-10 (15 months after deprecation).
+-->
 
-###### lang {#cascade-lang}
+The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter from the home page only to pages within the "articles" section, including the "articles" section page itself:
 
-(`string`) A Glob pattern matching the Page's language, e.g. "{en,sv}".
+[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release.
 
-###### environment {#cascade-environment}
+{{< code-toggle file=content/_index.md fm=true >}}
+title = 'Home'
+[cascade.params]
+color = 'red'
+[cascade.target]
+path = '{/articles,/articles/**}'
+{{< /code-toggle >}}
 
-(`string`) A Glob pattern matching the build environment, e.g. "{production,development}"
+Use any combination of these keywords to target pages and/or environments:
 
-Any of the above can be omitted.
+environment
+: (`string`) A [glob](g) pattern matching the build [environment](g). For example: `{staging,production}`.
 
-{{% note %}}
-With a multilingual site it may be more efficient to define the `cascade` values in your site configuration to avoid duplicating the `cascade` values on the section, taxonomy, or term page for each language.
+kind
+: (`string`) A [glob](g) pattern matching the [page kind](g). For example: ` {taxonomy,term}`.
 
-With a multilingual site, if you choose to define the `cascade` values in front matter, you must create a section, taxonomy, or term page for each language; the `lang` keyword is ignored.
-{{% /note %}}
+path
+: (`string`) A [glob](g) pattern matching the page's [logical path](g). For example: `{/books,/books/**}`.
 
-### Example
+### Array
 
-{{< code-toggle file=content/posts/_index.md fm=true >}}
-date = 2024-02-01T21:25:36-08:00
-title = 'Posts'
-[cascade]
-  [cascade.params]
-    banner = 'images/typewriter.jpg'
-{{</ code-toggle >}}
+Define an array of cascade parameters to apply different values to different targets. For example:
 
-With the above example the posts section page and its descendants will return `images/typewriter.jpg` when `.Params.banner` is invoked unless:
+{{< code-toggle file=content/_index.md fm=true >}}
+title = 'Home'
+[[cascade]]
+[cascade.params]
+color = 'red'
+[cascade.target]
+path = '{/books/**}'
+kind = 'page'
+[[cascade]]
+[cascade.params]
+color = 'blue'
+[cascade.target]
+path = '{/films/**}'
+kind = 'page'
+{{< /code-toggle >}}
 
-- Said descendant has its own `banner` value set
-- Or a closer ancestor node has its own `cascade.banner` value set.
+> [!note]
+> For multilingual sites, defining cascade values in your site configuration is often more efficient. This avoids repeating the same cascade values on the home, section, taxonomy, or term page for each language. See&nbsp;[details](/configuration/cascade/).
+>
+> If you choose to define cascade values in front matter for a multilingual site, you must create a corresponding home, section, taxonomy, or term page for every language.
 
 ## Emacs Org Mode
 
 If your [content format] is [Emacs Org Mode], you may provide front matter using Org Mode keywords. For example:
 
-{{< code file=content/example.org lang=text >}}
+```text {file="content/example.org"}
 #+TITLE: Example
 #+DATE: 2024-02-02T04:14:54-08:00
 #+DRAFT: false
@@ -417,13 +333,13 @@ If your [content format] is [Emacs Org Mode], you may provide front matter using
 #+TAGS: red
 #+TAGS: blue
 #+WEIGHT: 10
-{{< /code >}}
+```
 
 Note that you can also specify array elements on a single line:
 
-{{< code file=content/example.org lang=text >}}
+```text {file="content/example.org"}
 #+TAGS[]: red blue
-{{< /code >}}
+```
 
 [content format]: /content-management/formats/
 [emacs org mode]: https://orgmode.org/
@@ -432,10 +348,15 @@ Note that you can also specify array elements on a single line:
 
 When populating a date field, whether a [custom page parameter](#parameters) or one of the four predefined fields ([`date`](#date), [`expiryDate`](#expirydate), [`lastmod`](#lastmod), [`publishDate`](#publishdate)), use one of these parsable formats:
 
-{{% include "functions/time/_common/parsable-date-time-strings.md" %}}
+{{% include "/_common/parsable-date-time-strings.md" %}}
 
-To override the default time zone, set the [`timeZone`](https://gohugo.io/getting-started/configuration/#timezone) in your site configuration. The order of precedence for determining the time zone is:
+To override the default time zone, set the [`timeZone`](/configuration/all/#timezone) in your site configuration. The order of precedence for determining the time zone is:
 
 1. The time zone offset in the date/time string
 1. The time zone specified in your site configuration
 1. The `Etc/UTC` time zone
+
+[`opengraph.html`]: {{% eturl opengraph %}}
+[`schema.html`]: {{% eturl schema %}}
+[`twitter_cards.html`]: {{% eturl twitter_cards %}}
+[embedded templates]: /templates/embedded/
index 50e4b1e72506dd3e2a510f6a2775457182f9698a..8d60c4f93801e236656f8b5d0dce3ccec30a134a 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Image processing
 description: Resize, crop, rotate, filter, and convert images.
-categories: [content management,fundamentals]
-keywords: [resources,images]
-menu:
-  docs:
-    parent: content-management
-    weight: 90
-toc: true
-weight: 90
+categories: []
+keywords: []
 ---
 
 ## Image resources
@@ -17,7 +11,7 @@ To process an image you must access the file as a page resource, global resource
 
 ### Page resource
 
-A page resource is a file within a [page bundle]. A page bundle is a directory with an `index.md` or `_index.md`&nbsp;file at its root.
+{{% glossary-term "page resource" %}}
 
 ```text
 content/
@@ -35,7 +29,7 @@ To access an image as a page resource:
 
 ### Global resource
 
-A global resource is a file within the `assets` directory, or within any directory [mounted] to the `assets` directory.
+{{% glossary-term "global resource" %}}
 
 ```text
 assets/
@@ -51,7 +45,9 @@ To access an image as a global resource:
 
 ### Remote resource
 
-A remote resource is a file on a remote server, accessible via HTTP or HTTPS. To access an image as a remote resource:
+{{% glossary-term "remote resource" %}}
+
+To access an image as a remote resource:
 
 ```go-html-template
 {{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }}
@@ -104,17 +100,15 @@ Example 4: Skips rendering if there's problem accessing a remote resource.
 
 The `image` resource implements the  [`Process`],  [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods.
 
-{{% note %}}
-Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG, PNG, TIFF, and WebP images.
-{{% /note %}}
+> [!note]
+> Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG, PNG, TIFF, and WebP images.
 
 ### Process
 
 {{< new-in 0.119.0 />}}
 
-{{% note %}}
-The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
-{{% /note %}}
+> [!note]
+> The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
 
 Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
 
@@ -252,8 +246,6 @@ You may also access EXIF fields individually, using the [`lang.FormatNumber`] fu
 Date
 : (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`]function.
 
-[time.Format]: /functions/time/format/
-
 Lat
 : (`float64`) Returns the GPS latitude in degrees.
 
@@ -348,8 +340,6 @@ The default value is 75. You may override the default value in the [site configu
 
 Applicable to WebP images, this option corresponds to a set of predefined encoding parameters, and is equivalent to the `-preset` flag for the [`cwebp`] encoder.
 
-[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
-
 Value|Example
 :--|:--
 `drawing`|Hand or line drawing with high-contrast details
@@ -399,86 +389,23 @@ See [github.com/disintegration/imaging] for the complete list of resampling filt
 
 ## Image processing examples
 
-_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_
-
-{{< imgproc "sunset.jpg" "resize 300x" />}}
-
-{{< imgproc "sunset.jpg" "fill 90x120 left" />}}
-
-{{< imgproc "sunset.jpg" "fill 90x120 right" />}}
-
-{{< imgproc "sunset.jpg" "fit 90x90" />}}
-
-{{< imgproc "sunset.jpg" "crop 250x250 center" />}}
-
-{{< imgproc "sunset.jpg" "resize 300x q10" />}}
-
-This is the shortcode used to generate the examples above:
-
-{{< readfile file=layouts/shortcodes/imgproc.html highlight=go-html-template >}}
-
-Call the shortcode from your Markdown like this:
-
-```go-html-template
-{{</* imgproc "sunset.jpg" "resize 300x" /*/>}}
-```
-
-{{% note %}}
-Note the self-closing shortcode syntax above. You may call the `imgproc` shortcode with or without **inner content**.
-{{% /note %}}
-
-## Imaging configuration
-
-### Processing options
+_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://bep.is) (Creative Commons Attribution-Share Alike 4.0 International license)_
 
-Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options).
+{{< imgproc path="sunset.jpg" spec="resize 480x" alt="A sunset" />}}
 
-{{< code-toggle config=imaging />}}
+{{< imgproc path="sunset.jpg" spec="fill 120x150 left" alt="A sunset" />}}
 
-anchor
-: See image processing options: [anchor](#anchor).
+{{< imgproc path="sunset.jpg" spec="fill 120x150 right" alt="A sunset" />}}
 
-bgColor
-: See image processing options: [background color](#background-color).
+{{< imgproc path="sunset.jpg" spec="fit 120x120" alt="A sunset" />}}
 
-hint
-: See image processing options: [hint](#hint).
+{{< imgproc path="sunset.jpg" spec="crop 240x240 center" alt="A sunset" />}}
 
-quality
-: See image processing options: [quality](#quality).
+{{< imgproc path="sunset.jpg" spec="resize 360x q10" alt="A sunset" />}}
 
-resampleFilter
-: See image processing options: [resampling filter](#resampling-filter).
+## Configuration
 
-### EXIF data
-
-Define an `imaging.exif` section in your site configuration to control the availability of EXIF data.
-
-{{< code-toggle file=hugo >}}
-[imaging.exif]
-includeFields = ""
-excludeFields = ""
-disableDate = false
-disableLatLong = false
-{{< /code-toggle >}}
-
-disableDate
-: Hugo extracts the image creation date/time into `.Date`. Set this to `true` to disable. Default is `false`.
-
-disableLatLong
-: Hugo extracts the GPS latitude and longitude into `.Lat` and `.Long`. Set this to `true` to disable. Default is `false`.
-
-excludeFields
-: Regular expression matching the EXIF tags to exclude from the `.Tags` collection. Default is&nbsp;`""`.
-
-includeFields
-: Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is&nbsp;`""`. To include all available tags, set this value to&nbsp;`".*"`.
-
-{{% note %}}
-To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
-
-To control tag availability, change the `excludeFields` or `includeFields` settings as described above.
-{{% /note %}}
+See [configure imaging](/configuration/imaging).
 
 ## Smart cropping of images
 
@@ -486,13 +413,13 @@ By default, Hugo uses the [Smartcrop] library when cropping images with the `Cro
 
 Examples using the sunset image from above:
 
-{{< imgproc "sunset.jpg" "fill 200x200 smart" />}}
+{{< imgproc path="sunset.jpg" spec="fill 200x200 smart" alt="A sunset" />}}
 
-{{< imgproc "sunset.jpg" "crop 200x200 smart" />}}
+{{< imgproc path="sunset.jpg" spec="crop 200x200 smart" alt="A sunset" />}}
 
 ## Image processing performance consideration
 
-Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a CI/CD workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds.
+Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a [CI/CD](g) workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds.
 
 If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with:
 
@@ -501,20 +428,20 @@ hugo --gc
 ```
 
 [`anchor`]: /content-management/image-processing#anchor
-[mounted]: /hugo-modules/configuration#module-configuration-mounts
-[page bundle]: /content-management/page-bundles/
-[`lang.FormatNumber`]: /functions/lang/formatnumber/
-[filters]: /functions/images/filter/#image-filters
-[github.com/disintegration/imaging]: https://github.com/disintegration/imaging#image-resizing
-[Smartcrop]: https://github.com/muesli/smartcrop#smartcrop
-[Exif]: https://en.wikipedia.org/wiki/Exif
-[`Process`]: #process
 [`Colors`]: #colors
 [`Crop`]: #crop
+[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
 [`Exif`]: #exif
 [`Fill`]: #fill
 [`Filter`]: #filter
 [`Fit`]: #fit
+[`lang.FormatNumber`]: /functions/lang/formatnumber/
+[`Process`]: #process
 [`Resize`]: #resize
-[site configuration]: #processing-options
+[`time.Format`]: /functions/time/format/
 [`with`]: /functions/go-template/with/
+[EXIF]: https://en.wikipedia.org/wiki/Exif
+[filters]: /functions/images/filter/#image-filters
+[github.com/disintegration/imaging]: https://github.com/disintegration/imaging#image-resizing
+[site configuration]: /configuration/imaging/
+[Smartcrop]: https://github.com/muesli/smartcrop#smartcrop
index a465f244d0e5d4b8f6992adc8b74b741e08ee3ab..f52a48f1785c95ea795ef6d0494bc9c4fc557d98 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Markdown attributes
 description: Use Markdown attributes to add HTML attributes when rendering Markdown to HTML.
-categories: [content management]
-keywords: [goldmark,markdown]
-menu:
-  docs:
-    parent: content-management
-    weight: 240
-weight: 240
-toc: true
+categories: []
+keywords: []
 ---
 
 ## Overview
index aa398d334f9f903dbcd8a667167eef5ed479c2ad..e0c8ba4d0e505b1661ad47a8016de8cd5c577538 100644 (file)
@@ -2,15 +2,8 @@
 title: Mathematics in Markdown
 linkTitle: Mathematics
 description: Include mathematical equations and expressions in Markdown using LaTeX markup.
-categories: [content management]
-keywords: [katex,latex,math,mathjax,typesetting]
-menu:
-  docs:
-    parent: content-management
-    weight: 270
-weight: 270
-toc: true
-math: true
+categories: []
+keywords: []
 ---
 
 {{< new-in 0.122.0 />}}
@@ -43,19 +36,16 @@ Equations and expressions can be displayed inline with other text, or as standal
 
 Whether an equation or expression appears inline, or as a block, depends on the delimiters that surround the mathematical markup. Delimiters are defined in pairs, where each pair consists of an opening and closing delimiter. The opening and closing delimiters may be the same, or different.
 
-{{% note %}}
-You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`] function while building your site.
-
-The first approach is described below.
-
-[`transform.ToMath`]: /functions/transform/tomath/
-{{% /note %}}
+> [!note]
+> You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`] function while building your site.
+>
+> The first approach is described below.
 
 ## Setup
 
 Follow these instructions to include mathematical equations and expressions in your Markdown using LaTeX markup.
 
-###### Step 1
+### Step 1
 
 Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
 
@@ -73,11 +63,10 @@ math = true
 
 The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3].
 
-{{% note %}}
-The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you will need to double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
-
-See the [inline delimiters](#inline-delimiters) section for details.
-{{% /note %}}
+> [!note]
+> The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you will need to double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
+>
+> See the [inline delimiters](#inline-delimiters) section for details.
 
 To disable passthrough of inline snippets, omit the `inline` key from the configuration:
 
@@ -94,11 +83,11 @@ block = [['@@', '@@']]
 inline = [['@', '@']]
 {{< /code-toggle >}}
 
-###### Step 2
+### Step 2
 
 Create a partial template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines](#engines) section.
 
-{{< code file=layouts/partials/math.html copy=true >}}
+```go-html-template {file="layouts/partials/math.html" copy=true}
 <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
 <script>
   MathJax = {
@@ -111,15 +100,15 @@ Create a partial template to load MathJax or KaTeX. The example below loads Math
     },
   };
 </script>
-{{< /code >}}
+```
 
 The delimiters above must match the delimiters in your site configuration.
 
-###### Step 3
+### Step 3
 
 Conditionally call the partial template from the base template.
 
-{{< code file=layouts/_default/baseof.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <head>
   ...
   {{ if .Param "math" }}
@@ -127,15 +116,15 @@ Conditionally call the partial template from the base template.
   {{ end }}
   ...
 </head>
-{{< /code >}}
+```
 
 The example above loads the partial template if you have set the `math` parameter in front matter to `true`. If you have not set the `math` parameter in front matter, the conditional statement falls back to the `math` parameter in your site configuration.
 
-###### Step 4
+### Step 4
 
 Include mathematical equations and expressions in Markdown using LaTeX markup.
 
-{{< code file=content/math-examples.md copy=true >}}
+```text {file="content/math-examples.md" copy=true}
 This is an inline \(a^*=x-b^*\) equation.
 
 These are block equations:
@@ -157,7 +146,7 @@ $$ a^*=x-b^* $$
 $$
 a^*=x-b^*
 $$
-{{< /code >}}
+```
 
 If you set the `math` parameter to `false` in your site configuration, you must set the `math` parameter to `true` in front matter. For example:
 
@@ -178,23 +167,21 @@ If you add the `$...$` delimiter pair to your configuration and JavaScript, you
 A \\$5 bill _saved_ is a \\$5 bill _earned_.
 ```
 
-{{% note %}}
-If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
-{{% /note %}}
+> [!note]
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
 
 ## Engines
 
 MathJax and KaTeX are open-source JavaScript display engines. Both engines are fast, but at the time of this writing MathJax v3.2.2 is slightly faster than KaTeX v0.16.11.
 
-{{% note %}}
-If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
-
-See the [inline delimiters](#inline-delimiters) section for details.
-{{% /note %}}
+> [!note]
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
+>
+>See the [inline delimiters](#inline-delimiters) section for details.
 
 To use KaTeX instead of MathJax, replace the partial template from [Step 2] with this:
 
-{{< code file=layouts/partials/math.html copy=true >}}
+```go-html-template {file="layouts/partials/math.html" copy=true}
 <link
   rel="stylesheet"
   href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
@@ -226,7 +213,7 @@ To use KaTeX instead of MathJax, replace the partial template from [Step 2] with
     });
   });
 </script>
-{{< /code >}}
+```
 
 The delimiters above must match the delimiters in your site configuration.
 
@@ -242,10 +229,10 @@ $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
 
 As shown in [Step 2] above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs).
 
+[`transform.ToMath`]: /functions/transform/tomath/
 [KaTeX]: https://katex.org/
 [LaTeX]: https://www.latex-project.org/
 [MathJax]: https://www.mathjax.org/
-[Step 1]: #step-1
+[passthrough extension]: /configuration/markup/#passthrough
 [Step 2]: #step-2
 [Step 3]: #step-3
-[passthrough extension]: /getting-started/configuration-markup/#passthrough
index 15cf505eade3334679aaf202a02a60b9f8241f59..ab1bcbfa1e445195bc30bbe3058a562416ffebde 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Menus
-description:  Create menus by defining entries, localizing each entry, and rendering the resulting data structure.
-categories: [content management]
-keywords: [menus]
-menu:
-  docs:
-    parent: content-management
-    weight: 190
-weight: 190
-toc: true
+description: Create menus by defining entries, localizing each entry, and rendering the resulting data structure.
+categories: []
+keywords: []
 aliases: [/extras/menus/]
 ---
 
@@ -28,9 +22,8 @@ There are three ways to define menu entries:
 1. In front matter
 1. In site configuration
 
-{{% note %}}
-Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site.
-{{% /note %}}
+> [!note]
+> Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site.
 
 ## Define automatically
 
@@ -62,39 +55,16 @@ menus = ['main','footer']
 
 Access the entry with `site.Menus.main` and `site.Menus.footer` in your templates. See [menu templates] for details.
 
-{{% note %}}
-The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`.
-{{% /note %}}
+> [!note]
+> The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`.
 
-### Properties {#properties-front-matter}
+### Properties
 
 Use these properties when defining menu entries in front matter:
 
-identifier
-: (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores.
+{{% include "/_common/menu-entry-properties.md" %}}
 
-name
-: (`string`) The text to display when rendering the menu entry.
-
-params
-: (`map`) User-defined properties for the menu entry.
-
-parent
-: (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu.
-
-post
-: (`string`) The HTML to append when rendering the menu entry.
-
-pre
-: (`string`) The HTML to prepend when rendering the menu entry.
-
-title
-: (`string`) The HTML `title` attribute of the rendered menu entry.
-
-weight
-: (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom.
-
-### Example {#example-front-matter}
+### Example
 
 This front matter menu entry demonstrates some of the available properties:
 
@@ -112,111 +82,7 @@ Access the entry with `site.Menus.main` in your templates. See [menu templates]
 
 ## Define in site configuration
 
-To define entries for the "main" menu:
-
-{{< code-toggle file=hugo >}}
-[[menus.main]]
-name = 'Home'
-pageRef = '/'
-weight = 10
-
-[[menus.main]]
-name = 'Products'
-pageRef = '/products'
-weight = 20
-
-[[menus.main]]
-name = 'Services'
-pageRef = '/services'
-weight = 30
-{{< /code-toggle >}}
-
-This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
-
-To define entries for the "footer" menu:
-
-{{< code-toggle file=hugo >}}
-[[menus.footer]]
-name = 'Terms'
-pageRef = '/terms'
-weight = 10
-
-[[menus.footer]]
-name = 'Privacy'
-pageRef = '/privacy'
-weight = 20
-{{< /code-toggle >}}
-
-This creates a menu structure that you can access with `site.Menus.footer` in your templates. See [menu templates] for details.
-
-{{% note %}}
-The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`.
-{{% /note %}}
-
-### Properties {#properties-site-configuration}
-
-{{% note %}}
-The [properties available to entries defined in front matter] are also available to entries defined in site configuration.
-
-[properties available to entries defined in front matter]: /content-management/menus/#properties-front-matter
-{{% /note %}}
-
-Each menu entry defined in site configuration requires two or more properties:
-
-- Specify `name` and `pageRef` for internal links
-- Specify `name` and `url` for external links
-
-pageRef
-: (`string`) The logical path of the target page, relative to the `content` directory. Omit language code and file extension. Required for *internal* links.
-
-Kind|pageRef
-:--|:--
-home|`/`
-page|`/books/book-1`
-section|`/books`
-taxonomy|`/tags`
-term|`/tags/foo`
-
-url
-: (`string`) Required for *external* links.
-
-### Example {#example-site-configuration}
-
-This nested menu demonstrates some of the available properties:
-
-{{< code-toggle file=hugo >}}
-[[menus.main]]
-name = 'Products'
-pageRef = '/products'
-weight = 10
-
-[[menus.main]]
-name = 'Hardware'
-pageRef = '/products/hardware'
-parent = 'Products'
-weight = 1
-
-[[menus.main]]
-name = 'Software'
-pageRef = '/products/software'
-parent = 'Products'
-weight = 2
-
-[[menus.main]]
-name = 'Services'
-pageRef = '/services'
-weight = 20
-
-[[menus.main]]
-name = 'Hugo'
-pre = '<i class="fa fa-heart"></i>'
-url = 'https://gohugo.io/'
-weight = 30
-[menus.main.params]
-rel = 'external'
-{{< /code-toggle >}}
-
-This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+See [configure menus](/configuration/menus/).
 
 ## Localize
 
@@ -226,7 +92,6 @@ Hugo provides two methods to localize your menu entries. See [multilingual].
 
 See [menu templates].
 
-[localize]: /content-management/multilingual/#menus
 [menu templates]: /templates/menu/
 [multilingual]: /content-management/multilingual/#menus
 [template]: /templates/menu/
index 8233185d5226e3afad76493f6207b882df93a400..d419f4381a956c4ddc857ccfae0b8c9f7b4ef64d 100644 (file)
 title: Multilingual mode
 linkTitle: Multilingual
 description: Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations.
-categories: [content management]
-keywords: [multilingual,i18n,internationalization]
-menu:
-  docs:
-    parent: content-management
-    weight: 230
-weight: 230
-toc: true
+categories: []
+keywords: []
 aliases: [/content/multilingual/,/tutorials/create-a-multilingual-site/]
 ---
 
-## Configure languages
+## Configuration
 
-This is the default language configuration:
-
-{{< code-toggle config=languages />}}
-
-In the above, `en` is the language key.
-
-Language keys must conform to the syntax described in [RFC 5646]. For example:
-
-- `en`
-- `en-US`
-
-Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. Omit the `art-x-` prefix from the language key. For example:
-
-- `hugolang`
-
-{{% note %}}
-Private use subtags must not exceed 8 alphanumeric characters.
-{{% /note %}}
-
-[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
-[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
-
-This is an example of a site configuration for a multilingual project. Any key not defined in a `languages` object will fall back to the global value in the root of your site configuration.
-
-{{< code-toggle file=hugo >}}
-defaultContentLanguage = 'de'
-defaultContentLanguageInSubdir = true
-
-[languages.de]
-contentDir = 'content/de'
-disabled = false
-languageCode = 'de-DE'
-languageDirection = 'ltr'
-languageName = 'Deutsch'
-title = 'Projekt Dokumentation'
-weight = 1
-
-[languages.de.params]
-subtitle = 'Referenz, Tutorials und Erklärungen'
-
-[languages.en]
-contentDir = 'content/en'
-disabled = false
-languageCode = 'en-US'
-languageDirection = 'ltr'
-languageName = 'English'
-title = 'Project Documentation'
-weight = 2
-
-[languages.en.params]
-subtitle = 'Reference, Tutorials, and Explanations'
-{{< /code-toggle >}}
-
-defaultContentLanguage
-: (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined language keys. Examples:
-
-- `en`
-- `en-GB`
-- `pt-BR`
-
-defaultContentLanguageInSubdir
-: (`bool`)  If `true`, Hugo renders the default language site in a subdirectory matching the `defaultContentLanguage`. Default is `false`.
-
-contentDir
-: (`string`) The `content` directory for this language. Omit if [translating by file name].
-
-disabled
-: (`bool`) If `true`, Hugo will not render content for this language. Default is `false`.
-
-languageCode
-: (`string`) The language tag as described in [RFC 5646]. This value does not affect localization or URLs. Hugo uses this value to populate the `language` element in the [built-in RSS template], and the `lang` attribute of the `html` element in the [built-in alias template]. Examples:
-
-- `en`
-- `en-GB`
-- `pt-BR`
-
-languageDirection
-: (`string`) The language direction, either left-to-right (`ltr`) or right-to-left (`rtl`). Use this value in your templates with the global [`dir`] HTML attribute.
-
-languageName
-: (`string`) The language name, typically used when rendering a language switcher.
-
-title
-: (`string`) The site title for this language (optional).
-
-weight
-: (`int`) The language weight. When set to a non-zero value, this is the primary sort criteria for this language.
-
-[`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir
-[built-in RSS template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml
-[built-in alias template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/alias.html
-[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
-[translating by file name]: #translation-by-file-name
-
-### Site parameters
-
-Set language-specific site parameters under each language's `params` key:
-
-{{< code-toggle file=hugo >}}
-[params]
-color = "red"
-
-[languages]
-  [languages.de]
-    languageCode = 'de-DE'
-    title = 'Projekt Dokumentation'
-    weight = 1
-    [languages.de.params]
-      color = 'blue'
-      subtitle = 'Referenz, Tutorials und Erklärungen'
-  [languages.en]
-    languageCode = 'en-US'
-    title = 'Project Documentation'
-    weight = 2
-    [languages.en.params]
-      subtitle = 'Reference, Tutorials, and Explanations'
-{{< /code-toggle >}}
-
-When building the English site:
-
-```go-html-template
-{{ site.Params.color }} --> red
-{{ site.Params.subtitle }} --> Reference, Tutorials, and Explanations
-```
-
-When building the German site:
-
-```go-html-template
-{{ site.Params.color }} --> blue
-{{ site.Params.subtitle }} --> 'Referenz, Tutorials und Erklärungen'
-```
-
-### Disable a language
-
-To disable a language within a `languages` object in your site configuration:
-
-{{< code-toggle file=hugo >}}
-[languages.es]
-disabled = true
-{{< /code-toggle >}}
-
-To disable one or more languages in the root of your site configuration:
-
-{{< code-toggle file=hugo >}}
-disableLanguages = ["es", "fr"]
-{{< /code-toggle >}}
-
-To disable one or more languages using an environment variable:
-
-```sh
-HUGO_DISABLELANGUAGES="es fr" hugo
-```
-
-Note that you cannot disable the default content language.
-
-### Configure multilingual multihost
-
-Hugo supports multiple languages in a multihost configuration. This means you can configure a `baseURL` per `language`.
-
-{{% note %}}
-If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different.
-{{% /note %}}
-
-Example:
-
-{{< code-toggle file=hugo >}}
-[languages]
-  [languages.en]
-    baseURL = 'https://en.example.org/'
-    languageName = 'English'
-    title = 'In English'
-    weight = 2
-  [languages.fr]
-    baseURL = 'https://fr.example.org'
-    languageName = 'Français'
-    title = 'En Français'
-    weight = 1
-{{</ code-toggle >}}
-
-With the above, the two sites will be generated into `public` with their own root:
-
-```text
-public
-├── en
-└── fr
-```
-
-**All URLs (i.e `.Permalink` etc.) will be generated from that root. So the English home page above will have its `.Permalink` set to `https://example.org/`.**
-
-When you run `hugo server` we will start multiple HTTP servers. You will typically see something like this in the console:
-
-```text
-Web Server is available at 127.0.0.1:1313 (bind address 127.0.0.1) fr
-Web Server is available at 127.0.0.1:1314 (bind address 127.0.0.1) en
-Press Ctrl+C to stop
-```
-
-Live reload and `--navigateToChanged` between the servers work as expected.
+See [configure languages](/configuration/languages/).
 
 ## Translate your content
 
@@ -232,9 +29,8 @@ Their language is __assigned__ according to the language code added as a __suffi
 
 By having the same **path and base file name**, the content pieces are __linked__ together as translated pages.
 
-{{% note %}}
-If a file has no language code, it will be assigned the default language.
-{{% /note %}}
+> [!note]
+> If a file has no language code, it will be assigned the default language.
 
 ### Translation by content directory
 
@@ -276,7 +72,7 @@ Considering the following example:
 1. `/content/om.nn.md`
 1. `/content/presentation/a-propos.fr.md`
 
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
 translationKey: "about"
 {{< /code-toggle >}}
 
@@ -291,9 +87,6 @@ To localize URLs:
 - For a regular page, set either [`slug`] or [`url`] in front matter
 - For a section page, set [`url`] in front matter
 
-[`slug`]: /content-management/urls/#slug
-[`url`]: /content-management/urls/#url
-
 For example, a French translation can have its own localized slug.
 
 {{< code-toggle file=content/about.fr.md fm=true >}}
@@ -305,24 +98,23 @@ At render, Hugo will build both `/about/` and `/fr/a-propos/` without affecting
 
 ### Page bundles
 
-To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (Markdown files, HTML files etc...).
+To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (Markdown files, HTML files etc.).
 
 Therefore, from within a template, the page will have access to the files from all linked pages' bundles.
 
 If, across the linked bundles, two or more files share the same basename, only one will be included and chosen as follows:
 
-* File from current language bundle, if present.
-* First file found across bundles by order of language `Weight`.
+- File from current language bundle, if present.
+- First file found across bundles by order of language `Weight`.
 
-{{% note %}}
-Page Bundle resources follow the same language assignment logic as content files, both by file name (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`).
-{{%/ note %}}
+> [!note]
+> Page Bundle resources follow the same language assignment logic as content files, both by file name (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`).
 
 ## Reference translated content
 
 To create a list of links to translated content, use a template similar to the following:
 
-{{< code file=layouts/partials/i18nlist.html >}}
+```go-html-template {file="layouts/partials/i18nlist.html"}
 {{ if .IsTranslated }}
 <h4>{{ i18n "translations" }}</h4>
 <ul>
@@ -333,7 +125,7 @@ To create a list of links to translated content, use a template similar to the f
   {{ end }}
 </ul>
 {{ end }}
-{{< /code >}}
+```
 
 The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template. It will not print anything if there are no translations for a given page.
 
@@ -343,20 +135,18 @@ The above also uses the [`i18n` function][i18func] described in the next section
 
 `.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator:
 
-{{< code file=layouts/partials/allLanguages.html >}}
+```go-html-template {file="layouts/partials/allLanguages.html"}
 <ul>
 {{ range $.Site.Home.AllTranslations }}
 <li><a href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
 {{ end }}
 </ul>
-{{< /code >}}
+```
 
 ## Translation of strings
 
 See the [`lang.Translate`] template function.
 
-[`lang.Translate`]: /functions/lang/translate
-
 ## Localization
 
 The following localization examples assume your site's primary language is English, with translations to French and German.
@@ -384,7 +174,7 @@ weight = 3
 
 With this front matter:
 
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
 date = 2021-11-03T12:34:56+01:00
 {{< /code-toggle >}}
 
@@ -538,8 +328,6 @@ pageRef = '/services'
 weight = 20
 {{< /code-toggle >}}
 
-[configuration directory]: /getting-started/configuration/#configuration-directory
-
 ### Use translation tables
 
 When rendering the text that appears in menu each entry, the [example menu template] does this:
@@ -577,20 +365,14 @@ products = 'Produkte'
 services = 'Leistungen'
 {{< / code-toggle >}}
 
-[example menu template]: /templates/menu/#example
-[automatically]: /content-management/menus/#define-automatically
-[in front matter]: /content-management/menus/#define-in-front-matter
-[in site configuration]: /content-management/menus/#define-in-site-configuration
-
 ## Missing translations
 
 If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
 
 While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
 
-{{% note %}}
-Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments.
-{{% /note %}}
+> [!note]
+> Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments.
 
 For merging of content from other languages (i.e. missing content translations), see [lang.Merge].
 
@@ -605,8 +387,8 @@ i18n|MISSING_TRANSLATION|en|wordCount
 
 To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
 
-* Come from the built-in `.Permalink` or `.RelPermalink`
-* Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
+- Come from the built-in `.Permalink` or `.RelPermalink`
+- Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
 
 If there is more than one language defined, the `LanguagePrefix` method will return `/en` (or whatever the current language is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites).
 
@@ -626,19 +408,22 @@ hugo new content content/en/post/test.md
 hugo new content content/de/post/test.md
 ```
 
-[`abslangurl`]: /functions/urls/abslangurl/
-[config]: /getting-started/configuration/
-[go-i18n-source]: https://github.com/nicksnyder/go-i18n
-[go-i18n]: https://github.com/nicksnyder/go-i18n
-[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
+[`absLangURL`]: /functions/urls/abslangurl/
+[`lang.Translate`]: /functions/lang/translate
+[`relLangURL`]: /functions/urls/rellangurl/
+[`slug`]: /content-management/urls/#slug
+[`time.Format`]: /functions/time/format/
+[`url`]: /content-management/urls/#url
+[automatically]: /content-management/menus/#define-automatically
+[config]: /configuration/
+[configuration directory]: /configuration/introduction/#configuration-directory
+[example menu template]: /templates/menu/#example
 [i18func]: /functions/lang/translate/
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
 [lang.FormatAccounting]: /functions/lang/formataccounting/
 [lang.FormatCurrency]: /functions/lang/formatcurrency/
 [lang.FormatNumber]: /functions/lang/formatnumber/
 [lang.FormatNumberCustom]: /functions/lang/formatnumbercustom/
 [lang.FormatPercent]: /functions/lang/formatpercent/
 [lang.Merge]: /functions/lang/merge/
-[menus]: /content-management/menus/
-[OS environment]: /getting-started/configuration/#configure-with-environment-variables
-[`rellangurl`]: /functions/urls/rellangurl/
-[`time.Format`]: /functions/time/format/
diff --git a/content/en/content-management/organization/1-featured-content-bundles.png b/content/en/content-management/organization/1-featured-content-bundles.png
deleted file mode 100644 (file)
index 501e671..0000000
Binary files a/content/en/content-management/organization/1-featured-content-bundles.png and /dev/null differ
index 99a3224bf640cb52d49e1ec7cad9b1625bb9163e..a7682bfad0c8fd02ae3235f061ab4e56b23be76f 100644 (file)
@@ -2,14 +2,8 @@
 title: Content organization
 linkTitle: Organization
 description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
-categories: [content management,fundamentals]
-keywords: [sections,content,organization,bundle,resources]
-menu:
-  docs:
-    parent: content-management
-    weight: 20
-weight: 20
-toc: true
+categories: []
+keywords: []
 aliases: [/content/sections/]
 ---
 
@@ -71,11 +65,10 @@ The following demonstrates the relationships between your content organization a
 
 ### Index pages: `_index.md`
 
-`_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages. 
+`_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages.
 
-{{% note %}}
-**Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/methods/page/getpage).
-{{% /note %}}
+> [!note]
+> Access the content and metadata within an `_index.md` file by invoking the `GetPage` method on a `Site` or `Page` object.
 
 You can create one `_index.md` for your home page and one in each of your content sections, taxonomies, and terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
 
@@ -143,20 +136,16 @@ The `slug` is the last segment of the URL path, defined by the file name and opt
 
 ### `path`
 
-A content's `path` is determined by the section's path to the file. The file `path`
+A content's `path` is determined by the section's path to the file. The file `path`:
 
-* is based on the path to the content's location AND
-* does not include the slug
+- Is based on the path to the content's location AND
+- Does not include the slug
 
 ### `url`
 
 The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
 
-[config]: /getting-started/configuration/
-[formats]: /content-management/formats/
-[front matter]: /content-management/front-matter/
-[getpage]: /methods/page/getpage/
+[config]: /configuration/
 [pretty]: /content-management/urls/#appearance
 [sections]: /content-management/sections/
 [single template]: /templates/types/#single
-[urls]: /content-management/urls/
index 3638f2fb5881703353cd6766d0bed2b3815a1f0d..f6a5cf771dd862f5bb86d6e0e66ba7410fc1c3bc 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Page bundles
 description: Use page bundles to logically associate one or more resources with content.
-categories: [content management]
-keywords: [page,bundle,leaf,branch]
-menu :
-  docs:
-    parent: content-management
-    weight: 30
-weight: 30
-toc: true
+categories: []
+keywords: []
 ---
 
 ## Introduction
@@ -33,11 +27,10 @@ leaf bundle
 : A _leaf bundle_ is a directory that contains an&nbsp;`index.md`&nbsp;file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
 
 branch bundle
-: A _branch bundle_ is a directory that contains an&nbsp;`_index.md`&nbsp;file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without `_index.md`&nbsp;files are also branch bundles. This includes the home page.
+: A _branch bundle_ is a directory that contains an&nbsp;`_index.md`&nbsp;file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md`&nbsp;files are also branch bundles. This includes the home page.
 
-{{% note %}}
-In the definitions above and the examples below, the extension of the index file depends on the [content format](g). For example, use `index.md` for Markdown content, `index.html` for HTML content, `index.adoc` for AsciiDoc content, etc.
-{{% /note %}}
+> [!note]
+> In the definitions above and the examples below, the extension of the index file depends on the [content format](g). For example, use `index.md` for Markdown content, `index.html` for HTML content, `index.adoc` for AsciiDoc content, etc.
 
 ## Comparison
 
@@ -53,12 +46,6 @@ Page bundle characteristics vary by bundle type.
 | Resource location   | Adjacent to the index file or in a nested subdirectory  | Same as a leaf bundles, but excludes descendant bundles |
 | [Resource types](g) | `page`, `image`, `video`, etc.                          | all but `page`                                          |
 
-[single]: /templates/types/#single
-[home]: /templates/types/#home
-[section]: /templates/types/#section
-[taxonomy]: /templates/types/#taxonomy
-[term]: /templates/types/#term
-
 Files with [resource type](g) `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages.
 
 ## Leaf bundles
@@ -94,13 +81,13 @@ about
 my-post
 : This leaf bundle contains an index file, two resources of [resource type](g) `page`, and two resources of resource type `image`.
 
-- content-1, content-2
+  - content-1, content-2
 
-  These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages.
+    These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages.
 
-- image-1, image-2
+  - image-1, image-2
 
-  These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object
+    These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object
 
 my-other-post
 : This leaf bundle does not contain any page resources.
@@ -108,13 +95,12 @@ my-other-post
 another-leaf-bundle
 : This leaf bundle does not contain any page resources.
 
-{{% note %}}
-Create leaf bundles at any depth within the `content` directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
-{{% /note %}}
+> [!note]
+> Create leaf bundles at any depth within the `content` directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
 
 ## Branch bundles
 
-A _branch bundle_ is a directory that contains an&nbsp;`_index.md`&nbsp;file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without `_index.md`&nbsp;files are also branch bundles. This includes the home page.
+A _branch bundle_ is a directory that contains an&nbsp;`_index.md`&nbsp;file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top-level directories with or without `_index.md`&nbsp;files are also branch bundles. This includes the home page.
 
 ```text
 content/
@@ -142,9 +128,8 @@ branch-bundle-1
 branch-bundle-2
 : This branch bundle contains an index file and a leaf bundle.
 
-{{% note %}}
-Create branch bundles at any depth within the `content` directory. Branch bundles may have descendants.
-{{% /note %}}
+> [!note]
+> Create branch bundles at any depth within the `content` directory. Branch bundles may have descendants.
 
 ## Headless bundles
 
@@ -152,4 +137,9 @@ Use [build options] in front matter to create an unpublished leaf or branch bund
 
 [`Resources`]: /methods/page/resources/
 [build options]: /content-management/build-options/
+[home]: /templates/types/#home
 [page resources]: /content-management/page-resources/
+[section]: /templates/types/#section
+[single]: /templates/types/#single
+[taxonomy]: /templates/types/#taxonomy
+[term]: /templates/types/#term
index 84c3309cd6a38ea0110142bd66326d346e66fdfc..204ca530157fee881f19f104caa6d08750cc3f13 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Page resources
 description: Use page resources to logically associate assets with a page.
-categories: [content management]
-keywords: [bundle,content,resources]
-menu:
-  docs:
-    parent: content-management
-    weight: 80
-weight: 80
-toc: true
+categories: []
+keywords: []
 ---
 
 Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or
@@ -46,13 +40,7 @@ Use any of these methods on a `Page` object to capture page resources:
  - [`Resources.GetMatch`]
  - [`Resources.Match`]
 
- Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action. 
-
-[`Resource`]: /methods/resource
-[`Resources.ByType`]: /methods/page/resources#bytype
-[`Resources.GetMatch`]: /methods/page/resources#getmatch
-[`Resources.Get`]: /methods/page/resources#get
-[`Resources.Match`]: /methods/page/resources#match
+ Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action.
 
 The following examples assume this content structure:
 
@@ -120,16 +108,14 @@ List the titles in the data file, and throw an error if the file does not exist.
 
 The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm).
 
-{{% note %}}
-Resources of type `page` get `Title` etc. from their own front matter.
-{{% /note %}}
+> [!note]
+> Resources of type `page` get `Title` etc. from their own front matter.
 
 name
 : (`string`) Sets the value returned in `Name`.
 
-{{% note %}}
-The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources.
-{{% /note %}}
+> [!note]
+> The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources.
 
 title
 : (`string`) Sets the value returned in `Title`
@@ -173,9 +159,8 @@ From the example above:
 - All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`.
 - Every docx in the bundle will receive the `word` icon.
 
-{{% note %}}
-The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
-{{% /note %}}
+> [!note]
+> The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
 
 ### The `:counter` placeholder in `name` and `title`
 
@@ -210,11 +195,8 @@ the `Name` and `Title` will be assigned to the resource files as follows:
 
 By default, with a multilingual single-host site, Hugo does not duplicate shared page resources when building the site.
 
-{{% note %}}
-This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle.
-
-[content formats]: /content-management/formats/
-{{% /note %}}
+> [!note]
+> This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle.
 
 Consider this site configuration:
 
@@ -289,18 +271,12 @@ public/
 
 This approach reduces build times, storage requirements, bandwidth consumption, and deployment times, ultimately reducing cost.
 
-{{% note %}}
-To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method.
-
-By default, with multilingual single-host sites, Hugo enables its [embedded link render hook] and [embedded image render hook] to resolve Markdown link and image destinations.
-
-You may override the embedded render hooks as needed, provided they capture the resource as described above.
-
-[embedded link render hook]: /render-hooks/links/#default
-[embedded image render hook]: /render-hooks/images/#default
-[`Resources.Get`]: /methods/page/resources/#get
-[`RelPermalink`]: /methods/resource/relpermalink/
-{{% /note %}}
+> [!note]
+> To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method.
+>
+> By default, with multilingual single-host sites, Hugo enables its [embedded link render hook] and [embedded image render hook] to resolve Markdown link and image destinations.
+>
+> You may override the embedded render hooks as needed, provided they capture the resource as described above.
 
 Although duplicating shared page resources is inefficient, you can enable this feature in your site configuration if desired:
 
@@ -308,3 +284,14 @@ Although duplicating shared page resources is inefficient, you can enable this f
 [markup.goldmark]
 duplicateResourceFiles = true
 {{< /code-toggle >}}
+
+[`RelPermalink`]: /methods/resource/relpermalink/
+[`Resource`]: /methods/resource
+[`Resources.ByType`]: /methods/page/resources#bytype
+[`Resources.Get`]: /methods/page/resources#get
+[`Resources.Get`]: /methods/page/resources/#get
+[`Resources.GetMatch`]: /methods/page/resources#getmatch
+[`Resources.Match`]: /methods/page/resources#match
+[content formats]: /content-management/formats/
+[embedded image render hook]: /render-hooks/images/#default
+[embedded link render hook]: /render-hooks/links/#default
diff --git a/content/en/content-management/related-content.md b/content/en/content-management/related-content.md
new file mode 100644 (file)
index 0000000..d7b18da
--- /dev/null
@@ -0,0 +1,102 @@
+---
+title: Related content
+description: List related content in "See Also" sections.
+categories: []
+keywords: []
+aliases: [/content/related/,/related/,/content-management/related/]
+---
+
+Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [related content configuration](/configuration/related-content/).
+
+## List related content
+
+To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template:
+
+```go-html-template {file="layouts/partials/related.html" copy=true}
+{{ with site.RegularPages.Related . | first 5 }}
+  <p>Related content:</p>
+  <ul>
+    {{ range . }}
+      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+    {{ end }}
+  </ul>
+{{ end }}
+```
+
+The `Related` method takes one argument which may be a `Page` or an options map. The options map has these options:
+
+indices
+: (`slice`) The indices to search within.
+
+document
+: (`page`) The page for which to find related content. Required when specifying an options map.
+
+namedSlices
+: (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function.
+
+fragments
+: (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment](g) identifiers of the documents.
+
+A fictional example using all of the above options:
+
+```go-html-template
+{{ $page := . }}
+{{ $opts := dict
+  "indices" (slice "tags" "keywords")
+  "document" $page
+  "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
+  "fragments" (slice "heading-1" "heading-2")
+}}
+```
+
+> [!note]
+> We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
+
+## Index content headings
+
+Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
+
+{{< code-toggle file=hugo >}}
+[related]
+threshold    = 20
+includeNewer = true
+toLower      = false
+[[related.indices]]
+name        = "fragmentrefs"
+type        = "fragments"
+applyFilter = true
+weight      = 80
+{{< /code-toggle >}}
+
+- The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
+- If `applyFilter` is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
+
+```go-html-template
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+  <h2>See Also</h2>
+  <ul>
+    {{ range $i, $p := . }}
+      <li>
+        <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+        {{ with .HeadingsFiltered }}
+          <ul>
+            {{ range . }}
+              {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
+              <li>
+                <a href="{{ $link }}">{{ .Title }}</a>
+              </li>
+            {{ end }}
+          </ul>
+        {{ end }}
+      </li>
+    {{ end }}
+  </ul>
+{{ end }}
+```
+
+## Configuration
+
+See [configure related content](/configuration/related-content/).
+
+[`keyVals`]: /functions/collections/keyvals/
diff --git a/content/en/content-management/related.md b/content/en/content-management/related.md
deleted file mode 100644 (file)
index 6431d12..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: Related content
-description: List related content in "See Also" sections.
-categories: [content management]
-keywords: [content]
-menu:
-  docs:
-    parent: content-management
-    weight: 110
-weight: 110
-toc: true
-aliases: [/content/related/,/related/]
----
-
-Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [Related Content configuration](#configure-related-content).
-
-## List related content
-
-To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template:
-
-{{< code file=layouts/partials/related.html >}}
-{{ $related := .Site.RegularPages.Related . | first 5 }}
-{{ with $related }}
-  <h3>See Also</h3>
-  <ul>
-   {{ range . }}
-     <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
-   {{ end }}
-  </ul>
-{{ end }}
-{{< /code >}}
-
-The `Related` method takes one argument which may be a `Page` or a options map. The options map have these options:
-
-indices
-: (`slice`) The indices to search within.
-
-document
-: (`page`) The page for which to find related content. Required when specifying an options map.
-
-namedSlices
-: (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function.
-
-fragments
-: (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment](g) identifiers of the documents.
-
-[`keyVals`]: /functions/collections/keyvals/
-
-A fictional example using all of the above options:
-
-```go-html-template
-{{ $page := . }}
-{{ $opts := dict
-  "indices" (slice "tags" "keywords")
-  "document" $page
-  "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
-  "fragments" (slice "heading-1" "heading-2")
-}}
-```
-
-{{% note %}}
-We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
-{{% /note %}}
-
-## Index content headings in related content
-
-Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
-
-{{< code-toggle file=hugo >}}
-[related]
-threshold    = 20
-includeNewer = true
-toLower      = false
-[[related.indices]]
-name        = "fragmentrefs"
-type        = "fragments"
-applyFilter = true
-weight      = 80
-{{< /code-toggle >}}
-
-* The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
-* If `applyFilter` is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
-
-```go-html-template
-{{ $related := .Site.RegularPages.Related . | first 5 }}
-{{ with $related }}
-  <h2>See Also</h2>
-  <ul>
-    {{ range $i, $p := . }}
-      <li>
-        <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
-        {{ with .HeadingsFiltered }}
-          <ul>
-            {{ range . }}
-              {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
-              <li>
-                <a href="{{ $link }}">{{ .Title }}</a>
-              </li>
-            {{ end }}
-          </ul>
-        {{ end }}
-      </li>
-    {{ end }}
-  </ul>
-{{ end }}
-```
-
-## Configure related content
-
-Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
-
-### Default configuration
-
-Without any `related` configuration set on the project, Hugo's Related Content methods will use the following.
-
-{{< code-toggle config=related />}}
-
-Custom configuration should be set using the same syntax.
-
-{{% note %}}
-If you add a `related` configuration section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest  from the Hugo defaults.
-{{% /note %}}
-
-### Top level configuration options
-
-threshold
-: (`int`) A value between 0-100. Lower value will give more, but maybe not so relevant, matches.
-
-includeNewer
-: (`bool`) Set to `true` to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added.
-
-toLower
-: (`bool`) Set to `true` to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index.
-
-### Configuration options per index
-
-name
-: (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
-
-type
-: (`string`) One of `basic`(default) or `fragments`.
-
-applyFilter
-: (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type.
-
-weight
-: (`int`) An integer weight that indicates _how important_ this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
-
-cardinalityThreshold
-: (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`.
-
-pattern
-: (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
-
-toLower
-: (`bool`) See above.
index ce6916fd3f1b1f8ea7d3913b617c1afde78193f9..f7a2296f50d526c463917f7d8e64d5ef49a5b438 100644 (file)
@@ -2,26 +2,14 @@
 title: Sections
 description: Organize content into sections.
 
-categories: [content management]
-keywords: [lists,sections,content types,organization]
-menu:
-  docs:
-    parent: content-management
-    weight: 120
-weight: 120
-toc: true
+categories: []
+keywords: []
 aliases: [/content/sections/]
 ---
 
 ## Overview
 
-A section is a top-level content directory, or any content directory with an&nbsp;`_index.md`&nbsp;file. A content directory with an&nbsp;`_index.md`&nbsp;file is also known as a [branch bundle](g). Section templates receive one or more page [collections](g) in [context](g).
-
-{{% note %}}
-Although top-level directories without `_index.md`&nbsp;files are sections, we recommend creating `_index.md`&nbsp;files in _all_ sections.
-{{% /note %}}
-
-A typical site consists of one or more sections. For example:
+{{% glossary-term "section" %}}
 
 ```text
 content/
@@ -74,14 +62,8 @@ Have list pages|:heavy_check_mark:|:x:
 With the file structure from the [example above](#overview):
 
 1. The list page for the articles section includes all articles, regardless of directory structure; none of the subdirectories are sections.
-
 1. The articles/2022 and articles/2023 directories do not have list pages; they are not sections.
-
 1. The list page for the products section, by default, includes product-1 and product-2, but not their descendant pages. To include descendant pages, use the `RegularPagesRecursive` method instead of the `Pages` method in the list template.
-
-[`Pages`]: /methods/page/pages/
-[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
-
 1. All directories in the products section have list pages; each directory is a section.
 
 ## Template selection
@@ -104,9 +86,6 @@ Content directory|Single template
 
 If you need to use a different template for a subsection, specify `type` and/or `layout` in front matter.
 
-[lookup rules]: /templates/lookup-order/#lookup-rules
-[lookup order]: /templates/lookup-order/
-
 ## Ancestors and descendants
 
 A section has one or more ancestors (including the home page), and zero or more descendants. With the file structure from the [example above](#overview):
@@ -119,7 +98,7 @@ The content file (benefit-1.md) has four ancestors: benefits, product-1, product
 
 For example, use the `.Ancestors` method to render breadcrumb navigation.
 
-{{< code file=layouts/partials/breadcrumb.html >}}
+```go-html-template {file="layouts/partials/breadcrumb.html"}
 <nav aria-label="breadcrumb" class="breadcrumb">
   <ol>
     {{ range .Ancestors.Reverse }}
@@ -132,7 +111,7 @@ For example, use the `.Ancestors` method to render breadcrumb navigation.
     </li>
   </ol>
 </nav>
-{{< /code >}}
+```
 
 With this CSS:
 
@@ -156,9 +135,5 @@ Hugo renders this, where each breadcrumb is a link to the corresponding page:
 Home » Products » Product 1 » Benefits » Benefit 1
 ```
 
-[archetype]: /content-management/archetypes/
-[content type]: /content-management/types/
-[directory structure]: /getting-started/directory-structure/
-[section templates]: /templates/types/#section
-[leaf bundles]: /content-management/page-bundles/#leaf-bundles
-[branch bundles]: /content-management/page-bundles/#branch-bundles
+[lookup order]: /templates/lookup-order/
+[lookup rules]: /templates/lookup-order/#lookup-rules
index 1c5e2c99c3fe3e06da179a3ff8985988f48ff7ce..2de387f391255e1ec489891fc8f2962f7739cb5b 100644 (file)
@@ -1,15 +1,9 @@
 ---
 title: Shortcodes
 description: Use embedded, custom, or inline shortcodes to insert elements such as videos, images, and social media embeds into your content.
-categories: [content management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: content-management
-    weight: 100
-weight: 100
 aliases: [/extras/shortcodes/]
-toc: true
 ---
 
 ## Introduction
@@ -20,55 +14,53 @@ There are three types of shortcodes: embedded, custom, and inline.
 
 ## Embedded
 
-Hugo's embedded shortcodes are pre-defined templates within the application.  Refer to each shortcode's documentation for specific usage instructions and available arguments.
+Hugo's embedded shortcodes are pre-defined templates within the application. Refer to each shortcode's documentation for specific usage instructions and available arguments.
 
-{{< list-pages-in-section path=/shortcodes >}}
+{{% list-pages-in-section path=/shortcodes %}}
 
 ## Custom
 
 Create custom shortcodes to simplify and standardize content creation. For example, the following shortcode template generates an audio player using a [global resource](g):
 
-{{< code file=layouts/shortcodes/audio.html >}}
+```go-html-template {file="layouts/shortcodes/audio.html"}
 {{ with resources.Get (.Get "src") }}
   <audio controls preload="auto" src="{{ .RelPermalink }}"></audio>
 {{ end }}
-{{< /code >}}
+```
 
 Then call the shortcode from within markup:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{</* audio src=/audio/test.mp3 */>}}
-{{< /code >}}
+```
 
 Learn more about creating shortcodes in the [shortcode templates] section.
 
-[shortcode templates]: /templates/shortcode/
-
 ## Inline
 
 An inline shortcode is a shortcode template defined within content.
 
 Hugo's security model is based on the premise that template and configuration authors are trusted, but content authors are not. This model enables generation of HTML output safe against code injection.
 
-To conform with this security model, creating shortcode templates within content is disabled by default.  If you trust your content authors, you can enable this functionality in your site's configuration:
+To conform with this security model, creating shortcode templates within content is disabled by default. If you trust your content authors, you can enable this functionality in your site's configuration:
 
 {{< code-toggle file=hugo >}}
 [security]
 enableInlineShortcodes = true
 {{< /code-toggle >}}
 
-The following example demonstrates an inline shortcode, `date.inline`, that accepts a single positional argument: a date/time [layout string].
+For more information see [configure security](/configuration/security).
 
-[layout string]: /functions/time/format/#layout-string
+The following example demonstrates an inline shortcode, `date.inline`, that accepts a single positional argument: a date/time [layout string].
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 Today is
 {{</* date.inline ":date_medium" */>}}
   {{- now | time.Format (.Get 0) -}}
 {{</* /date.inline */>}}.
 
-Today is {{</* date.inline ":date_full" */>}}.
-{{< /code >}}
+Today is {{</* date.inline ":date_full" /*/>}}.
+```
 
 In the example above, the inline shortcode is executed twice: once upon definition and again when subsequently called. Hugo renders this to:
 
@@ -79,11 +71,8 @@ In the example above, the inline shortcode is executed twice: once upon definiti
 
 Inline shortcodes process their inner content within the same context as regular shortcode templates, allowing you to use any available [shortcode method].
 
-[shortcode method]: /templates/shortcode/#methods
-
-{{% note %}}
-You cannot [nest](#nesting) inline shortcodes.
-{{% /note %}}
+> [!note]
+> You cannot [nest](#nesting) inline shortcodes.
 
 Learn more about creating shortcodes in the [shortcode templates] section.
 
@@ -121,31 +110,25 @@ Or use the self-closing syntax with a trailing slash to pass the text as an argu
 {{</* qr text=https://gohugo.io /*/>}}
 ```
 
-[`details`]: /shortcodes/details
-[`instagram`]: /shortcodes/instagram
-[`qr`]: /shortcodes/qr
-
 Refer to each shortcode's documentation for specific usage instructions and available arguments.
 
 ### Arguments
 
 Shortcode arguments can be either _named_ or _positional_.
 
-Named arguments are passed as case-sensitive key-value pairs, as seen in this example with the embedded [`figure`] shortcode.  The `src` argument, for instance, is required.
-
-[`figure`]: /shortcodes/figure
+Named arguments are passed as case-sensitive key-value pairs, as seen in this example with the embedded [`figure`] shortcode. The `src` argument, for instance, is required.
 
 ```text
 {{</* figure src=/images/kitten.jpg */>}}
 ```
 
-Positional arguments, on the other hand, are determined by their position.  The embedded `instagram` shortcode, for example, expects the first argument to be the Instagram post ID.
+Positional arguments, on the other hand, are determined by their position. The embedded `instagram` shortcode, for example, expects the first argument to be the Instagram post ID.
 
 ```text
 {{</* instagram CxOWiQNP2MO */>}}
 ```
 
-Shortcode arguments are space delimited, and arguments with internal spaces must be quoted.
+Shortcode arguments are space-delimited, and arguments with internal spaces must be quoted.
 
 ```text
 {{</* figure src=/images/kitten.jpg alt="A white kitten" */>}}
@@ -171,7 +154,7 @@ You can optionally use multiple lines when providing several arguments to a shor
 Use a [raw string literal](g) if you need to pass a multiline string:
 
 ```text
-{{</*  myshortcode `This is some <b>HTML</b>,
+{{</* myshortcode `This is some <b>HTML</b>,
 and a new line with a "quoted string".` */>}}
 ```
 
@@ -188,29 +171,27 @@ Notation|Example
 Markdown|`{{%/* foo */%}} ## Section 1 {{%/* /foo */%}}`
 Standard|`{{</* foo */>}} ## Section 2 {{</* /foo */>}}`
 
-###### Markdown notation
+#### Markdown notation
 
 Hugo processes the shortcode before the page content is rendered by the Markdown renderer. This means, for instance, that Markdown headings inside a Markdown-notation shortcode will be included when invoking the [`TableOfContents`] method on the `Page` object.
 
-[`TableOfContents`]: /methods/page/tableofcontents/
-
-###### Standard notation
+#### Standard notation
 
 With standard notation, Hugo processes the shortcode separately, merging the output into the page content after Markdown rendering. This means, for instance, that Markdown headings inside a standard-notation shortcode will be excluded when invoking the `TableOfContents` method on the `Page` object.
 
 By way of example, with this shortcode template:
 
-{{< code file=layouts/shortcodes/foo.html >}}
+```go-html-template {file="layouts/shortcodes/foo.html"}
 {{ .Inner }}
-{{< /code >}}
+```
 
 And this markdown:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{%/* foo */%}} ## Section 1 {{%/* /foo */%}}
 
 {{</* foo */>}} ## Section 2 {{</* /foo */>}}
-{{< /code >}}
+```
 
 Hugo renders this HTML:
 
@@ -222,20 +203,28 @@ Hugo renders this HTML:
 
 In the above, "Section 1" will be included when invoking the `TableOfContents` method, while "Section 2" will not.
 
-The shortcode author determines which notation to use.  Consult each shortcode's documentation for specific usage instructions and available arguments.
+The shortcode author determines which notation to use. Consult each shortcode's documentation for specific usage instructions and available arguments.
 
 ## Nesting
 
 Shortcodes (excluding [inline](#inline) shortcodes) can be nested, creating parent-child relationships. For example, a gallery shortcode might contain several image shortcodes:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{</* gallery class="content-gallery" */>}}
   {{</* image src="/images/a.jpg" */>}}
   {{</* image src="/images/b.jpg" */>}}
   {{</* image src="/images/c.jpg" */>}}
 {{</* /gallery */>}}
-{{< /code >}}
+```
 
 The [shortcode templates][nesting] section provides a detailed explanation and examples.
 
+[`details`]: /shortcodes/details
+[`figure`]: /shortcodes/figure
+[`instagram`]: /shortcodes/instagram
+[`qr`]: /shortcodes/qr
+[`TableOfContents`]: /methods/page/tableofcontents/
+[layout string]: /functions/time/format/#layout-string
 [nesting]: /templates/shortcode/#nesting
+[shortcode method]: /templates/shortcode/#methods
+[shortcode templates]: /templates/shortcode/
index dbe8ff24827ba6339130a2b5721e4a6c9d8a0279..da61c2c8e520c78e4e8d284b631f0b05d9c7dc68 100644 (file)
@@ -2,14 +2,8 @@
 title: Content summaries
 linkTitle: Summaries
 description: Create and render content summaries.
-categories: [content management]
-keywords: [summaries,abstracts,read more]
-menu:
-  docs:
-    parent: content-management
-    weight: 160
-weight: 160
-toc: true
+categories: []
+keywords: []
 aliases: [/content/summaries/,/content-management/content-summaries/]
 ---
 
@@ -26,7 +20,7 @@ Review the [comparison table](#comparison) below to understand the characteristi
 
 Use a `<!--more-->` divider to indicate the end of the summary. Hugo will not render the summary divider itself.
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 +++
 title: 'Example'
 date: 2024-05-26T09:10:33-07:00
@@ -37,7 +31,7 @@ This is the first paragraph.
 <!--more-->
 
 This is the second paragraph.
-{{< /code >}}
+```
 
 When using the Emacs Org Mode [content format], use a `# more` divider to indicate the end of the summary.
 
@@ -47,7 +41,7 @@ When using the Emacs Org Mode [content format], use a `# more` divider to indica
 
 Use front matter to define a summary independent of content.
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 +++
 title: 'Example'
 date: 2024-05-26T09:10:33-07:00
@@ -57,15 +51,15 @@ summary: 'This summary is independent of the content.'
 This is the first paragraph.
 
 This is the second paragraph.
-{{< /code >}}
+```
 
 ## Automatic summary
 
 If you do not define the summary manually or in front matter, Hugo automatically defines the summary based on the [`summaryLength`] in your site configuration.
 
-[`summaryLength`]: /getting-started/configuration/#summarylength
+[`summaryLength`]: /configuration/all/#summarylength
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 +++
 title: 'Example'
 date: 2024-05-26T09:10:33-07:00
@@ -76,7 +70,7 @@ This is the first paragraph.
 This is the second paragraph.
 
 This is the third paragraph.
-{{< /code >}}
+```
 
 For example, with a `summaryLength` of 7, the automatic summary will be:
 
index b3e991a9699d0355e9c3383bd75be36b295acda4..7e87efa49f1dd3ac4bba7bdbc0393f3aa563d16c 100644 (file)
 ---
 title: Syntax highlighting
-description: Hugo comes with really fast syntax highlighting from Chroma.
-categories: [content management]
-keywords: [highlighting,chroma,code blocks,syntax]
-menu:
-  docs:
-    parent: content-management
-    weight: 250
-weight: 250
-toc: true
+description: Add syntax highlighting to code examples.
+categories: []
+keywords: [highlight]
 aliases: [/extras/highlighting/,/extras/highlight/,/tools/syntax-highlighting/]
 ---
 
-Hugo uses [Chroma](https://github.com/alecthomas/chroma) as its code highlighter; it is built in Go and is really, really fast.
+Hugo provides several methods to add syntax highlighting to code examples:
 
-## Configure syntax highlighter
+- Use the [`transform.Highlight`] function within your templates
+- Use the [`highlight`] shortcode with any [content format](g)
+- Use fenced code blocks with the Markdown content format
 
-See [Configure Highlight](/getting-started/configuration-markup#highlight).
+[`transform.Highlight`]: /functions/transform/highlight/
+[`highlight`]: /shortcodes/highlight/
 
-## Generate syntax highlighter CSS
+## Fenced code blocks
 
-If you run with `markup.highlight.noClasses=false` in your site configuration, you need a style sheet. The style sheet will override the style specified in [`markup.highlight.style`](/functions/transform/highlight/#options).
+In its default configuration, Hugo highlights code examples within fenced code blocks, following this form:
 
-You can generate one with Hugo:
-
-```sh
-hugo gen chromastyles --style=monokai > syntax.css
+````text {file="content/example.md"}
+```LANG [OPTIONS]
+CODE
 ```
+````
 
-Run `hugo gen chromastyles -h` for more options. See https://xyproto.github.io/splash/docs/ for a gallery of available styles.
+CODE
+: The code to highlight.
 
-## Highlight shortcode
+LANG
+: The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive.
 
-Highlighting is carried out via the built-in [`highlight` shortcode](/shortcodes/highlight/). It takes exactly one required argument for the programming language to be highlighted and requires a closing tag.
+OPTIONS
+: One or more space-separated or comma-separated key-value pairs wrapped in braces. Set default values for each option in your [site configuration]. The key names are case-insensitive.
 
-Options:
+[supported languages]: #languages
+[site configuration]: /configuration/markup/#highlight
 
-* `linenos`: configure line numbers. Valid values are `true`, `false`, `table`, or `inline`. `false` will turn off line numbers if it's configured to be on in site configuration. `table` will give copy-and-paste friendly code blocks.
-* `hl_lines`: lists a set of line numbers or line number ranges to be highlighted.
-* `linenostart=199`: starts the line number count from 199.
-* `anchorlinenos`: Configure anchors on line numbers. Valid values are `true` or `false`;
-* `lineanchors`: Configure a prefix for the anchors on line numbers. Will be suffixed with `-`, so linking to the line number 1 with the option `lineanchors=prefix` adds the anchor `prefix-1` to the page.  
-* `hl_inline`  Highlight inside a `<code>` (inline HTML element) tag. Valid values are `true` or `false`. The `code` tag will get a class with name `code-inline`.
+For example, with this Markdown:
 
-### Example: highlight shortcode
+````text {file="content/example.md"}
+```go {linenos=inline hl_lines=[3,"6-8"] style=emacs}
+package main
 
-```go-html-template
-{{</* highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" */>}}
-// ... code
-{{</* / highlight */>}}
-```
+import "fmt"
 
-Gives this:
-
-{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
-// GetTitleFunc returns a func that can be used to transform a string to
-// title case.
-//
-// The supported styles are
-//
-// - "Go" (strings.Title)
-// - "AP" (see https://www.apstylebook.com/)
-// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
-//
-// If an unknown or empty style is provided, AP style is what you get.
-func GetTitleFunc(style string) func(s string) string {
-  switch strings.ToLower(style) {
-  case "go":
-    return strings.Title
-  case "chicago":
-    return transform.NewTitleConverter(transform.ChicagoStyle)
-  default:
-    return transform.NewTitleConverter(transform.APStyle)
-  }
+func main() {
+    for i := 0; i < 3; i++ {
+        fmt.Println("Value of i:", i)
+    }
 }
-{{< / highlight >}}
-
-## Highlight Hugo/Go template code
+```
+````
 
-For highlighting Hugo/Go template code on your page, add `/*` after the opening double curly braces and `*/` before closing curly braces.
+Hugo renders this:
 
-``` go
-{{</*/* myshortcode */*/>}}
-```
+```go {linenos=inline, hl_lines=[3, "6-8"], style=emacs}
+package main
 
-Gives this:
+import "fmt"
 
-``` go
-{{</* myshortcode */>}}
+func main() {
+    for i := 0; i < 3; i++ {
+        fmt.Println("Value of i:", i)
+    }
+}
 ```
 
-## Highlight template function
+## Options
+
+{{% include "_common/syntax-highlighting-options.md" %}}
 
-See [Highlight](/functions/transform/highlight/).
+## Escaping
 
-## Highlighting in code fences
+When documenting shortcode usage, escape the tag delimiters:
 
-Highlighting in code fences is enabled by default.
+````text {file="content/example.md"}
+```text {linenos=inline}
+{{</*/* shortcode-1 */*/>}}
 
-````txt
-```go {linenos=table,hl_lines=[8,"15-17"],linenostart=199}
-// ... code
+{{%/*/* shortcode-2 */*/%}}
 ```
 ````
 
-Gives this:
-
-```go {linenos=table,hl_lines=[8,"15-17"],linenostart=199}
-// GetTitleFunc returns a func that can be used to transform a string to
-// title case.
-//
-// The supported styles are
-//
-// - "Go" (strings.Title)
-// - "AP" (see https://www.apstylebook.com/)
-// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
-//
-// If an unknown or empty style is provided, AP style is what you get.
-func GetTitleFunc(style string) func(s string) string {
-  switch strings.ToLower(style) {
-  case "go":
-    return strings.Title
-  case "chicago":
-    return transform.NewTitleConverter(transform.ChicagoStyle)
-  default:
-    return transform.NewTitleConverter(transform.APStyle)
-  }
-}
+Hugo renders this to:
+
+```text {linenos=inline}
+{{</* shortcode-1 */>}}
+
+{{%/* shortcode-2 */%}}
 ```
 
-The options are the same as in the [highlighting shortcode](/content-management/syntax-highlighting/#highlight-shortcode), including `linenos=false`, but note the slightly different Markdown attribute syntax.
+## Languages
 
-## List of Chroma highlighting languages
+These are the supported languages. Use one of the identifiers, not the language name, when specifying a language for:
 
-The full list of Chroma lexers and their aliases (which is the identifier used in the `highlight` template func or when doing highlighting in code fences):
+- The [`transform.Highlight`] function
+- The [`highlight`] shortcode
+- Fenced code blocks
 
 {{< chroma-lexers >}}
index 6ba9e2a25f56afa5f3cf1c55dbec9e95c71794ed..e8ba04c2850d64de5b3ce1b4bfcb12824cb92dc8 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Taxonomies
 description: Hugo includes support for user-defined taxonomies.
-categories: [content management]
-keywords: [taxonomies,metadata,front matter,terms]
-menu:
-  docs:
-    parent: content-management
-    weight: 150
-weight: 150
-toc: true
+categories: []
+keywords: []
 aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes]
 ---
 
@@ -19,24 +13,24 @@ Hugo includes support for user-defined groupings of content called **taxonomies*
 ### Definitions
 
 Taxonomy
-: a categorization that can be used to classify content
+: A categorization that can be used to classify content
 
 Term
-: a key within the taxonomy
+: A key within the taxonomy
 
 Value
-: a piece of content assigned to a term
+: A piece of content assigned to a term
 
 ## Example taxonomy: movie website
 
 Let's assume you are making a website about movies. You may want to include the following taxonomies:
 
-* Actors
-* Directors
-* Studios
-* Genre
-* Year
-* Awards
+- Actors
+- Directors
+- Studios
+- Genre
+- Year
+- Awards
 
 Then, in each of the movies, you would specify terms for each of these taxonomies (i.e., in the [front matter] of each of your movie content files). From these terms, Hugo would automatically create pages for each Actor, Director, Studio, Genre, Year, and Award, with each listing all of the Movies that matched that specific Actor, Director, Studio, Genre, Year, and Award.
 
@@ -75,60 +69,16 @@ Moonrise Kingdom            <- Value
     ...
 ```
 
-## Default taxonomies
-
-Hugo natively supports taxonomies.
-
-Without adding a single line to your [site configuration] file, Hugo will automatically create taxonomies for `tags` and `categories`. That would be the same as manually [configuring your taxonomies](#configure-taxonomies) as below:
-
-{{< code-toggle config=taxonomies />}}
-
-If you do not want Hugo to create any taxonomies, set `disableKinds` in your [site configuration] to the following:
-
-{{< code-toggle file=hugo >}}
-disableKinds = ["taxonomy","term"]
-{{</ code-toggle >}}
-
-{{% include "content-management/_common/page-kinds.md" %}}
-
 ### Default destinations
 
 When taxonomies are used---and [taxonomy templates] are provided---Hugo will automatically create both a page listing all the taxonomy's terms and individual pages with lists of content associated with each term. For example, a `categories` taxonomy declared in your configuration and used in your content front matter will create the following pages:
 
-* A single page at `example.com/categories/` that lists all the terms within the taxonomy
-* [Individual taxonomy list pages][taxonomy templates] (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's [front matter]
-
-## Configure taxonomies
-
-Custom taxonomies other than the [defaults](#default-taxonomies) must be defined in your [site configuration] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
+- A single page at `example.com/categories/` that lists all the terms within the taxonomy
+- [Individual taxonomy list pages][taxonomy templates] (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's [front matter]
 
-### Example: adding a custom taxonomy named "series"
+## Configuration
 
-{{% note %}}
-While adding custom taxonomies, you need to put in the default taxonomies too, _if you want to keep them_.
-{{% /note %}}
-
-{{< code-toggle file=hugo >}}
-[taxonomies]
-  tag = "tags"
-  category = "categories"
-  series = "series"
-{{</ code-toggle >}}
-
-### Example: removing default taxonomies
-
-If you want to have just the default `tags` taxonomy, and remove the `categories` taxonomy for your site, you can do so by modifying the `taxonomies` value in your [site configuration].
-
-{{< code-toggle file=hugo >}}
-[taxonomies]
-  tag = "tags"
-{{</ code-toggle >}}
-
-If you want to disable all taxonomies altogether, see the use of `disableKinds` in [Hugo Taxonomy Defaults](#default-taxonomies).
-
-{{% note %}}
-You can add content and front matter to your taxonomy list and taxonomy terms pages. See [Content Organization](/content-management/organization/) for more information on how to add an `_index.md` for this purpose.
-{{% /note %}}
+See [configure taxonomies](/configuration/taxonomies/).
 
 ## Assign terms to content
 
@@ -148,7 +98,7 @@ The following show a piece of content that has a weight of 22, which can be used
 
 ### Example: taxonomic `weight`
 
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
 title = "foo"
 tags = [ "a", "b", "c" ]
 tags_weight = 22
@@ -172,4 +122,4 @@ wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
 [documentation on archetypes]: /content-management/archetypes/
 [front matter]: /content-management/front-matter/
 [taxonomy templates]: /templates/types/#taxonomy
-[site configuration]: /getting-started/configuration/
+[site configuration]: /configuration/
index 9b44645e9f5c02e501dccd87481ba0ae93c11cdd..08e9adda224667471f45419679200d102dbc2fc7 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Content types
 description: Hugo is built around content organized in sections.
-categories: [content management]
-keywords: [lists,sections,content types,types,organization]
-menu:
-  docs:
-    parent: content-management
-    weight: 130
-weight: 130
-toc: true
+categories: []
+keywords: []
 aliases: [/content/types]
 ---
 
index ab0c7148a428404ab24b86f3744311e36899fca9..2630105e58342928d2d1e5c2fd70ad4a97db20c7 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: URL management
 description: Control the structure and appearance of URLs through front matter entries and settings in your site configuration.
-categories: [content management]
-keywords: [aliases,redirects,permalinks,urls]
-menu:
-  docs:
-    parent: content-management
-    weight: 180
-weight: 180
-toc: true
+categories: []
+keywords: []
 aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
 ---
 
@@ -43,14 +37,10 @@ https://example.org/posts/my-first-post/
 
 Set the `url` in front matter to override the entire path. Use this with either regular pages or section pages.
 
-{{% note %}}
-Hugo does not sanitize the `url` front matter field, allowing you to generate:
-
-- File paths that contain characters reserved by the operating system. For example, file paths on Windows may not contain any of these [reserved characters]. Hugo throws an error if a file path includes a character reserved by the current operating system.
-- URLs that contain disallowed characters. For example, the less than sign (`<`) is not allowed in a URL.
-
-[reserved characters]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
-{{% /note %}}
+> [!note]
+> Hugo does not sanitize the `url` front matter field, allowing you to generate:
+> - File paths that contain characters reserved by the operating system. For example, file paths on Windows may not contain any of these [reserved characters]. Hugo throws an error if a file path includes a character reserved by the current operating system.
+> - URLs that contain disallowed characters. For example, the less than sign (`<`) is not allowed in a URL.
 
 If you set both `slug` and `url` in front matter, the `url` value takes precedence.
 
@@ -107,8 +97,6 @@ https://example.org/articles/my-first-article.html
 
 With monolingual sites, `url` values with or without a leading slash are relative to the [`baseURL`]. With multilingual sites, `url` values with a leading slash are relative to the `baseURL`, and  `url` values without a leading slash are relative to the `baseURL` plus the language prefix.
 
-[`baseURL`]: /getting-started/configuration/#baseurl
-
 Site type|Front matter `url`|Resulting URL
 :--|:--|:--
 monolingual|`/about`|`https://example.org/about/`
@@ -120,7 +108,7 @@ multilingual|`about`|`https://example.org/de/about/`
 
 {{< new-in 0.131.0 />}}
 
-You can also use [tokens](#tokens) when setting the `url` value. This is typically used in `cascade` sections:
+You can also usetokens when setting the `url` value. This is typically used in `cascade` sections:
 
 {{< code-toggle file=content/foo/bar/_index.md fm=true >}}
 title ="Bar"
@@ -128,226 +116,19 @@ title ="Bar"
   url = "/:sections[last]/:slug"
 {{< /code-toggle >}}
 
-## Site configuration
-
-### Permalinks
-
-In your site configuration, define a URL pattern for each top-level section. Each URL pattern can target a given language and/or page kind.
-
-Front matter `url` values override the URL patterns defined in the `permalinks` section of your site configuration.
+Use any of these tokens:
 
-#### Monolingual examples {#permalinks-monolingual-examples}
+{{% include "/_common/permalink-tokens.md" %}}
 
-With this content structure:
-
-```text
-content/
-├── posts/
-│   ├── bash-in-slow-motion.md
-│   └── tls-in-a-nutshell.md
-├── tutorials/
-│   ├── git-for-beginners.md
-│   └── javascript-bundling-with-hugo.md
-└── _index.md
-```
-
-Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy:
-
-{{< code-toggle file=hugo >}}
-[permalinks.page]
-posts = '/articles/:year/:month/:slug/'
-tutorials = '/training/:slug/'
-[permalinks.section]
-posts = '/articles/'
-tutorials = '/training/'
-{{< /code-toggle >}}
-
-The structure of the published site will be:
-
-```text
-public/
-├── articles/
-│   ├── 2023/
-│   │   ├── 04/
-│   │   │   └── bash-in-slow-motion/
-│   │   │       └── index.html
-│   │   └── 06/
-│   │       └── tls-in-a-nutshell/
-│   │           └── index.html
-│   └── index.html
-├── training/
-│   ├── git-for-beginners/
-│   │   └── index.html
-│   ├── javascript-bundling-with-hugo/
-│   │   └── index.html
-│   └── index.html
-└── index.html
-```
-
-To create a date-based hierarchy for regular pages in the content root:
-
-{{< code-toggle file=hugo >}}
-[permalinks.page]
-"/" = "/:year/:month/:slug/"
-{{< /code-toggle >}}
-
-Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL:
-
-{{< code-toggle file=hugo >}}
-[permalinks.term]
-'tags' = '/:slug/'
-{{< /code-toggle >}}
-
-#### Multilingual example {#permalinks-multilingual-example}
-
-Use the `permalinks` configuration as a component of your localization strategy.
-
-With this content structure:
-
-```text
-content/
-├── en/
-│   ├── books/
-│   │   ├── les-miserables.md
-│   │   └── the-hunchback-of-notre-dame.md
-│   └── _index.md
-└── es/
-    ├── books/
-    │   ├── les-miserables.md
-    │   └── the-hunchback-of-notre-dame.md
-    └── _index.md
-```
-
-And this site configuration:
-
-{{< code-toggle file=hugo >}}
-defaultContentLanguage = 'en'
-defaultContentLanguageInSubdir = true
-
-[languages.en]
-contentDir = 'content/en'
-languageCode = 'en-US'
-languageDirection = 'ltr'
-languageName = 'English'
-weight = 1
-
-[languages.en.permalinks.page]
-books = "/books/:slug/"
-
-[languages.en.permalinks.section]
-books = "/books/"
-
-[languages.es]
-contentDir = 'content/es'
-languageCode = 'es-ES'
-languageDirection = 'ltr'
-languageName = 'Español'
-weight = 2
-
-[languages.es.permalinks.page]
-books = "/libros/:slug/"
-
-[languages.es.permalinks.section]
-books = "/libros/"
-{{< /code-toggle >}}
-
-The structure of the published site will be:
-
-```text
-public/
-├── en/
-│   ├── books/
-│   │   ├── les-miserables/
-│   │   │   └── index.html
-│   │   ├── the-hunchback-of-notre-dame/
-│   │   │   └── index.html
-│   │   └── index.html
-│   └── index.html
-├── es/
-│   ├── libros/
-│   │   ├── les-miserables/
-│   │   │   └── index.html
-│   │   ├── the-hunchback-of-notre-dame/
-│   │   │   └── index.html
-│   │   └── index.html
-│   └── index.html
-└── index.html
-````
-
-#### Tokens
-
-Use these tokens when defining the URL pattern. You can also use these tokens when setting the [`url`](#permalinks-tokens-in-front-matter) value in front matter.
-
-`:year`
-: The 4-digit year as defined in the front matter `date` field.
-
-`:month`
-: The 2-digit month as defined in the front matter `date` field.
-
-`:monthname`
-: The name of the month as defined in the front matter `date` field.
-
-`:day`
-: The 2-digit day as defined in the front matter `date` field.
-
-`:weekday`
-: The 1-digit day of the week as defined in the front matter `date` field  (Sunday = 0).
-
-`:weekdayname`
-: The name of the day of the week as defined in the front matter `date` field.
-
-`:yearday`
-: The 1- to 3-digit day of the year as defined in the front matter `date` field.
-
-`:section`
-: The content's section.
-
-`:sections`
-: The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
-
-`:title`
-: The title as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
-
-`:slug`
-: The slug as defined in front matter, else the title as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
-
-`:filename`
-: The content's file name without extension, applicable to the `page` page kind.
-
-`:slugorfilename`
-: The slug as defined in front matter, else the content's file name without extension, applicable to the `page` page kind.
+## Site configuration
 
-For time-related values, you can also use the layout string components defined in Go's [time package]. For example:
+### Permalinks
 
-[time package]: https://pkg.go.dev/time#pkg-constants
-
-{{< code-toggle file=hugo >}}
-permalinks:
-  posts: /:06/:1/:2/:title/
-{{< /code-toggle >}}
+See [configure permalinks](/configuration/permalinks).
 
 ### Appearance
 
-The appearance of a URL is either ugly or pretty.
-
-Type|Path|URL
-:--|:--|:--
-ugly|content/about.md|`https://example.org/about.html`
-pretty|content/about.md|`https://example.org/about/`
-
-By default, Hugo produces pretty URLs. To generate ugly URLs, change your site configuration:
-
-{{< code-toggle file=hugo >}}
-uglyURLs = true
-{{< /code-toggle >}}
-
-You can also enable uglyURLs by section. For example, with a site that contains sections for books and films:
-
-{{< code-toggle file=hugo >}}
-[uglyURLs]
-books = true
-films = false
-{{< /code-toggle >}}
+See [configure ugly URLs](/configuration/ugly-urls/).
 
 ### Post-processing
 
@@ -355,11 +136,9 @@ Hugo provides two mutually exclusive configuration options to alter URLs _after_
 
 #### Canonical URLs
 
-{{% note %}}
-This is a legacy configuration option, superseded by template functions and Markdown render hooks, and will likely be [removed in a future release].
-
-[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
-{{% /note %}}
+> [!caution]
+> This is a legacy configuration option, superseded by template functions and Markdown render hooks, and will likely be [removed in a future release].
+{class="!mt-6"}
 
 If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then prepends the `baseURL` to create absolute URLs.
 
@@ -378,9 +157,9 @@ canonifyURLs = true
 
 #### Relative URLs
 
-{{% note %}}
-Do not enable this option unless you are creating a serverless site, navigable via the file system.
-{{% /note %}}
+> [!caution]
+Do not enable this option unless you are creating a serverless site, navigable via the file system.
+{class="!mt-6"}
 
 If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then transforms the URL to be relative to the current page.
 
@@ -410,7 +189,7 @@ Create redirects from old URLs to new URLs with aliases:
 
 Change the file name of an existing page, and create an alias from the previous URL to the new URL:
 
-{{< code-toggle file=content/posts/new-file-name.md >}}
+{{< code-toggle file=content/posts/new-file-name.md fm=true >}}
 aliases = ['/posts/previous-file-name']
 {{< /code-toggle >}}
 
@@ -422,13 +201,13 @@ Each of these directory-relative aliases is equivalent to the site-relative alia
 
 You can create more than one alias to the current page:
 
-{{< code-toggle file=content/posts/new-file-name.md >}}
+{{< code-toggle file=content/posts/new-file-name.md fm=true >}}
 aliases = ['previous-file-name','original-file-name']
 {{< /code-toggle >}}
 
 In a multilingual site, use a directory-relative alias, or include the language prefix with a site-relative alias:
 
-{{< code-toggle file=content/posts/new-file-name.de.md >}}
+{{< code-toggle file=content/posts/new-file-name.de.md fm=true >}}
 aliases = ['/de/posts/previous-file-name']
 {{< /code-toggle >}}
 
@@ -449,7 +228,7 @@ public/
 
 The alias from the previous URL to the new URL is a client-side redirect:
 
-{{< code file=posts/previous-file-name/index.html >}}
+```html {file="posts/previous-file-name/index.html"}
 <!DOCTYPE html>
 <html lang="en-us">
   <head>
@@ -460,7 +239,7 @@ The alias from the previous URL to the new URL is a client-side redirect:
     <meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
   </head>
 </html>
-{{< /code >}}
+```
 
 Collectively, the elements in the `head` section:
 
@@ -480,4 +259,7 @@ Permalink
 Page
 : The Page data for the page being aliased.
 
+[`baseURL`]: /configuration/all/#baseurl
+[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
+[reserved characters]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
 [source code]: {{% eturl alias %}}
index a8ffaf4fa76882ad1f4e0588799a42ff72ecb253..d0ae954b08a3fb4993af2d95529758041f633af5 100644 (file)
@@ -1,16 +1,9 @@
 ---
 title: Contribute to the Hugo project
-linktitle: Contribute
+linkTitle: Contribute
 description: Contribute to development, documentation, and themes.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: contribute-in-this-section
-    parent: contribute
-    weight: 10
 weight: 10
 aliases: [/tutorials/how-to-contribute-to-hugo/,/community/contributing/]
 ---
-
-Hugo relies heavily on the enthusiasm and participation of the open-source community. We need your support.
index ef6fd9d3735b2e061390142d06f738239054854e..78ca5ec5cfe4c5f677b6a0e45b2c7dbe077c4841 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Development
 description: Contribute to the development of Hugo.
-categories: [contribute]
-keywords: [development]
-menu:
-  docs:
-    parent: contribute
-    weight: 20
-weight: 20
-toc: true
+categories: []
+keywords: []
 ---
 
 ## Introduction
@@ -33,16 +27,6 @@ If there is sufficient interest, [create a proposal]. Do not submit a pull reque
 
 For a complete guide to contributing to Hugo, see the [Contribution Guide].
 
-[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug
-[contributing]: CONTRIBUTING.md
-[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md
-[documentation repository]: https://github.com/gohugoio/hugoDocs
-[documentation]: /documentation
-[forum]: https://discourse.gohugo.io
-[issue queue]: https://github.com/gohugoio/hugo/issues
-[themes]: https://themes.gohugo.io/
-[contribution guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md
-
 ## Prerequisites
 
 To build the extended or extended/deploy edition from source you must:
@@ -52,34 +36,27 @@ To build the extended or extended/deploy edition from source you must:
 1. Install a C compiler, either [GCC] or [Clang]
 1. Update your `PATH` environment variable as described in the [Go documentation]
 
-[Clang]: https://clang.llvm.org/
-[GCC]: https://gcc.gnu.org/
-[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-[Go documentation]: https://go.dev/doc/code#Command
-[Go]: https://go.dev/doc/install
-
-{{% note %}}
-See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
-{{% /note %}}
+> [!note]
+> See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
 
 ## GitHub workflow
 
-{{% note %}}
-This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.
-{{% /note %}}
+> [!note]
+> This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.
 
 Use this workflow to create and submit pull requests.
 
-Step 1
-: Fork the [project repository].
+### Step 1
 
-[project repository]: https://github.com/gohugoio/hugo/
+Fork the [project repository].
+
+### Step 2
 
-Step 2
-: Clone your fork.
+Clone your fork.
 
-Step 3
-: Create a new branch with a descriptive name that includes the corresponding issue number.
+### Step 3
+
+Create a new branch with a descriptive name that includes the corresponding issue number.
 
 For a new feature:
 
@@ -93,11 +70,13 @@ For a bug fix:
 git checkout -b fix/fix-some-bug-99999
 ```
 
-Step 4
-: Make changes.
+### Step 4
+
+Make changes.
+
+### Step 5
 
-Step 5
-: Compile and install.
+Compile and install.
 
 To compile and install the standard edition:
 
@@ -117,22 +96,25 @@ To compile and install the extended/deploy edition:
 CGO_ENABLED=1 go install -tags extended,withdeploy
 ```
 
-Step 6
-: Test your changes:
+### Step 6
+
+Test your changes:
 
 ```text
 go test ./...
 ```
 
-Step 7
-: Commit your changes with a descriptive commit message:
+### Step 7
+
+Commit your changes with a descriptive commit message:
 
 - Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
-- Optionally, provide a detailed description where each line is 80 characters or less, followed by a blank line.
+  - Begin the summary with one of content, theme, config, all, or misc, followed by a colon, a space, and a brief description of the change beginning with a capital letter
+  - Use imperative present tense
+  - See the [commit message guidelines] for requirements
+- Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
 - Add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change.
 
-[issues]: https://github.com/gohugoio/hugo/issues
-
 For example:
 
 ```sh
@@ -146,18 +128,17 @@ Fixes #99998
 Closes #99999"
 ```
 
-See the [commit message guidelines] for details.
+### Step 8
 
-[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines
+Push the new branch to your fork of the documentation repository.
 
-Step 8
-: Push the new branch to your fork of the documentation repository.
+### Step 9
 
-Step 9
-: Visit the [project repository] and create a pull request (PR).
+Visit the [project repository] and create a pull request (PR).
 
-Step 10
-: A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
+### Step 10
+
+A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
 
 ## Building from source
 
@@ -172,7 +153,7 @@ CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest
 To build and install a specific release:
 
 ```sh
-CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.141.0
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.144.2
 ```
 
 To build and install at the latest commit on the master branch:
@@ -186,3 +167,20 @@ To build and install at a specific commit:
 ```sh
 CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@0851c17
 ```
+
+[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug
+[Clang]: https://clang.llvm.org/
+[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines
+[Contribution Guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md
+[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md
+[documentation]: /documentation
+[documentation repository]: https://github.com/gohugoio/hugoDocs
+[forum]: https://discourse.gohugo.io
+[GCC]: https://gcc.gnu.org/
+[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Go]: https://go.dev/doc/install
+[Go documentation]: https://go.dev/doc/code#Command
+[issue queue]: https://github.com/gohugoio/hugo/issues
+[issues]: https://github.com/gohugoio/hugo/issues
+[project repository]: https://github.com/gohugoio/hugo/
+[themes]: https://themes.gohugo.io/
index 285985b3d20ef3314dd1046550531b2044f1ccb3..1d185d21da385303cb40a60464c22450b9f6eb0a 100644 (file)
@@ -1,59 +1,46 @@
 ---
 title: Documentation
 description: Help us to improve the documentation by identifying issues and suggesting changes.
-categories: [contribute]
-keywords: [documentation]
-menu:
-  docs:
-    parent: contribute
-    weight: 30
-weight: 30
-toc: true
+categories: []
+keywords: []
 aliases: [/contribute/docs/]
 ---
 
 ## Introduction
 
-We welcome corrections and improvements to the documentation. Please note that the documentation resides in its own repository, separate from the project repository.
+We welcome corrections and improvements to the documentation. The documentation lives in a separate repository from the main project. To contribute:
 
-For corrections and improvements to the current documentation, please submit issues and pull requests to the [documentation repository].
-
-For documentation related to a new feature, please include the documentation changes when you submit a pull request to the [project repository].
+- For corrections and improvements to existing documentation, submit issues and pull requests to the [documentation repository].
+- For documentation of new features, include the documentation changes in your pull request to the [project repository].
 
 ## Guidelines
 
 ### Style
 
-Please adhere to Google's [developer documentation style guide].
-
-[developer documentation style guide]: https://developers.google.com/style
+Follow Google's [developer documentation style guide].
 
 ### Markdown
 
-Please follow these guidelines:
+Adhere to these Markdown conventions:
 
-- Use [ATX] headings, not [setext] headings, levels 2 through 4
-- Use [fenced code blocks], not [indented code blocks]
-- Use hyphens, not asterisks, with unordered [list items]
-- Use the [note shortcode] instead of blockquotes or bold text
-- Do not mix [raw HTML] within Markdown
-- Do not use bold text instead of a heading or description term (`dt`)
-- Remove consecutive blank lines (maximum of two)
-- Remove trailing spaces
+- Use [ATX] headings (levels 2-4), not [setext] headings.
+- Use [fenced code blocks], not [indented code blocks].
+- Use hyphens, not asterisks, for unordered [list items].
+- Use [callouts](#callouts) instead of bold text for emphasis.
+- Do not mix [raw HTML] within Markdown.
+- Do not use bold text in place of a heading or description term (`dt`).
+- Remove consecutive blank lines.
+- Remove trailing spaces.
 
 ### Glossary
 
-Glossary terms are maintained on individual pages. While not directly accessible to site visitors, these pages act as a central repository for term definitions.
-
-Definitions must be presented in complete sentences, with the first sentence always introducing the term being defined. To enhance readability and consistency, the first occurrence of the term and any other referenced glossary terms should be italicized.
+[Glossary] terms are defined on individual pages, providing a central repository for definitions, though these pages are not directly linked from the site.
 
-To link to a term definition on the glossary page, use this custom link syntax:
+Definitions must be complete sentences, with the first sentence defining the term. Italicize the first occurrence of the term and any referenced glossary terms for consistency.
 
-```text
-[term](g)
-```
+Link to glossary terms using this syntax: `[term](g)`
 
-Lookups are case-insensitive, ignore formatting, and support both singular and plural forms. For example, all of these variations will link to the same glossary term:
+Term lookups are case-insensitive, ignore formatting, and support singular and plural forms. For example, all of these variations will link to the same glossary term:
 
 ```text
 [global resource](g)
@@ -62,7 +49,7 @@ Lookups are case-insensitive, ignore formatting, and support both singular and p
 [`Global Resources`](g)
 ```
 
-To insert a term definition, use the [`glossary-term`] shortcode:
+Use the [glossary-term shortcode](#glossary-term) to insert a term definition:
 
 ```text
 {{%/* glossary-term "global resource" */%}}
@@ -70,29 +57,38 @@ To insert a term definition, use the [`glossary-term`] shortcode:
 
 ### Terminology
 
-Please link to the glossary (see above) when necessary, and use the terms consistently throughout the documentation. Of special note:
+Link to the [glossary] as needed and use terms consistently. Pay particular attention to:
+
+- "front matter" (two words, except when referring to the configuration key)
+- "home page" (two words)
+- "website" (one word)
+- "standalone" (one word, no hyphen)
+- "map" (instead of "dictionary")
+- "flag" (instead of "option" for command-line flags)
+- "client side" (noun), "client-side" (adjective)
+- "server side" (noun), "server-side" (adjective)
+- "Markdown" (capitalized)
+- "open-source" (hyphenated adjective)
+
+### Titles and headings
 
-- The term "front matter" is two words unless you are referring to the configuration key
-- The term "home page" is two words
-- The term "website" is one word
-- The term "standalone" is one word, not hyphenated
-- Use the word "map" instead of "dictionary"
-- Use the word "flag" instead of "option" when referring to a command line flag
-- Use "client side" as a noun, and "client-side" as an adjective
-- Capitalize the word "Markdown"
-- Hyphenate the term "open-source" when used an adjective.
+- Use sentence-style capitalization.
+- Avoid formatted strings.
+- Keep them concise.
 
-### Page titles and headings
+### Page descriptions
 
-Please follow these guidelines for page titles and headings:
+When writing the page `description` use imperative present tense when possible. For example:
 
-- Use sentence-style capitalization
-- Avoid formatted strings in headings and page titles
-- Shorter is better
+{{< code-toggle file=content/en/functions/data/_index.md" fm=true >}}
+title: Data functions
+linkTitle: data
+description: Use these functions to read local or remote data files.
+{{< /code-toggle >}}
 
-### Use active voice with present tense
+### Writing style
 
-In software documentation, passive voice is unavoidable in some cases. Please use active voice when possible.
+Use active voice and present tense wherever possible.
 
 No → With Hugo you can build a static site.\
 Yes → Build a static site with Hugo.
@@ -100,65 +96,124 @@ Yes → Build a static site with Hugo.
 No → This will cause Hugo to generate HTML files in the `public` directory.\
 Yes → Hugo generates HTML files in the `public` directory.
 
-### Use second person instead of third person
+Use second person instead of third person.
 
 No → Users should exercise caution when deleting files.\
 Better → You must be cautious when deleting files.\
 Best → Be cautious when deleting files.
 
-### Avoid adverbs when possible
+Minimize adverbs.
 
 No → Hugo is extremely fast.\
 Yes → Hugo is fast.
 
-{{% note %}}
-"It's an adverb, Sam. It's a lazy tool of a weak mind." (Outbreak, 1995).
-{{% /note %}}
-
-### Level 6 headings
-
-Level 6 headings are styled as `dt` elements. This was implemented to support a [glossary] with linkable terms.
+> [!note]
+> "It's an adverb, Sam. It's a lazy tool of a weak mind." (Outbreak, 1995).
 
 ### Function and method descriptions
 
-When adding a page to the [functions] or [methods] section, begin the description with the word "Returns". With functions and methods that return a boolean value, begin the description with the phrase "Reports whether".
-
-For example:
-
-- `Returns the URL aliases as defined in front matter.`
-- `Reports whether the given page is in the given section.`
+Start descriptions in the functions and methods sections with "Returns", of for booelan values, "Reports whether".
 
-[functions]: /functions
-[methods]: /methods
+### File paths and names
 
-### Directory names, file names, and file paths
-
-Enclose directory names, file names, and file paths within backticks, with the following exceptions:
+Enclose directory names, file names, and file paths in backticks, except when used in:
 
 - Page titles
 - Section headings (h1-h6)
 - Definition list terms
-- The description field in front matter
+- The `description` field in front matter
 
 ### Miscellaneous
 
-Other guidelines to consider:
+Other best practices:
+
+- Introduce lists with a sentence or phrase, not directly under a heading.
+- Avoid bold text; use [callouts](#callouts) for emphasis.
+- Do not put description terms (`dt`) in backticks unless syntactically necessary.
+- Do not use Hugo's `ref` or `relref` shortcodes.
+- Prioritize current best practices over multiple options or historical information.
+- Use short, focused code examples.
+- Use [basic english] where possible for a global audience.
+
+## Front matter fields
+
+This site uses the front matter fields listed in the table below.
+
+Of the four required fields, only `title` and `description` require data.
+
+```text
+title: The title
+description: The description
+categories: []
+keywords: []
+```
+
+This example demonstrates the minimum required front matter fields.
+
+If quotation marks are required, prefer single quotes to double quotes when possible.
+
+Seq|Field|Description|Required
+--:|:--|:--|:--
+1|`title`|The page title|:heavy_check_mark:|
+2|`linkTitle`|A short version of the page title||
+3|`description`|A complete sentence describing the page|:heavy_check_mark:|
+4|`categories`|An array of terms in the categories taxonomy|:heavy_check_mark: [^1]|
+5|`keywords`|An array of keywords used to identify related content|:heavy_check_mark: [^1]|
+6|`publishDate`|Applicable to news items: the publication date||
+7|`params.altTitle`|An alternate title: used in the "see also" panel if provided||
+8|`params.functions_and_methods.aliases`|Applicable to function and method pages: an array of alias names||
+9|`params.functions_and_methods.returnType`|Applicable to function and method pages: the data type returned||
+10|`params.functions_and_methods.signatures`|Applicable to function and method pages: an array of signatures||
+11|`params.hide_in_this_section`|Whether to hide the "in this section" panel||
+12|`params.minversion`|Applicable to the quick start page: the minimum Hugo version required||
+13|`params.permalink`|Reserved for use by the news content adapter||
+14|`params.reference (used in glossary term)`|Applicable to glossary entries: a URL for additional information||
+15|`params.show_publish_date`|Whether to show the `publishDate` when rendering the page||
+16|`weight`|The page weight||
+17|`aliases`|Previous URLs used to access this page||
+18|`expirydate`|The expiration date||
+
+[^1]: The field is required, but its data is not.
+
+## Related content
+
+When available, the "See also" sidebar displays related pages using Hugo's [related content] feature, based on front matter keywords. We ensure consistent keyword usage by validating them against `data/keywords.yaml` during the build process. If a keyword is not found, you'll be alerted and must either modify the keyword or update the data file. This validation process helps to refine the related content for better results.
+
+If the title in the "See also" sidebar is ambiguous or the same as another page, you can define an alternate title in the front matter:
+
+{{< code-toggle file=hugo >}}
+title = "Long descriptive title"
+linkTitle = "Short title"
+[params]
+altTitle = "Whatever you want"
+{{< /code-toggle >}}
+
+Use of the alternate title is limited to the "See also" sidebar.
 
-- Do not place list items directly under a heading; include an introductory sentence or phrase before the list.
-- Avoid use of **bold** text. Use the [note shortcode] to draw attention to important content.
-- Do not place description terms (`dt`) within backticks unless required for syntactic clarity.
-- Do not use Hugo's `ref` or `relref` shortcodes. We use a link render hook to resolve and validate link destinations, including fragments.
-- Shorter is better. If there is more than one way to do something, describe the current best practice. For example, avoid phrases such as "you can also do..." and "in older versions you had to..."
-- When including code samples, use short snippets that demonstrate the concept.
-- The Hugo user community is global; use  [basic english](https://simple.wikipedia.org/wiki/Basic_English) when possible.
+> [!note]
+> Think carefully before setting the `altTitle`. Use it only when absolutely necessary.
 
 ## Code examples
 
-Indent code by two spaces. With examples of template code, include a space after opening action delimiters, and include a space before closing action delimiters.
+With examples of template code:
+
+- Indent with two spaces.
+- Insert a space after an opening action delimiter.
+- Insert a space before a closing action delimiter.
+- Do not add white space removal syntax to action delimiters unless required. For example, inline elements like `img` and `a` require whitespace removal on both sides.
+
+```go-html-template
+{{ if eq $foo $bar }}
+  {{ fmt.Printf "%s is %s" $foo $bar }}
+{{ end }}
+```
 
 ### Fenced code blocks
 
-Always include the language code when using a fenced code block:
+Always specify the language.
+
+When providing a Mardown example, set the code language to "text" to prevent
+erroneous lexing/highlighting of shortcode calls.
 
 ````text
 ```go-html-template
@@ -168,29 +223,40 @@ Always include the language code when using a fenced code block:
 ```
 ````
 
-```go-html-template
+To include a filename header and copy-to-clipboard button:
+
+````text
+```go-html-template {file="layouts/partials/foo.html" copy=true}
 {{ if eq $foo "bar" }}
   {{ print "foo is bar" }}
 {{ end }}
 ```
+````
+
+To wrap the code block within an initially-opened `details` element using a non-default summary:
+
+````text
+```go-html-template {details=true open=true summary="layouts/partials/foo.html" copy=true}
+{{ if eq $foo "bar" }}
+  {{ print "foo is bar" }}
+{{ end }}
+```
+````
 
 ### Shortcode calls
 
-Use this syntax to include shortcodes calls within your code examples:
+Use this syntax :
 
+````text
 ```text
 {{</*/* foo */*/>}}
 {{%/*/* foo */*/%}}
 ```
-
-```text
-{{</* foo */>}}
-{{%/* foo */%}}
-```
+````
 
 ### Site configuration
 
-Use the [code-toggle shortcode] to include site configuration examples:
+Use the [code-toggle shortcode](#code-toggle) to include site configuration examples:
 
 ```text
 {{</* code-toggle file=hugo */>}}
@@ -200,15 +266,9 @@ title = 'My Site'
 {{</* /code-toggle */>}}
 ```
 
-{{< code-toggle file=hugo >}}
-baseURL = 'https://example.org/'
-languageCode = 'en-US'
-title = 'My Site'
-{{< /code-toggle >}}
-
 ### Front matter
 
-Use the [code-toggle shortcode] to include front matter examples:
+Use the [code-toggle shortcode](#code-toggle) to include front matter examples:
 
 ```text
 {{</* code-toggle file=content/posts/my-first-post.md fm=true */>}}
@@ -218,60 +278,65 @@ draft = false
 {{</* /code-toggle */>}}
 ```
 
-{{< code-toggle file=content/posts/my-first-post.md fm=true >}}
-title = 'My first post'
-date = 2023-11-09T12:56:07-08:00
-draft = false
-{{< /code-toggle >}}
+## Callouts
 
-### Other code examples
+To visually emphasize important information, use callouts (admonitions). Callout types are case-insensitive. Effective March 8, 2025, we utilize only three of the five available types.
 
-Use the [code shortcode] for other code examples that require a file name:
+- note (272 instances)
+- warning (2 instances)
+- caution (1 instance)
+
+Limiting the number of callout types helps us to use them consistently.
 
 ```text
-{{</* code file=layouts/_default/single.html */>}}
-{{ range .Site.RegularPages }}
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-{{ end }}
-{{</* /code */>}}
+> [!note]
+> Useful information that users should know, even when skimming content.
 ```
 
-{{< code file=layouts/_default/single.html >}}
-{{ range .Site.RegularPages }}
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-{{ end }}
-{{< /code >}}
-
-## Shortcodes
+> [!note]
+> Useful information that users should know, even when skimming content.
 
-These shortcodes are commonly used throughout the documentation. Other shortcodes are available for specialized use.
+```text
+> [!warning]
+> Urgent info that needs immediate user attention to avoid problems.
+```
 
-### code
+> [!warning]
+> Urgent info that needs immediate user attention to avoid problems.
 
-Use the `code` shortcode for other code examples that require a file name. See the [code examples] above. This shortcode takes these arguments:
+```text
+> [!caution]
+> Advises about risks or negative outcomes of certain actions.
+```
 
-copy
-: (`bool`) Whether to display a copy-to-clipboard button. Default is `false`.
+> [!caution]
+> Advises about risks or negative outcomes of certain actions.
 
-file
-: (`string`) The file name to display.
+```text
+> [!tip]
+> Helpful advice for doing things better or more easily.
+```
 
-lang
-: (`string`) The code language. If you do not provide a `lang` argument, the code language is determined by the file extension. If the file extension is `html`, sets the code language to `go-html-template`. Default is `text`.
+> [!tip]
+> Helpful advice for doing things better or more easily.
 
 ```text
-{{</* code file=content/something/foo.md lang=text copy=true */>}}
-Some code here
-{{</* /code */>}}
+> [!important]
+> Key information users need to know to achieve their goal.
 ```
 
-{{< code file=content/something/foo.md lang=text copy=true >}}
-Some code here
-{{< /code >}}
+> [!important]
+> Key information users need to know to achieve their goal.
+
+
+
+## Shortcodes
+
+These shortcodes are commonly used throughout the documentation. Other shortcodes are available for specialized use.
 
 ### code-toggle
 
-Use the `code-toggle` shortcode to display examples of site configuration, front matter, or data files. See the [code examples] above. This shortcode takes these arguments:
+Use the `code-toggle` shortcode to display examples of site configuration, front matter, or data files. This shortcode takes these arguments:
 
 config
 : (`string`) The section of `site.Data.docs.config` to render.
@@ -279,44 +344,38 @@ config
 copy
 : (`bool`) Whether to display a copy-to-clipboard button. Default is `false`.
 
+datakey:
+: (`string`) The section of `site.Data.docs` to render.
+
 file
-: (`string`) The file name to display. Omit the file extension for site configuration examples. Default is `hugo`
+: (`string`) The file name to display above the rendered code. Omit the file extension for site configuration examples.
 
 fm
-: (`bool`) Whether the example is front matter. Default is `false`.
+: (`bool`) Whether to render the code as front matter. Default is `false`.
 
 skipHeader
-: (`bool`) Whether to omit top level key(s) when rendering a section of `site.Data.docs.config`.
+: (`bool`) Whether to omit top-level key(s) when rendering a section of `site.Data.docs.config`.
 
 ```text
-{{</* code-toggle */>}}
-title: Example
-draft: false
+{{</* code-toggle file=hugo copy=true */>}}
+baseURL = 'https://example.org/'
+languageCode = 'en-US'
+title = 'My Site'
 {{</* /code-toggle */>}}
 ```
 
-{{< code-toggle >}}
-title: Example
-draft: false
-{{< /code-toggle >}}
-
 ### deprecated-in
 
 Use the `deprecated-in` shortcode to indicate that a feature is deprecated:
 
 ```text
-{{%/* deprecated-in 0.127.0 */%}}
-Use [`hugo.IsServer`] instead.
-
-[`hugo.IsServer`]: /functions/hugo/isserver/
-{{%/* /deprecated-in */%}}
-```
+{{</* deprecated-in 0.144.0 */>}}
 
-{{% deprecated-in 0.127.0 %}}
 Use [`hugo.IsServer`] instead.
 
 [`hugo.IsServer`]: /functions/hugo/isserver/
-{{% /deprecated-in %}}
+{{</* /deprecated-in */>}}
+```
 
 ### eturl
 
@@ -328,10 +387,6 @@ This is a link to the [embedded alias template].
 [embedded alias template]: {{%/* eturl alias */%}}
 ```
 
-This is a link to the [embedded alias template].
-
-[embedded alias template]: {{% eturl alias %}}
-
 ### glossary-term
 
 Use the `glossary-term` shortcode to insert the definition of the given glossary term.
@@ -340,14 +395,12 @@ Use the `glossary-term` shortcode to insert the definition of the given glossary
 {{%/* glossary-term scalar */%}}
 ```
 
-{{% glossary-term scalar %}}
-
 ### include
 
 Use the `include` shortcode to include content from another page.
 
 ```text
-{{%/* include "functions/_common/glob-patterns" */%}}
+{{%/* include "_common/glob-patterns.md" */%}}
 ```
 
 ### new-in
@@ -355,97 +408,92 @@ Use the `include` shortcode to include content from another page.
 Use the `new-in` shortcode to indicate a new feature:
 
 ```text
-{{</* new-in 0.127.0 */>}}
+{{</* new-in 0.144.0 /*/>}}
 ```
 
-{{< new-in 0.127.0 />}}
-
-### note
-
-Use the `note` shortcode with `{{%/* */%}}` delimiters to call attention to important content:
+You can also include details:
 
 ```text
-{{%/* note */%}}
-Use the [`math.Mod`] function to control...
-
-[`math.Mod`]: /functions/math/mod/
-{{%/* /note */%}}
+{{</* new-in 0.144.0 */>}}
+This is a new feature.
+{{</* /new-in */>}}
 ```
 
-{{% note %}}
-Use the [`math.Mod`] function to control...
-
-[`math.Mod`]: /functions/math/mod/
-{{% /note %}}
-
 ## New features
 
-Use the "new-in" shortcode to indicate a new feature:
+Use the [new-in shortcode](#new-in) to indicate a new feature:
 
-{{< code file=content/something/foo.md lang=text >}}
-{{</* new-in 0.120.0 */>}}
-{{< /code >}}
+```text
+{{</* new-in 0.144.0 */>}}
+```
 
 The "new in" label will be hidden if the specified version is older than a predefined threshold, based on differences in major and minor versions. See&nbsp;[details](https://github.com/gohugoio/hugoDocs/blob/master/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html).
 
 ## Deprecated features
 
-Use the "deprecated-in" shortcode to indicate that a feature is deprecated:
+Use the [deprecated-in shorcode](#deprecated-in) shortcode to indicate that a feature is deprecated:
 
-{{< code file=content/something/foo.md >}}
-{{%/* deprecated-in 0.120.0 */%}}
+```text
+{{</* deprecated-in 0.144.0 */>}}
 Use [`hugo.IsServer`] instead.
 
 [`hugo.IsServer`]: /functions/hugo/isserver/
-{{%/* /deprecated-in */%}}
-{{< /code >}}
+{{</* /deprecated-in */>}}
+```
 
 When deprecating a function or method, add something like this to front matter:
 
 {{< code-toggle file=content/something/foo.md fm=true >}}
-expiryDate: 2024-10-30 # deprecated 2022-10-30 in v0.123.0
+expiryDate: 2027-02-17 # deprecated 2025-02-17 in v0.144.0
 {{< /code-toggle >}}
 
 Set the `expiryDate` to two years from the date of deprecation, and add a brief front matter comment to explain the setting.
 
 ## GitHub workflow
 
-{{% note %}}
-This section assumes that you have a working knowledge of Git and GitHub, and are comfortable working on the command line.
-{{% /note %}}
+> [!note]
+> This section assumes that you have a working knowledge of Git and GitHub, and are comfortable working on the command line.
 
 Use this workflow to create and submit pull requests.
 
-Step 1
-: Fork the [documentation repository].
+### Step 1
+
+Fork the [documentation repository].
+
+### Step 2
 
-Step 2
-: Clone your fork.
+Clone your fork.
 
-Step 3
-: Create a new branch with a descriptive name that includes the corresponding issue number, if any:
+### Step 3
+
+Create a new branch with a descriptive name that includes the corresponding issue number, if any:
 
 ```sh
 git checkout -b restructure-foo-page-99999
 ```
 
-Step 4
-: Make changes.
+### Step 4
+
+Make changes.
+
+### Step 5
+
+Build the site locally to preview your changes.
 
-Step 5
-: Build the site locally to preview your changes.
+### Step 6
 
-Step 6
-: Commit your changes with a descriptive commit message:
+Commit your changes with a descriptive commit message:
 
 - Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
-- Optionally, provide a detailed description where each line is 80 characters or less, followed by a blank line.
+  - Begin the summary with one of `content`, `theme`, `config`, `all`, or `misc`, followed by a colon, a space, and a brief description of the change beginning with a capital letter
+  - Use imperative present tense
+- Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
 - Optionally, add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change.
 
 For example:
 
-```sh
-git commit -m "Restructure the taxonomy page
+```text
+git commit -m "content: Restructure the taxonomy page
 
 This restructures the taxonomy page by splitting topics into logical
 sections, each with one or more examples.
@@ -454,29 +502,29 @@ Fixes #9999
 Closes #9998"
 ```
 
-Step 7
-: Push the new branch to your fork of the documentation repository.
+### Step 7
+
+Push the new branch to your fork of the documentation repository.
+
+### Step 8
 
-Step 8
-: Visit the [documentation repository] and create a pull request (PR).
+Visit the [documentation repository] and create a pull request (PR).
 
-Step 9
-: A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
+### Step 9
+
+A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
 
 [ATX]: https://spec.commonmark.org/0.30/#atx-headings
-[Microsoft Writing Style Guide]: https://learn.microsoft.com/en-us/style-guide/welcome/
-[`glossary-term`]: #glossary-term
 [basic english]: https://simple.wikipedia.org/wiki/Basic_English
-[code examples]: #code-examples
-[code shortcode]: #code
-[code-toggle shortcode]: #code-toggle
+[basic english]: https://simple.wikipedia.org/wiki/Basic_English
+[developer documentation style guide]: https://developers.google.com/style
 [documentation repository]: https://github.com/gohugoio/hugoDocs/
 [fenced code blocks]: https://spec.commonmark.org/0.30/#fenced-code-blocks
 [glossary]: /quick-reference/glossary/
 [indented code blocks]: https://spec.commonmark.org/0.30/#indented-code-blocks
 [issues]: https://github.com/gohugoio/hugoDocs/issues
 [list items]: https://spec.commonmark.org/0.30/#list-items
-[note shortcode]: #note
 [project repository]: https://github.com/gohugoio/hugo
 [raw HTML]: https://spec.commonmark.org/0.30/#raw-html
+[related content]: /content-management/related-content/
 [setext]: https://spec.commonmark.org/0.30/#setext-heading
index 7277e2927a38bf5e00eed68482a4fff859fb2de4..8a3457ba337b4fb11a8ad8895680dea5a53a92b3 100644 (file)
@@ -1,13 +1,8 @@
 ---
 title: Themes
 description: If you've built a Hugo theme and want to contribute back to the Hugo Community, please share it with us.
-categories: [contribute]
-keywords: [themes]
-menu:
-  docs:
-    parent: contribute
-    weight: 40
-weight: 40
+categories: []
+keywords: []
 aliases: [/contribute/theme/]
 ---
 
index 11f843f918e4b5b2c387ac8d148c5188b29635e5..6f96c1f9cf5c602fcdf3e3d0574f82db4b0a3d59 100644 (file)
@@ -2,21 +2,19 @@
 title: Hugo Documentation
 linkTitle: Docs
 description: Hugo is the world's fastest static website engine. It's written in Go (aka Golang) and developed by bep, spf13 and friends.
-menu:
-  main:
-    weight: 1
-weight: 1
 layout: list
 ---
 
-A fast and flexible [static site generator] built with love by [bep], [spf13], and [friends] in [Go].
+<!--
+If we want content on this page at some point, considering taking it from:
 
-Hugo is optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less.
+- https://gohugo.io/about/introduction/
+- https://gohugo.io/about/features/
 
-[bep]: https://github.com/bep
-[spf13]: https://github.com/spf13
-[friends]: https://github.com/gohugoio/hugo/graphs/contributors
-[go]: https://go.dev/
-[static site generator]: https://en.wikipedia.org/wiki/Static_site_generator
+Try to use the same language (e.g., tagline) everywhere:
 
-Below you will find some of the most common and helpful pages from our documentation.
+- Home: https://gohugo.io/
+- Docs: https://gohugo.io/documentation/
+- Project repo: https://github.com/gohugoio/hugo?tab=readme-ov-file#readme
+- Docs repo: https://github.com/gohugoio/hugoDocs?tab=readme-ov-file#readme 
+-->
diff --git a/content/en/functions/_common/_index.md b/content/en/functions/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/_common/glob-patterns.md b/content/en/functions/_common/glob-patterns.md
deleted file mode 100644 (file)
index d3092de..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Path|Pattern|Match
-:--|:--|:--
-`images/foo/a.jpg`|`images/foo/*.jpg`|`true`
-`images/foo/a.jpg`|`images/foo/*.*`|`true`
-`images/foo/a.jpg`|`images/foo/*`|`true`
-`images/foo/a.jpg`|`images/*/*.jpg`|`true`
-`images/foo/a.jpg`|`images/*/*.*`|`true`
-`images/foo/a.jpg`|`images/*/*`|`true`
-`images/foo/a.jpg`|`*/*/*.jpg`|`true`
-`images/foo/a.jpg`|`*/*/*.*`|`true`
-`images/foo/a.jpg`|`*/*/*`|`true`
-`images/foo/a.jpg`|`**/*.jpg`|`true`
-`images/foo/a.jpg`|`**/*.*`|`true`
-`images/foo/a.jpg`|`**/*`|`true`
-`images/foo/a.jpg`|`**`|`true`
-`images/foo/a.jpg`|`*/*.jpg`|`false`
-`images/foo/a.jpg`|`*.jpg`|`false`
-`images/foo/a.jpg`|`*.*`|`false`
-`images/foo/a.jpg`|`*`|`false`
diff --git a/content/en/functions/_common/go-html-template-package.md b/content/en/functions/_common/go-html-template-package.md
deleted file mode 100644 (file)
index 57992ea..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Hugo uses Go's [text/template] and [html/template] packages.
-
-The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection.
-
-By default, Hugo uses the html/template package when rendering HTML files.
-
-To generate HTML output that is safe against code injection, the html/template package escapes strings in certain contexts.
-
-[text/template]: https://pkg.go.dev/text/template
-[html/template]: https://pkg.go.dev/html/template
diff --git a/content/en/functions/_common/highlighting-options.md b/content/en/functions/_common/highlighting-options.md
deleted file mode 100644 (file)
index 2d07ccc..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-anchorLineNos
-: (`bool`) Whether to render each line number as an HTML anchor element, setting the `id` attribute of the surrounding `span` element to the line number. Irrelevant if `lineNos` is `false`. Default is `false`.
-
-codeFences
-: (`bool`) Whether to highlight fenced code blocks. Default is `true`.
-
-guessSyntax
-: (`bool`) Whether to automatically detect the language if the `LANG` argument is blank or set to a language for which there is no corresponding [lexer](g). Falls back to a plain text lexer if unable to automatically detect the language. Default is `false`.
-
-{{% note %}}
-The Chroma syntax highlighter includes lexers for approximately 250 languages, but only 5 of these have implemented automatic language detection.
-{{% /note %}}
-
-hl_Lines
-: (`string`) A space-delimited list of lines to emphasize within the highlighted code. To emphasize lines 2, 3, 4, and 7, set this value to `2-4 7`. This option is independent of the `lineNoStart` option.
-
-hl_inline
-: (`bool`) Whether to render the highlighted code without a wrapping container. Default is `false`.
-
-lineAnchors
-: (`string`) When rendering a line number as an HTML anchor element, prepend this value to the `id` attribute of the surrounding `span` element. This provides unique `id` attributes when a page contains two or more code blocks. Irrelevant if `lineNos` or `anchorLineNos` is `false`.
-
-lineNoStart
-: (`int`) The number to display at the beginning of the first line. Irrelevant if `lineNos` is `false`. Default is `1`.
-
-lineNos
-: (`bool`) Whether to display a number at the beginning of each line. Default is `false`.
-
-lineNumbersInTable
-: (`bool`) Whether to render the highlighted code in an HTML table with two cells. The left table cell contains the line numbers, while the right table cell contains the code. Irrelevant if `lineNos` is `false`. Default is `true`.
-
-noClasses
-: (`bool`) Whether to use inline CSS styles instead of an external CSS file. To use an external CSS file, set this value to `false` and generate the CSS file using the `hugo gen chromastyles` command. Default is `true`.
-
-style
-: (`string`) The CSS styles to apply to the highlighted code. See the [style gallery] for examples. Case-sensitive. Default is `monokai`.
-
-[style gallery]: https://xyproto.github.io/splash/docs/
-
-tabWidth
-: (`int`) Substitute this number of spaces for each tab character in your highlighted code. Irrelevant if `noClasses` is `false`. Default is `4`.
-
-wrapperClass
-{{< new-in 0.140.2 />}}
-: (`string`) The class or classes to use for the outermost element of the highlighted code. Default is `highlight`.
-
-{{% note %}}
-Instead of specifying both `lineNos` and `lineNumbersInTable`, you can use the following shorthand notation:
-
-lineNos=inline
-: equivalent to `lineNos=true` and `lineNumbersInTable=false`
-
-lineNos=table
-: equivalent to `lineNos=true` and `lineNumbersInTable=true`
-{{% /note %}}
diff --git a/content/en/functions/_common/locales.md b/content/en/functions/_common/locales.md
deleted file mode 100644 (file)
index 42d0087..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-{{% note %}}
-
-Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales.
-
-[gohugoio/locales]: https://github.com/gohugoio/locales
-{{% /note %}}
diff --git a/content/en/functions/_common/regular-expressions.md b/content/en/functions/_common/regular-expressions.md
deleted file mode 100644 (file)
index 58f81a2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
-
-Go's regular expression package implements the [RE2 syntax]. The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats]. Note that the RE2 `\C` escape sequence is not supported.
-
-[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
-[PCRE]: https://www.pcre.org/
-[RE2 syntax]: https://github.com/google/re2/wiki/Syntax/
-[string literal]: https://go.dev/ref/spec#String_literals
diff --git a/content/en/functions/_common/time-layout-string.md b/content/en/functions/_common/time-layout-string.md
deleted file mode 100644 (file)
index 3664eae..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Format a `time.Time` value based on [Go's reference time]:
-
-[Go's reference time]: https://pkg.go.dev/time#pkg-constants
-
-```text
-Mon Jan 2 15:04:05 MST 2006
-```
-
-Create a layout string using these components:
-
-Description|Valid components
-:--|:--
-Year|`"2006" "06"`
-Month|`"Jan" "January" "01" "1"`
-Day of the week|`"Mon" "Monday"`
-Day of the month|`"2" "_2" "02"`
-Day of the year|`"__2" "002"`
-Hour|`"15" "3" "03"`
-Minute|`"4" "04"`
-Second|`"5" "05"`
-AM/PM mark|`"PM"`
-Time zone offsets|`"-0700" "-07:00" "-07" "-070000" "-07:00:00"`
-
-Replace the sign in the layout string with a Z to print Z instead of an offset for the UTC zone.
-
-Description|Valid components
-:--|:--
-Time zone offsets|`"Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00"`
-
-```go-html-template
-{{ $t := "2023-01-27T23:44:58-08:00" }}
-{{ $t = time.AsTime $t }}
-{{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }}
-
-{{ $t }} → Jan 27, 2023 11:44 PM -08:00 
-```
-
-Strings such as `PST` and `CET` are not time zones. They are time zone _abbreviations_.
-
-Strings such as `-07:00` and `+01:00` are not time zones. They are time zone _offsets_.
-
-A time zone is a geographic area with the same local time. For example, the time zone abbreviated by `PST` and `PDT` (depending on Daylight Savings Time) is `America/Los_Angeles`.
index 95d766b1373eb4ce79394f1f134673ffbd86b76c..d3081210be19836098e822e0c1165335f5f22ebf 100644 (file)
@@ -1,17 +1,8 @@
 ---
 title: Functions
-
 description: Use these functions within your templates and archetypes.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: functions-in-this-section
-    parent: functions
-    weight: 10
 weight: 10
-showSectionMenu: true
 aliases: [/layout/functions/,/templates/functions]
 ---
-
-Use these functions within your templates and archetypes.
index 51bc908b6f773e09014e47b1493f82b77cf55888..572042937f4b77ca64a9dd413cc58a4b21e34211 100644 (file)
@@ -3,13 +3,11 @@ title: cast.ToFloat
 description: Converts a value to a decimal floating-point number (base 10).
 categories: []
 keywords: []
-action:
-  aliases: [float]
-  related:
-    - functions/cast/ToInt
-    - functions/cast/ToString
-  returnType: float64
-  signatures: [cast.ToFloat INPUT]
+params:
+  functions_and_methods:
+    aliases: [float]
+    returnType: float64
+    signatures: [cast.ToFloat INPUT]
 aliases: [/functions/float]
 ---
 
index c4bb102685256104cb87dc68e0ce4b83b5a87e16..4ede69229c6b7000e9fcbbec471fa1959234a6db 100644 (file)
@@ -2,13 +2,11 @@
 title: cast.ToInt
 description: Converts a value to a decimal integer (base 10).
 keywords: []
-action:
-  aliases: [int]
-  related:
-    - functions/cast/ToFloat
-    - functions/cast/ToString
-  returnType: int
-  signatures: [cast.ToInt INPUT]
+params:
+  functions_and_methods:
+    aliases: [int]
+    returnType: int
+    signatures: [cast.ToInt INPUT]
 aliases: [/functions/int]
 ---
 
@@ -46,8 +44,7 @@ With a hexadecimal (base 16) input:
 {{ int "0x11" }} → 17 (int)
 ```
 
-{{% note %}}
-Values with a leading zero are octal (base 8). When casting a string representation of a decimal (base 10) number, remove leading zeros:
+> [!note]
+Values with a leading zero are octal (base 8). When casting a string representation of a decimal (base 10) number, remove leading zeros:
 
 `{{ strings.TrimLeft "0" "0011" | int }} → 11`
-{{% /note %}}
index a701c94217014d68cadbd7fbb115ee4ea0b026ab..1bba001c93f4357ca6925b05ff932e7ed818fe88 100644 (file)
@@ -3,13 +3,11 @@ title: cast.ToString
 description: Converts a value to a string.
 categories: []
 keywords: []
-action:
-  aliases: [string]
-  related:
-    - functions/cast/ToFloat
-    - functions/cast/ToInt
-  returnType: string
-  signatures: [cast.ToString INPUT]
+params:
+  functions_and_methods:
+    aliases: [string]
+    returnType: string
+    signatures: [cast.ToString INPUT]
 aliases: [/functions/string]
 ---
 
index 82389237a26e75a3f20315bd11ecdf75d51f32f6..1584ab159010b6251dc7c3887c129a0fe21ac367 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Cast functions
 linkTitle: cast
-description: Template functions to cast a value from one data type to another.
+description: Use these functions to cast a value from one data type to another.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to cast a value from one data type to another.
index 1f2759da64432ee4c4296275cd80d0d7da82857b..c8a8228461742453b8bd560bd2d6443573f01439 100644 (file)
@@ -3,13 +3,11 @@ title: collections.After
 description: Slices an array to the items after the Nth item.
 categories: []
 keywords: []
-action:
-  aliases: [after]
-  related:
-    - functions/collections/First
-    - functions/collections/Last
-  returnType: any
-  signatures: [collections.After INDEX COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [after]
+    returnType: any
+    signatures: [collections.After INDEX COLLECTION]
 aliases: [/functions/after]
 ---
 
@@ -40,7 +38,7 @@ You can use `after` in combination with the [`first`] function and Hugo's [power
 1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
 1. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
 
-{{< code file=layouts/section/articles.html >}}
+```go-html-template {file="layouts/section/articles.html"}
 {{ define "main" }}
   <section class="row featured-article">
     <h2>Featured Article</h2>
@@ -63,7 +61,7 @@ You can use `after` in combination with the [`first`] function and Hugo's [power
     {{ end }}
   </div>
 {{ end }}
-{{< /code >}}
+```
 
 [`first`]: /functions/collections/first/
 [`slice`]: /functions/collections/slice/
index 7189c906858aa013d98cffc79ce2e2ac7e1d153e..cf1d1a3f587b69144b79bf8862bfca6fa71543de 100644 (file)
@@ -3,14 +3,13 @@ title: collections.Append
 description: Appends one or more elements to a slice and returns the resulting slice.
 categories: []
 keywords: []
-action:
-  aliases: [append]
-  related:
-    - functions/collections/Merge
-  returnType: any
-  signatures:
-    - collections.Append ELEMENT [ELEMENT...] COLLECTION
-    - collections.Append COLLECTION1 COLLECTION2
+params:
+  functions_and_methods:
+    aliases: [append]
+    returnType: any
+    signatures:
+      - collections.Append ELEMENT [ELEMENT...] COLLECTION
+      - collections.Append COLLECTION1 COLLECTION2
 aliases: [/functions/append]
 ---
 
index 9153e546aeafaaecde6ef0d91d4cd1233f0f6db5..7ffe49053ad6316c168e0f6a8a51e0cbcf63a1de 100644 (file)
@@ -3,11 +3,11 @@ title: collections.Apply
 description: Returns a new collection with each element transformed by the given function.
 categories: []
 keywords: []
-action:
-  aliases: [apply]
-  related: []
-  returnType: '[]any'
-  signatures: [collections.Apply COLLECTION FUNCTION PARAM...]
+params:
+  functions_and_methods:
+    aliases: [apply]
+    returnType: '[]any'
+    signatures: [collections.Apply COLLECTION FUNCTION PARAM...]
 aliases: [/functions/apply]
 ---
 
index 1c785de0b2a03e643dfebbce954638308edea8a3..ce810dc00c2012d705ffdd03985524304a7a64fa 100644 (file)
@@ -3,14 +3,11 @@ title: collections.Complement
 description: Returns the elements of the last collection that are not in any of the others.
 categories: []
 keywords: []
-action:
-  aliases: [complement]
-  related:
-    - functions/collections/Intersect
-    - functions/collections/SymDiff
-    - functions/collections/Union
-  returnType: any
-  signatures: ['collections.Complement COLLECTION [COLLECTION...]']
+params:
+  functions_and_methods:
+    aliases: [complement]
+    returnType: any
+    signatures: ['collections.Complement COLLECTION [COLLECTION...]']
 aliases: [/functions/complement]
 ---
 
@@ -24,11 +21,8 @@ To find the elements within `$c3` that do not exist in `$c1` or `$c2`:
 {{ complement $c1 $c2 $c3 }} → [1 2]
 ```
 
-{{% note %}}
-Make your code simpler to understand by using a [chained pipeline]:
-
-[chained pipeline]: https://pkg.go.dev/text/template#hdr-Pipelines
-{{% /note %}}
+> [!note]
+> Make your code simpler to understand by using a [chained pipeline]:
 
 ```go-html-template
 {{ $c3 | complement $c1 $c2 }} → [1 2]
@@ -55,11 +49,8 @@ To list everything except blog articles (`blog`) and frequently asked questions
 {{ end }}
 ```
 
-{{% note %}}
-Although the example above demonstrates the `complement` function, you could use the [`where`] function as well:
-
-[`where`]: /functions/collections/where/
-{{% /note %}}
+> [!note]
+> Although the example above demonstrates the `complement` function, you could use the [`where`] function as well:
 
 ```go-html-template
 {{ range where site.RegularPages "Type" "not in" (slice "blog" "faqs") }}
@@ -77,4 +68,6 @@ In this example we use the `complement` function to remove [stop words] from a s
 {{ delimit $filtered " " }} → The quick brown fox jumps lazy dog
 ```
 
+[`where`]: /functions/collections/where/
+[chained pipeline]: https://pkg.go.dev/text/template#hdr-Pipelines
 [stop words]: https://en.wikipedia.org/wiki/Stop_word
index b85059d4b2ba3ef777e261bf050ddf90e42f0904..9d09620aa8fcab198a7e254a64a5f248d559c721 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Delimit
 description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
 categories: []
 keywords: []
-action:
-  aliases: [delimit]
-  related:
-    - functions/strings/Split
-  returnType: string
-  signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]']
+params:
+  functions_and_methods:
+    aliases: [delimit]
+    returnType: string
+    signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]']
 aliases: [/functions/delimit]
 ---
 
@@ -22,9 +21,8 @@ Delimit a slice:
 
 Delimit a map:
 
-{{% note %}}
-The `delimit` function sorts maps by key, returning the values.
-{{% /note %}}
+> [!note]
+> The `delimit` function sorts maps by key, returning the values.
 
 ```go-html-template
 {{ $m := dict "b" 2 "a" 1 "c" 3 }}
index a55838e2763a25bedb4a1112db31869f9925ff8c..8aa4281061cac0a41984b8353611f9bda56a2619 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Dictionary
 description: Returns a map composed of the given key-value pairs.
 categories: []
 keywords: []
-action:
-  aliases: [dict]
-  related:
-    - functions/collections/Slice
-  returnType: map[string]any
-  signatures: ['collections.Dictionary [VALUE...]']
+params:
+  functions_and_methods:
+    aliases: [dict]
+    returnType: map[string]any
+    signatures: ['collections.Dictionary [VALUE...]']
 aliases: [/functions/dict]
 ---
 
index 07634d6b891a444b719d95db11204623202df8bd..9a672278d34b11b9f37c9968316a1c4dfaab652e 100644 (file)
@@ -3,14 +3,11 @@ title: collections.First
 description: Returns the given collection, limited to the first N elements.
 categories: []
 keywords: []
-action:
-  aliases: [first]
-  related:
-    - functions/collections/After
-    - functions/collections/Last
-    - methods/pages/Limit
-  returnType: any
-  signatures: [collections.First N COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [first]
+    returnType: any
+    signatures: [collections.First N COLLECTION]
 aliases: [/functions/first]
 ---
 
@@ -23,7 +20,7 @@ aliases: [/functions/first]
 Set `N` to zero to return an empty collection.
 
 ```go-html-template
-{{ $emptyPageCollection := first 0 .Pages}}
+{{ $emptyPageCollection := first 0 .Pages }}
 ```
 
 Use `first` and [`where`] together.
index 0ec45516c26dde0627e64ba136c73294a13c3306..4b269b92a6246df49e0f3f0a08473c63a3673120 100644 (file)
@@ -3,11 +3,11 @@ title: collections.Group
 description: Groups the given page collection by the given key.
 categories: []
 keywords: []
-action:
-  aliases: [group]
-  related: []
-  returnType: any
-  signatures: [collections.Group KEY PAGES]
+params:
+  functions_and_methods:
+    aliases: [group]
+    returnType: any
+    signatures: [collections.Group KEY PAGES]
 aliases: [/functions/group]
 ---
 
index 754c65f83bc7e08944edafd510562dbe52452fb5..e94b4b0ed2b852e35e32b93644f120d0f739644b 100644 (file)
@@ -3,16 +3,11 @@ title: collections.In
 description: Reports whether the given value is a member of the given set.
 categories: []
 keywords: []
-action:
-  aliases: [in]
-  related:
-    - functions/strings/Contains
-    - functions/strings/ContainsAny
-    - functions/strings/ContainsNonSpace
-    - functions/strings/HasPrefix
-    - functions/strings/HasSuffix
-  returnType: bool
-  signatures: [collections.In SET VALUE]
+params:
+  functions_and_methods:
+    aliases: [in]
+    returnType: bool
+    signatures: [collections.In SET VALUE]
 aliases: [/functions/in]
 ---
 
index 977e14d1e3c882cca71a4290acc2213f77972bac..248595961bd6e58a2d42d5daee09e0197e62cbc6 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Index
 description: Returns the object, element, or value associated with the given key or keys.
 categories: []
 keywords: []
-action:
-  aliases: [index]
-  related: []
-  returnType: any
-  signatures:
-    - collections.Index COLLECTION KEY...
+params:
+  functions_and_methods:
+    aliases: [index]
+    returnType: any
+    signatures: [collections.Index COLLECTION KEY...]
 aliases: [/functions/index,/functions/index-function]
 ---
 
index 9e9cc0c7659aacdb2b7e869df67c8faf7b095a67..ffa9c81969a768a5f1a7ee3d5ab533a8db44d073 100644 (file)
@@ -3,14 +3,11 @@ title: collections.Intersect
 description: Returns the common elements of two arrays or slices, in the same order as the first array.
 categories: []
 keywords: []
-action:
-  aliases: [intersect]
-  related:
-    - functions/collections/Complement
-    - functions/collections/SymDiff
-    - functions/collections/Union
-  returnType: any
-  signatures: [collections.Intersect SET1 SET2]
+params:
+  functions_and_methods:
+    aliases: [intersect]
+    returnType: any
+    signatures: [collections.Intersect SET1 SET2]
 aliases: [/functions/intersect]
 ---
 
index 62b81b712a92a09a47552afcde07bd1e96c57c3f..5457df5d4ef17090eccb9f684e90141e629c9f26 100644 (file)
@@ -3,13 +3,11 @@ title: collections.IsSet
 description: Reports whether the key exists within the collection.
 categories: []
 keywords: []
-action:
-  aliases: [isset]
-  related:
-    - functions/go-template/if
-    - functions/go-template/with
-  returnType: bool
-  signatures: [collections.IsSet COLLECTION KEY]
+params:
+  functions_and_methods:
+    aliases: [isset]
+    returnType: bool
+    signatures: [collections.IsSet COLLECTION KEY]
 aliases: [/functions/isset]
 ---
 
@@ -40,6 +38,5 @@ But if the value of `showHeroImage` is `false`, we can't use either `if` or `wit
 {{ end }}
 ```
 
-{{% note %}}
-When using the `isset` function you must reference the key using lower case. See the previous example.
-{{% /note %}}
+> [!note]
+> When using the `isset` function you must reference the key using lower case. See the previous example.
index 6a2109e78993da5831bdf3a0c1c9a24f56ecd932..bd58caea01c2131f0a2c917c3f6c83552c194ec4 100644 (file)
@@ -3,12 +3,11 @@ title: collections.KeyVals
 description: Returns a KeyVals struct.
 categories: []
 keywords: []
-action:
-  aliases: [keyVals]
-  related:
-    - methods/pages/Related
-  returnType: types.KeyValues
-  signatures: [collections.KeyVals KEY VALUE...]
+params:
+  functions_and_methods:
+    aliases: [keyVals]
+    returnType: types.KeyValues
+    signatures: [collections.KeyVals KEY VALUE...]
 aliases: [/functions/keyvals]
 ---
 
@@ -16,7 +15,7 @@ The primary application for this function is the definition of the `namedSlices`
 
 [`Related`]: /methods/pages/related/
 
-See [related content](/content-management/related).
+See [related content](/content-management/related-content/).
 
 ```go-html-template
 {{ $kv := keyVals "foo" "a" "b" "c" }}
index 7739b872638e370d7f5dafb40c0405373eb08abb..f0cfff2197f9038b96a8ac8ea520ef9cc628bee7 100644 (file)
@@ -3,13 +3,11 @@ title: collections.Last
 description: Returns the given collection, limited to the last N elements.
 categories: []
 keywords: []
-action:
-  aliases: [last]
-  related:
-    - functions/collections/After
-    - functions/collections/First
-  returnType: any
-  signatures: [collections.Last N COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [last]
+    returnType: any
+    signatures: [collections.Last N COLLECTION]
 aliases: [/functions/last]
 ---
 
@@ -22,7 +20,7 @@ aliases: [/functions/last]
 Set `N` to zero to return an empty collection.
 
 ```go-html-template
-{{ $emptyPageCollection := last 0 .Pages}}
+{{ $emptyPageCollection := last 0 .Pages }}
 ```
 
 Use `last` and [`where`] together.
index 3f5208cfc06377aff171d435b42a70e0a5c4ee04..c9998be394f529d78c8794e0ba3eb8c4cafed7c0 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Merge
 description: Returns the result of merging two or more maps.
 categories: []
 keywords: []
-action:
-  aliases: [merge]
-  related:
-    - functions/collections/Append
-  returnType: any
-  signatures: [collections.Merge MAP MAP...]
+params:
+  functions_and_methods:
+    aliases: [merge]
+    returnType: any
+    signatures: [collections.Merge MAP MAP...]
 aliases: [/functions/merge]
 ---
 
@@ -64,6 +63,5 @@ Example 4
 {{ $merged.z.a }} → huey
 ```
 
-{{% note %}}
-Regardless of depth, merging only applies to maps. For slices, use [append](/functions/collections/append).
-{{% /note %}}
+> [!note]
+> Regardless of depth, merging only applies to maps. For slices, use [append](/functions/collections/append).
index a76168961ba434f13e031e1bea0f84fa29ec5a99..34fc7f5d6647df3b93ba27b13b49543109cec967 100644 (file)
@@ -3,23 +3,18 @@ title: collections.NewScratch
 description: Returns a locally scoped "scratch pad" to store and manipulate data.
 categories: []
 keywords: []
-action:
-  aliases: [newScratch]
-  related:
-    - methods/page/Store
-    - methods/site/Store
-    - methods/shortcode/Store
-    - functions/hugo/Store
-  returnType: maps.Scratch
-  signatures: [collections.NewScratch ]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [newScratch]
+    returnType: maps.Scratch
+    signatures: [collections.NewScratch ]
 ---
 
 Use the `collections.NewScratch` function to create a locally scoped [scratch pad](g) to store and manipulate data. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below.
 
 ## Methods
 
-###### Set
+### Set
 
 Sets the value of the given key.
 
@@ -28,7 +23,7 @@ Sets the value of the given key.
 {{ $s.Set "greeting" "Hello" }}
 ```
 
-###### Get
+### Get
 
 Gets the value of the given key.
 
@@ -38,7 +33,7 @@ Gets the value of the given key.
 {{ $s.Get "greeting" }} → Hello
 ```
 
-###### Add
+### Add
 
 Adds the given value to existing value(s) of the given key.
 
@@ -65,7 +60,7 @@ For single values, `Add` accepts values that support Go's `+` operator. If the f
 {{ $s.Get "greetings" }} → [Hello Welcome Cheers]
 ```
 
-###### SetInMap
+### SetInMap
 
 Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`.
 
@@ -76,7 +71,7 @@ Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to th
 {{ $s.Get "greetings" }} → map[english:Hello french:Bonjour]
 ```
 
-###### DeleteInMap
+### DeleteInMap
 
 Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 
@@ -88,7 +83,7 @@ Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 {{ $s.Get "greetings" }} → map[french:Bonjour]
 ```
 
-###### GetSortedMapValues
+### GetSortedMapValues
 
 Returns an array of values from `key` sorted by `mapKey`.
 
@@ -99,7 +94,7 @@ Returns an array of values from `key` sorted by `mapKey`.
 {{ $s.GetSortedMapValues "greetings" }} → [Hello Bonjour]
 ```
 
-###### Delete
+### Delete
 
 Removes the given key.
 
@@ -109,9 +104,9 @@ Removes the given key.
 {{ $s.Delete "greeting" }}
 ```
 
-###### Values
+### Values
 
-Returns the raw backing map. Do not use with `Scratch` or `Store` methods on a `Page` object due to concurrency issues.
+Returns the raw backing map. Do not use with `Store` methods on a `Page` object due to concurrency issues.
 
 ```go-html-template
 {{ $s := newScratch }}
index 0eb4094212aa034e87da5f57d3a3675bc15609a2..fd74935b7ec64c7cfc2f767d32b4d949cc6011d1 100644 (file)
@@ -3,13 +3,11 @@ title: collections.Querify
 description: Returns a URL query string composed of the given key-value pairs, encoded and sorted by key.
 categories: []
 keywords: []
-action:
-  aliases: [querify]
-  related:
-    - functions/go-template/urlquery.md
-  returnType: string
-  signatures:
-    - collections.Querify [VALUE...]
+params:
+  functions_and_methods:
+    aliases: [querify]
+    returnType: string
+    signatures: ['collections.Querify [VALUE...]']
 aliases: [/functions/querify]
 ---
 
index d0a449763e7c27d1f4d5c9787c8c2e853107e43c..ee455939c3e4f063153b9882afcd83475f74a917 100644 (file)
@@ -3,14 +3,11 @@ title: collections.Reverse
 description: Reverses the order of a collection.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/collections/Sort
-    - functions/collections/Shuffle
-    - functions/collections/Uniq
-  returnType: any
-  signatures: [collections.Reverse COLLECTION]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: any
+    signatures: [collections.Reverse COLLECTION]
 aliases: [/functions/collections.reverse]
 ---
 
index b572bd7c0d63c093f70ef01973e70a5638072e41..e396f07e3b294695a367d5def207d3c09e9c8b2f 100644 (file)
@@ -3,14 +3,14 @@ title: collections.Seq
 description: Returns a slice of integers.
 categories: []
 keywords: []
-action:
-  aliases: [seq]
-  related: []
-  returnType: '[]int'
-  signatures:
-    - collections.Seq LAST
-    - collections.Seq FIRST LAST
-    - collections.Seq FIRST INCREMENT LAST
+params:
+  functions_and_methods:
+    aliases: [seq]
+    returnType: '[]int'
+    signatures:
+      - collections.Seq LAST
+      - collections.Seq FIRST LAST
+      - collections.Seq FIRST INCREMENT LAST
 aliases: [/functions/seq]
 ---
 
@@ -31,6 +31,5 @@ A contrived example of iterating over a sequence of integers:
 {{ $product }} → 24
 ```
 
-{{% note %}}
-The slice created by the `seq` function is limited to 2000 elements.
-{{% /note %}}
+> [!note]
+> The slice created by the `seq` function is limited to 2000 elements.
index 0f28eb4d80e6db71a0ce973e36b3a17a7dabc8ab..3a27c099a7ad0bec6b8086bc59604481a603215f 100644 (file)
@@ -3,14 +3,11 @@ title: collections.Shuffle
 description: Returns a random permutation of a given array or slice.
 categories: []
 keywords: []
-action:
-  aliases: [shuffle]
-  related:
-    - functions/collections/Reverse
-    - functions/collections/Sort
-    - functions/collections/Uniq
-  returnType: any
-  signatures: [collections.Shuffle COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [shuffle]
+    returnType: any
+    signatures: [collections.Shuffle COLLECTION]
 aliases: [/functions/shuffle]
 ---
 
index 385f9b658d673205c8addff27330647bfa0d668f..76180fabe14c8bf89536a642cc2529cbd0b7b7e6 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Slice
 description: Returns a slice composed of the given values.
 categories: []
 keywords: []
-action:
-  aliases: [slice]
-  related:
-    - functions/collections/Dictionary
-  returnType: any
-  signatures: ['collections.Slice [VALUE...]']
+params:
+  functions_and_methods:
+    aliases: [slice]
+    returnType: any
+    signatures: ['collections.Slice [VALUE...]']
 aliases: [/functions/slice]
 ---
 
index 815260f20aa35091b6d0d4036fe5ca8dd56c0c4a..67e5de5cb3cabfdf66a57bdfde23a9d0628e2230 100644 (file)
@@ -3,15 +3,11 @@ title: collections.Sort
 description: Sorts slices, maps, and page collections.
 categories: []
 keywords: []
-action:
-  aliases: [sort]
-  related:
-    - functions/collections/Reverse
-    - functions/collections/Shuffle
-    - functions/collections/Uniq
-  returnType: any
-  signatures: ['collections.Sort COLLECTION [KEY] [ORDER]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [sort]
+    returnType: any
+    signatures: ['collections.Sort COLLECTION [KEY] [ORDER]']
 aliases: [/functions/sort]
 ---
 
@@ -65,9 +61,8 @@ firstName = "Jean"
 lastName  = "Valjean"
 {{< /code-toggle >}}
 
-{{% note %}}
-When sorting maps, the `KEY` argument must be lowercase.
-{{% /note %}}
+> [!note]
+> When sorting maps, the `KEY` argument must be lowercase.
 
 ### Ascending order {#map-ascending-order}
 
@@ -141,11 +136,8 @@ After sorting:
 
 ## Sort a page collection
 
-{{% note %}}
-Although you can use the `sort` function to sort a page collection, Hugo provides [sorting and grouping methods] as well.
-
-[sorting and grouping methods]: /methods/pages/
-{{% /note %}}
+> [!note]
+> Although you can use the `sort` function to sort a page collection, Hugo provides [sorting and grouping methods] as well.
 
 In this contrived example, sort the site's regular pages by `.Type` in descending order:
 
@@ -154,3 +146,5 @@ In this contrived example, sort the site's regular pages by `.Type` in descendin
   <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
 {{ end }}
 ```
+
+[sorting and grouping methods]: /methods/pages/
index 7eba3ef429f89aee6f3b30acd1eb2724916de3aa..8974d2d3ef71d92f7505fb2c636571e6416bd7b2 100644 (file)
@@ -3,15 +3,11 @@ title: collections.SymDiff
 description: Returns the symmetric difference of two collections.
 categories: []
 keywords: []
-action:
-  aliases: [symdiff]
-  related:
-    - functions/collections/Complement
-    - functions/collections/Intersect
-    - functions/collections/SymDiff
-    - functions/collections/Union
-  returnType: any
-  signatures: [COLLECTION | collections.SymDiff COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [symdiff]
+    returnType: any
+    signatures: [COLLECTION | collections.SymDiff COLLECTION]
 aliases: [/functions/symdiff]
 ---
 
index 7fed49a1086ad839da2ae77276e506ecb694de6d..ce6d6d010f82afd473b9bd4da44504fb2419bbdc 100644 (file)
@@ -3,32 +3,24 @@ title: collections.Union
 description: Given two arrays or slices, returns a new array that contains the elements that belong to either or both arrays/slices.
 categories: []
 keywords: []
-action:
-  aliases: [union]
-  related:
-    - functions/collections/Complement
-    - functions/collections/Intersect
-    - functions/collections/SymDiff
-    - functions/collections/Union
-  returnType: any
-  signatures: [collections.Union SET1 SET2]
+params:
+  functions_and_methods:
+    aliases: [union]
+    returnType: any
+    signatures: [collections.Union SET1 SET2]
 aliases: [/functions/union] 
 ---
 
 Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both.
 
 ```go-html-template
-{{ union (slice 1 2 3) (slice 3 4 5) }}
-<!-- returns [1 2 3 4 5] -->
+{{ union (slice 1 2 3) (slice 3 4 5) }} → [1 2 3 4 5]
 
-{{ union (slice 1 2 3) nil }}
-<!-- returns [1 2 3] -->
+{{ union (slice 1 2 3) nil }} → [1 2 3]
 
-{{ union nil (slice 1 2 3) }}
-<!-- returns [1 2 3] -->
+{{ union nil (slice 1 2 3) }} → [1 2 3]
 
-{{ union nil nil }}
-<!-- returns an error because both arrays/slices have to be of the same type -->
+{{ union nil nil }} → []
 ```
 
 ## OR filter in where query
index 02b590c1874ff65bd4a55ca2e6c4ce94e2839e8c..d19298b212f3af2ae051b1102ca66bcb3af018fc 100644 (file)
@@ -3,15 +3,11 @@ title: collections.Uniq
 description: Returns the given collection, removing duplicate elements.
 categories: []
 keywords: []
-action:
-  aliases: [uniq]
-  related:
-    - functions/collections/Reverse
-    - functions/collections/Shuffle
-    - functions/collections/Sort
-    - functions/collections/Uniq
-  returnType: any
-  signatures: [collections.Uniq COLLECTION]
+params:
+  functions_and_methods:
+    aliases: [uniq]
+    returnType: any
+    signatures: [collections.Uniq COLLECTION]
 aliases: [/functions/uniq]
 ---
 
index 014a063a123529c88a1606a9ab4914d635c52024..1df84afc49234f0e13d3342e59b38f4f6c98525d 100644 (file)
@@ -3,12 +3,11 @@ title: collections.Where
 description: Returns the given collection, removing elements that do not satisfy the comparison condition.
 categories: []
 keywords: []
-action:
-  aliases: [where]
-  related: []
-  returnType: any
-  signatures: ['collections.Where COLLECTION KEY [OPERATOR] VALUE']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [where]
+    returnType: any
+    signatures: ['collections.Where COLLECTION KEY [OPERATOR] VALUE']
 aliases: [/functions/where]
 ---
 
@@ -87,12 +86,12 @@ Use any of the following logical operators:
 `intersect`
 : (`bool`) Reports whether the given field value (a slice) contains one or more elements in common with `VALUE`. See&nbsp;[details](/functions/collections/intersect).
 
-`like` {{< new-in 0.116.0 />}}
-: (`bool`) Reports whether the given field value matches the regular expression specified in `VALUE`. Use the `like` operator to compare `string` values. The `like` operator returns `false` when comparing other data types to the regular expression.
+`like`
+: {{< new-in 0.116.0 />}}
+: (`bool`) Reports whether the given field value matches the [regular expression](g) specified in `VALUE`. Use the `like` operator to compare `string` values. The `like` operator returns `false` when comparing other data types to the regular expression.
 
-{{% note %}}
-The examples below perform comparisons within a page collection, but the same comparisons are applicable to a slice of maps.
-{{% /note %}}
+> [!note]
+> The examples below perform comparisons within a page collection, but the same comparisons are applicable to a slice of maps.
 
 ## String comparison
 
@@ -155,7 +154,7 @@ To return a collection of pages where the "color" page parameter is neither "red
 
 ## Intersection comparison
 
-Compare a [`slice`] to a [`slice`], returning collection elements with common values. This is frequently used when comparing taxonomy terms.
+Compare a `slice` to a `slice`, returning collection elements with common values. This is frequently used when comparing taxonomy terms.
 
 For example, to return a collection of pages where any of the terms in the "genres" taxonomy are "suspense" or "romance":
 
@@ -176,11 +175,10 @@ To return a collection of pages where the "author" page parameter begins with ei
 {{ $pages := where .Site.RegularPages "Params.author" "like" `(?i)^victor` }}
 ```
 
-{{% include "functions/_common/regular-expressions.md" %}}
+{{% include "/_common/functions/regular-expressions.md" %}}
 
-{{% note %}}
-Use the `like` operator to compare string values. Comparing other data types will result in an empty collection.
-{{% /note %}}
+> [!note]
+> Use the `like` operator to compare string values. Comparing other data types will result in an empty collection.
 
 ## Date comparison
 
@@ -188,12 +186,6 @@ Use the `like` operator to compare string values. Comparing other data types wil
 
 There are four predefined front matter dates: [`date`], [`publishDate`], [`lastmod`], and [`expiryDate`]. Regardless of the front matter data format (TOML, YAML, or JSON) these are [`time.Time`] values, allowing precise comparisons.
 
-[`date`]: /methods/page/date/
-[`publishdate`]: /methods/page/publishdate/
-[`lastmod`]: /methods/page/lastmod/
-[`expirydate`]: /methods/page/expirydate/
-[`time.Time`]: https://pkg.go.dev/time#Time
-
 For example, to return a collection of pages that were created before the current year:
 
 ```go-html-template
@@ -205,20 +197,19 @@ For example, to return a collection of pages that were created before the curren
 
 With custom front matter dates, the comparison depends on the front matter data format (TOML, YAML, or JSON).
 
-{{% note %}}
-Using TOML for pages with custom front matter dates enables precise date comparisons.
-{{% /note %}}
+> [!note]
+> Using TOML for pages with custom front matter dates enables precise date comparisons.
 
 With TOML, date values are first-class citizens. TOML has a date data type while JSON and YAML do not. If you quote a TOML date, it is a string. If you do not quote a TOML date value, it is [`time.Time`] value, enabling precise comparisons.
 
 In the TOML example below, note that the event date is not quoted.
 
-{{< code file="content/events/2024-user-conference.md" >}}
+```text {file="content/events/2024-user-conference.md"}
 +++
 title = '2024 User Conference"
 eventDate = 2024-04-01
 +++
-{{< /code >}}
+```
 
 To return a collection of future events:
 
@@ -272,8 +263,6 @@ These are equivalent:
 
 Useful for theme authors, avoid hardcoding section names by using the `where` function with the [`MainSections`] method on a `Site` object.
 
-[`MainSections`]: /methods/site/mainsections/
-
 ```go-html-template
 {{ $pages := where .Site.RegularPages "Section" "in" .Site.MainSections }}
 ```
@@ -281,11 +270,10 @@ Useful for theme authors, avoid hardcoding section names by using the `where` fu
 With this construct, a theme author can instruct users to specify their main sections in the site configuration:
 
 {{< code-toggle file=hugo >}}
-[params]
 mainSections = ['blog','galleries']
 {{< /code-toggle >}}
 
-If `params.mainSections` is not defined in the site configuration, the `MainSections` method returns a slice with one element---the top level section with the most pages.
+If `mainSections` is not defined in the site configuration, the `MainSections` method returns a slice with one element---the top-level section with the most pages.
 
 ## Boolean/undefined comparison
 
@@ -387,13 +375,11 @@ To exclude a page with an undefined field from a boolean _inequality_ test:
 1. Create a collection using a nil comparison
 1. Subtract the second collection from the first collection using the [`collections.Complement`] function.
 
-[`collections.Complement`]: /functions/collections/complement/
-
 This template:
 
 ```go-html-template
 {{ $p1 := where .Site.RegularPages "Params.exclude" "ne" true }}
-{{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil  }}
+{{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil }}
 <ul>
   {{ range $p1 | complement $p2 }}
     <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
@@ -413,7 +399,7 @@ This template:
 
 ```go-html-template
 {{ $p1 := where .Site.RegularPages "Params.exclude" "ne" false }}
-{{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil  }}
+{{ $p2 := where .Site.RegularPages "Params.exclude" "eq" nil }}
 <ul>
   {{ range $p1 | complement $p2 }}
     <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
@@ -428,3 +414,9 @@ Is rendered to:
   <li><a href="/posts/post-1/">Post 2</a></li>
 </ul>
 ```
+
+[`collections.Complement`]: /functions/collections/complement/
+[`date`]: /methods/page/date/
+[`lastmod`]: /methods/page/lastmod/
+[`MainSections`]: /methods/site/mainsections/
+[`time.Time`]: https://pkg.go.dev/time#Time
index 51981f79b72bcbed1ed3c66530c00f5a22bf2728..c7b856f4f274d4fb9212f3d73d280c7789a2ca39 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Collections functions
 linkTitle: collections
-description: Template functions to work with arrays, slices, maps, and page collections.
+description: Use these functions to work with arrays, slices, maps, and page collections.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with arrays, slices, maps, and page collections.
index 997b71e944e1bf1c5ab8c486508046e6467297c7..c004bf4e677b0d5db119c391c84df0d88c078b70 100644 (file)
@@ -3,12 +3,11 @@ title: compare.Conditional
 description: Returns one of two arguments depending on the value of the control argument.
 categories: []
 keywords: []
-action:
-  aliases: [cond]
-  related:
-    - functions/compare/Default
-  returnType: any
-  signatures: [compare.Conditional CONTROL ARG1 ARG2]
+params:
+  functions_and_methods:
+    aliases: [cond]
+    returnType: any
+    signatures: [compare.Conditional CONTROL ARG1 ARG2]
 aliases: [/functions/cond]
 ---
 
index bf859d51ce39aaef602807fffcdeca8c39766001..f8bd06f063936cb4e4e5e5d1d75815b16393c58f 100644 (file)
@@ -2,27 +2,24 @@
 title: compare.Default
 description: Returns the second argument if set, else the first argument.
 keywords: []
-action:
-  aliases: [default]
-  related:
-    - functions/compare/Conditional
-    - functions/go-template/Or
-  returnType: any
-  signatures: [compare.Default DEFAULT INPUT]
+params:
+  functions_and_methods:
+    aliases: [default]
+    returnType: any
+    signatures: [compare.Default DEFAULT INPUT]
 aliases: [/functions/default]
 ---
 
 The `default` function returns the second argument if set, else the first argument.
 
-{{% note %}}
-When the second argument is the boolean `false` value, the `default` function returns `false`. All _other_ falsy values are considered unset.
-
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
-
-To set a default value based on truthiness, use the [`or`] operator instead.
-
-[`or`]: /functions/go-template/or/
-{{% /note %}}
+> [!note]
+> When the second argument is the boolean `false` value, the `default` function returns `false`. All _other_ falsy values are considered unset.
+>
+> The falsy values are `false`, `0`, any `nil` pointer or interface value, any array, slice, map, or string of length zero, and zero `time.Time` values.
+>
+> Everything else is truthy.
+>
+> To set a default value based on truthiness, use the [`or`] operator instead.
 
 The `default` function returns the second argument if set:
 
@@ -46,3 +43,5 @@ The `default` function returns the first argument if the second argument is not
 {{ default 42 slice }} → 42
 {{ default 42 <nil> }} → 42
 ```
+
+[`or`]: /functions/go-template/or/
index a877aeddfb38fa651761fd56eed8a9e86c11120e..583e2e495ad6125da15d6c6defb9e58a6df3c759 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Eq
 description: Returns the boolean truth of arg1 == arg2 || arg1 == arg3.
 categories: []
 keywords: []
-action:
-  aliases: [eq]
-  related:
-    - functions/compare/Ge
-    - functions/compare/Gt
-    - functions/compare/Le
-    - functions/compare/Lt
-    - functions/compare/Ne
-  returnType: bool
-  signatures: ['compare.Eq ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [eq]
+    returnType: bool
+    signatures: ['compare.Eq ARG1 ARG2 [ARG...]']
 aliases: [/functions/eq]
 ---
 
index ce1fd2302a9f2d7776783892b5a1cc7bd976992a..fd793f0c9933d20f47c1a668f2f123c78aa8b02d 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Ge
 description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3.
 categories: []
 keywords: []
-action:
-  aliases: [ge]
-  related:
-    - functions/compare/Eq
-    - functions/compare/Gt
-    - functions/compare/Le
-    - functions/compare/Lt
-    - functions/compare/Ne
-  returnType: bool
-  signatures: ['compare.Ge ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [ge]
+    returnType: bool
+    signatures: ['compare.Ge ARG1 ARG2 [ARG...]']
 aliases: [/functions/ge]
 ---
 
index 9ff3b0c89dd2de8ada6a2cd3bae99aefb4a42428..f48312cf7f16e59ee3c709ebd99ca21175f540ab 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Gt
 description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3.
 categories: []
 keywords: []
-action:
-  aliases: [gt]
-  related:
-    - functions/compare/Eq
-    - functions/compare/Ge
-    - functions/compare/Le
-    - functions/compare/Lt
-    - functions/compare/Ne
-  returnType: bool
-  signatures: ['compare.Gt ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [gt]
+    returnType: bool
+    signatures: ['compare.Gt ARG1 ARG2 [ARG...]']
 aliases: [/functions/gt]
 ---
 
index a0fbed29d9a34d324c1815df9e8191d3782b634e..b490d68073eaab09888bf2b92c6253f6c2c3e0ff 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Le
 description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3.
 categories: []
 keywords: []
-action:
-  aliases: [le]
-  related:
-    - functions/compare/Eq
-    - functions/compare/Ge
-    - functions/compare/Gt
-    - functions/compare/Lt
-    - functions/compare/Ne
-  returnType: bool
-  signatures: ['compare.Le ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [le]
+    returnType: bool
+    signatures: ['compare.Le ARG1 ARG2 [ARG...]']
 aliases: [/functions/le]
 ---
 
index b306a97b5ad019c04b8c34290aa97b85570530bd..a5578cc84c8726c7777b87291b8d2348079099bc 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Lt
 description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3.
 categories: []
 keywords: []
-action:
-  aliases: [lt]
-  related:
-    - functions/compare/Eq
-    - functions/compare/Ge
-    - functions/compare/Gt
-    - functions/compare/Le
-    - functions/compare/Ne
-  returnType: bool
-  signatures: ['compare.Lt ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [lt]
+    returnType: bool
+    signatures: ['compare.Lt ARG1 ARG2 [ARG...]']
 aliases: [/functions/lt]
 ---
 
index dbe0a389871c749f2d3e872fa8a03fcb3fa0537c..8839983f87470c9b913948ff972f3a575de52278 100644 (file)
@@ -3,16 +3,11 @@ title: compare.Ne
 description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3.
 categories: []
 keywords: []
-action:
-  aliases: [ne]
-  related:
-    - functions/compare/Eq
-    - functions/compare/Ge
-    - functions/compare/Gt
-    - functions/compare/Le
-    - functions/compare/Lt
-  returnType: bool
-  signatures: ['compare.Ne ARG1 ARG2 [ARG...]']
+params:
+  functions_and_methods:
+    aliases: [ne]
+    returnType: bool
+    signatures: ['compare.Ne ARG1 ARG2 [ARG...]']
 aliases: [/functions/ne]
 ---
 
index a9b3a7b27c5c79f3a2b33051d10dcc5815f32270..59673a2c85d94d00e41eee76b94b4aa225bae42c 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Compare functions
 linkTitle: compare
-description: Template functions to compare two or more values.
+description: Use these functions to compare two or more values.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to compare two or more values.
index 0255349a325e01ffd583df9e44e6940f27627df0..03bcc57e71caa00ba697b550e8a91d129411711c 100644 (file)
@@ -1,18 +1,18 @@
 ---
 title: crypto.FNV32a
-description: Returns the 32-bit FNV (Fowler–Noll–Vo) non-cryptographic hash of the given string.
+description: Returns the 32-bit FNV (Fowler-Noll-Vo) non-cryptographic hash of the given string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: int
-  signatures: [crypto.FNV32a STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: int
+    signatures: [crypto.FNV32a STRING]
 expiryDate: 2026-07-31 # deprecated 2024-07-31 in v0.129.0
 ---
 
-{{% deprecated-in 0.129.0 %}}
+{{< deprecated-in 0.129.0 >}}
 Use [`hash.FNV32a`] instead.
 
 [`hash.FNV32a`]: /functions/hash/FNV32a/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 1906689a2b3087691f9ba22e805f31a57620425b..5929826dd1884fd774b0c5b3feb89e9db32be46a 100644 (file)
@@ -3,15 +3,11 @@ title: crypto.HMAC
 description: Returns a cryptographic hash that uses a key to sign a message.
 categories: []
 keywords: []
-action:
-  aliases: [hmac]
-  related:
-    - functions/crypto/FNV32a
-    - functions/crypto/MD5
-    - functions/crypto/SHA1
-    - functions/crypto/SHA256
-  returnType: string
-  signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]']
+params:
+  functions_and_methods:
+    aliases: [hmac]
+    returnType: string
+    signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]']
 aliases: [/functions/hmac]
 ---
 
index ba44660df5c26ec94a25c4e836682c90466adbed..89bb8cc1b3520ab02f7ec91b379912acc948a9ef 100644 (file)
@@ -3,15 +3,11 @@ title: crypto.MD5
 description: Hashes the given input and returns its MD5 checksum encoded to a hexadecimal string.
 categories: []
 keywords: []
-action:
-  aliases: [md5]
-  related:
-    - functions/crypto/FNV32a
-    - functions/crypto/HMAC
-    - functions/crypto/SHA1
-    - functions/crypto/SHA256
-  returnType: string
-  signatures: [crypto.MD5 INPUT]
+params:
+  functions_and_methods:
+    aliases: [md5]
+    returnType: string
+    signatures: [crypto.MD5 INPUT]
 aliases: [/functions/md5]
 ---
 
index 204ff038432c73728e9f23388fee36a03d827c3d..c80dac0a47c791cd18a1fd7b2ebfbbde98c56fed 100644 (file)
@@ -3,15 +3,11 @@ title: crypto.SHA1
 description: Hashes the given input and returns its SHA1 checksum encoded to a hexadecimal string.
 categories: []
 keywords: []
-action:
-  aliases: [sha1]
-  related:
-    - functions/crypto/FNV32a
-    - functions/crypto/HMAC
-    - functions/crypto/MD5
-    - functions/crypto/SHA256
-  returnType: string
-  signatures: [crypto.SHA1 INPUT]
+params:
+  functions_and_methods:
+    aliases: [sha1]
+    returnType: string
+    signatures: [crypto.SHA1 INPUT]
 aliases: [/functions/sha,/functions/sha1]
 ---
 
index 6fb65776783ff3fc87aff00adc6189ebadde819a..d0a66c06941bc74cca1efb0e4a9714614657f6d4 100644 (file)
@@ -3,15 +3,11 @@ title: crypto.SHA256
 description: Hashes the given input and returns its SHA256 checksum encoded to a hexadecimal string.
 categories: []
 keywords: []
-action:
-  aliases: [sha256]
-  related:
-    - functions/crypto/FNV32a
-    - functions/crypto/HMAC
-    - functions/crypto/MD5
-    - functions/crypto/SHA1
-  returnType: string
-  signatures: [crypto.SHA256 INPUT]
+params:
+  functions_and_methods:
+    aliases: [sha256]
+    returnType: string
+    signatures: [crypto.SHA256 INPUT]
 aliases: [/functions/sha256]
 ---
 
index 5c95aab6e452fa2e619c4c3b7f75b67b43c4b2f2..5771630d477d72cdaff37b5e69a2ed4b2cfdf6e3 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Crypto functions
 linkTitle: crypto
-description: Template functions to create cryptographic hashes.
+description: Use these functions to create cryptographic hashes.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to create cryptographic hashes.
index 1a1a792ec6e325e999c4ba946238505dc2de1322..9cc698248747ed3163b67716e71552e3bda0bc72 100644 (file)
@@ -3,14 +3,11 @@ title: css.PostCSS
 description: Processes the given resource with PostCSS using any PostCSS plugin.
 categories: []
 keywords: []
-action:
-  aliases: [postCSS]
-  related:
-    - functions/css/Sass
-    - functions/css/TailwindCSS
-  returnType: resource.Resource
-  signatures: ['css.PostCSS [OPTIONS] RESOURCE']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [postCSS]
+    returnType: resource.Resource
+    signatures: ['css.PostCSS [OPTIONS] RESOURCE']
 ---
 
 {{< new-in 0.128.0 />}}
@@ -25,40 +22,40 @@ toc: true
 
 Follow the steps below to transform CSS using any of the available [PostCSS plugins].
 
-[postcss plugins]: https://postcss.org/docs/postcss-plugins
+### Step 1
 
-Step 1
-: Install [Node.js].
+Install [Node.js].
 
-[node.js]: https://nodejs.org/en/download
+### Step 2
 
-Step 2
-: Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to your CSS rules:
+Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to your CSS rules:
 
 ```sh
 npm i -D postcss postcss-cli autoprefixer
 ```
 
-Step 3
-: Create a PostCSS configuration file in the root of your project.
+### Step 3
 
-{{< code file=postcss.config.js >}}
+Create a PostCSS configuration file in the root of your project.
+
+```js {file="postcss.config.js"}
 module.exports = {
   plugins: [
     require('autoprefixer')
   ]
 };
-{{< /code >}}
+```
+
+> [!note]
+> If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example] and issue [#7333].
 
-{{% note %}}
-{{% include "functions/resources/_common/postcss-windows-warning.md" %}}
-{{% /note %}}
+### Step 4
 
-Step 4
-: Place your CSS file within the `assets/css` directory.
+Place your CSS file within the `assets/css` directory.
 
-Step 5
-: Process the resource with PostCSS:
+### Step 5
+
+Process the resource with PostCSS:
 
 ```go-html-template
 {{ with resources.Get "css/main.css" | postCSS }}
@@ -74,13 +71,13 @@ config
 : (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory.
 
 noMap
-: (`bool`) Default is `false`. If `true`, disables inline sourcemaps.
+: (`bool`) Whether to disable inline source maps. Default is `false`.
 
 inlineImports
-: (`bool`) Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once. URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides.
+: (`bool`) Whether to enable inlining of import statements. It does so recursively, but will only import a file once. URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides. Default is `false`.
 
 skipInlineImportsNotFound
-: (`bool`) Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
+: (`bool`) Whether to allow the build process to continue despite unresolved import statements, preserving the original import declarations. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set this option to `true`. Default is `false`."
 
 ```go-html-template
 {{ $opts := dict "config" "config-directory" "noMap" true }}
@@ -124,3 +121,8 @@ module.exports = {
   ]
 }
 ```
+
+[#7333]: https://github.com/gohugoio/hugo/issues/7333
+[Node.js]: https://nodejs.org/en
+[PostCSS plugins]: https://postcss.org/docs/postcss-plugins
+[this example]: https://github.com/postcss/postcss-load-config#packagejson
index 73f7af1ea0811a10dc4dc89711d67f110f4998d2..1d5487130181a15eb2d868ffedc64fba86cc64ae 100644 (file)
@@ -3,16 +3,11 @@ title: css.Sass
 description: Transpiles Sass to CSS.
 categories: []
 keywords: []
-action:
-  aliases: [toCSS]
-  related:
-    - functions/resources/Fingerprint
-    - functions/resources/Minify
-    - functions/css/PostCSS
-    - functions/resources/PostProcess
-  returnType: resource.Resource
-  signatures: ['css.Sass [OPTIONS] RESOURCE']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [toCSS]
+    returnType: resource.Resource
+    signatures: ['css.Sass [OPTIONS] RESOURCE']
 ---
 
 {{< new-in 0.128.0 />}}
@@ -70,10 +65,10 @@ precision
 : (`int`) Precision of floating point math. Not applicable to Dart Sass.
 
 enableSourceMap
-: (`bool`) If `true`, generates a source map.
+: (`bool`) Whether to generate a source map. Default is `false`.
 
 sourceMapIncludeSources
-: (`bool`) If `true`, embeds sources in the generated source map. Not applicable to LibSass.
+: (`bool`) Whether to embed sources in the generated source map. Not applicable to LibSass. Default is `false`.
 
 includePaths
 : (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements.
@@ -128,7 +123,7 @@ Run `hugo env` to list the active transpilers.
 
 ### Installing in a production environment
 
-For [CI/CD] deployments (e.g., GitHub Pages, GitLab Pages, Netlify, etc.) you must edit the workflow to install Dart Sass before Hugo builds the site[^2]. Some providers allow you to use one of the package managers above, or you can download and extract one of the prebuilt binaries.
+For [CI/CD](g) deployments (e.g., GitHub Pages, GitLab Pages, Netlify, etc.) you must edit the workflow to install Dart Sass before Hugo builds the site[^2]. Some providers allow you to use one of the package managers above, or you can download and extract one of the prebuilt binaries.
 
 [^2]: You do not have to do this if (a) you have not modified the assets cache location, and (b) you have not set `useResourceCacheWhen` to `never` in your [site configuration], and (c) you add and commit your `resources` directory to your repository.
 
@@ -149,8 +144,8 @@ To install Dart Sass for your builds on GitLab Pages, the `.gitlab-ci.yml` file
 
 ```yaml
 variables:
-  HUGO_VERSION: 0.141.0
-  DART_SASS_VERSION: 1.83.4
+  HUGO_VERSION: 0.144.2
+  DART_SASS_VERSION: 1.85.0
   GIT_DEPTH: 0
   GIT_STRATEGY: clone
   GIT_SUBMODULE_STRATEGY: recursive
@@ -183,8 +178,8 @@ To install Dart Sass for your builds on Netlify, the `netlify.toml` file should
 
 ```toml
 [build.environment]
-HUGO_VERSION = "0.141.0"
-DART_SASS_VERSION = "1.83.4"
+HUGO_VERSION = "0.144.2"
+DART_SASS_VERSION = "1.85.0"
 NODE_VERSION = "22"
 TZ = "America/Los_Angeles"
 
@@ -229,12 +224,11 @@ If you build Hugo from source and run `mage test -v`, the test will fail if you
 
 [brew.sh]: https://brew.sh/
 [chocolatey.org]: https://community.chocolatey.org/packages/sass
-[ci/cd]: https://en.wikipedia.org/wiki/CI/CD
 [dart sass]: https://sass-lang.com/dart-sass
 [libsass]: https://sass-lang.com/libsass
 [prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
 [scoop.sh]: https://scoop.sh/#/apps?q=sass
-[site configuration]: /getting-started/configuration/#configure-build
+[site configuration]: /configuration/build/
 [snap package]: /installation/linux/#snap
 [snapcraft.io]: https://snapcraft.io/dart-sass
 [starter workflow]: https://github.com/actions/starter-workflows/blob/main/pages/hugo.yml
index 44c5491962d9308792e777f4cc1ec3772b800ee6..6add7373a96c3991a31b22fdc10c1d21ffa23e67 100644 (file)
@@ -3,28 +3,27 @@ title: css.TailwindCSS
 description: Processes the given resource with the Tailwind CSS CLI.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/Fingerprint
-    - functions/resources/Minify
-    - functions/css/PostCSS
-  returnType: resource.Resource
-  signatures: ['css.TailwindCSS [OPTIONS] RESOURCE']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['css.TailwindCSS [OPTIONS] RESOURCE']
 ---
 
 {{< new-in 0.128.0 />}}
 
-Use the `css.TailwindCSS` function to process your Tailwind CSS files.  This function uses the Tailwind CSS CLI to:
+Use the `css.TailwindCSS` function to process your Tailwind CSS files. This function uses the Tailwind CSS CLI to:
 
 1. Scan your templates for Tailwind CSS utility class usage.
 1. Compile those utility classes into standard CSS.
 1. Generate an optimized CSS output file.
 
+> [!caution]
+> Tailwind CSS v4.0 and later requires a relatively [modern browser](https://tailwindcss.com/docs/compatibility#browser-support) to render correctly.
+
 ## Setup
 
-###### Step 1
+### Step 1
 
 Install the Tailwind CSS CLI v4.0 or later:
 
@@ -36,7 +35,7 @@ The TailwindCSS CLI is also available as a [standalone executable] if you want t
 
 [standalone executable]: https://github.com/tailwindlabs/tailwindcss/releases/latest
 
-###### Step 2
+### Step 2
 
 Add this to your site configuration:
 
@@ -58,23 +57,22 @@ source = "(postcss|tailwind)\\.config\\.js"
 target = "css"
 {{< /code-toggle >}}
 
-
-###### Step 3
+### Step 3
 
 Create a CSS entry file:
 
-{{< code file=assets/css/main.css copy=true >}}
+```css {file="assets/css/main.css" copy=true}
 @import "tailwindcss";
 @source "hugo_stats.json";
-{{< /code >}}
+```
 
 Tailwind CSS respects `.gitignore` files. This means that if `hugo_stats.json` is listed in your `.gitignore` file, Tailwind CSS will ignore it. To make `hugo_stats.json` available to Tailwind CSS you must explicitly source it as shown in the example above.
 
-###### Step 4
+### Step 4
 
 Create a partial template to process the CSS with the Tailwind CSS CLI:
 
-{{< code file=layouts/partials/css.html copy=true >}}
+```go-html-template {file="layouts/partials/css.html" copy=true}
 {{ with (templates.Defer (dict "key" "global")) }}
   {{ with resources.Get "css/main.css" }}
     {{ $opts := dict
@@ -92,21 +90,21 @@ Create a partial template to process the CSS with the Tailwind CSS CLI:
     {{ end }}
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
-###### Step 5
+### Step 5
 
 Call the partial template from your base template:
 
-{{< code file=layouts/default/baseof.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <head>
   ...
   {{ partialCached "css.html" . }}
   ...
 <head>
-{{< /code >}}
+```
 
-###### Step 6
+### Step 6
 
 Optionally create a `tailwind.config.js` file in the root of your project as shown below. This is necessary if you use the [Tailwind CSS IntelliSense
 extension] for Visual Studio Code.
@@ -114,7 +112,7 @@ extension] for Visual Studio Code.
 [Tailwind CSS IntelliSense
 extension]: https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss
 
-{{< code file=tailwind.config.js copy=true >}}
+```js {file="tailwind.config.js" copy=true}
 /*
 This file is present to satisfy a requirement of the Tailwind CSS IntelliSense
 extension for Visual Studio Code.
@@ -123,7 +121,7 @@ https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss
 
 The rest of this file is intentionally empty.
 */
-{{< /code >}}
+```
 
 ## Options
 
@@ -137,4 +135,4 @@ inlineImports
 : (`bool`) Whether to enable inlining of `@import` statements. Inlining is performed recursively, but currently once only per file. It is not possible to import the same file in different scopes (root, media query, etc.). Note that this import routine does not care about the CSS specification, so you can have `@import` statements anywhere in the file. Default is `false`.
 
 skipInlineImportsNotFound
-: (`bool`) When `inlineImports` is enabled, we fail the build if an import cannot be resolved. Enable this option to allow the build to continue and leave the import statement in place. Note that the inline importer does not process URL location or imports with media queries, so those will be left as-is even without enabling this option. Default is `false`.
+: (`bool`) Whether to allow the build process to continue despite unresolved import statements, preserving the original import declarations. It is important to note that the inline importer does not process URL-based imports or those with media queries, and these will remain unaltered even when this option is disabled. Default is `false`.
index a83a238198e0bb52db465560d3b9ade95dc94951..9faabbbe99350b9cddb85f1db7056e17e0702133 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: CSS functions
 linkTitle: css
-description: Template functions to work with CSS and Sass files.
+description: Use these functions to work with CSS and Sass files.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with CSS and Sass files.
index be848bce564268c6fb01d7ec01090e4aa554968f..39c71b06cc8db8d18a580f483fdc2e861ca3030d 100644 (file)
@@ -3,23 +3,22 @@ title: data.GetCSV
 description: Returns an array of arrays from a local or remote CSV file, or an error if the file does not exist.
 categories: []
 keywords: []
-action:
-  aliases: [getCSV]
-  related: []
-  returnType: '[][]string'
-  signatures: ['data.GetCSV SEPARATOR INPUT... [OPTIONS]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [getCSV]
+    returnType: '[][]string'
+    signatures: ['data.GetCSV SEPARATOR INPUT... [OPTIONS]']
 expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0
 ---
 
-{{% deprecated-in 0.123.0 %}}
+{{< deprecated-in 0.123.0 >}}
 Instead, use [`transform.Unmarshal`] with a [global resource](g), [page resource](g), or [remote resource](g).
 
 See the [remote data example].
 
 [`transform.Unmarshal`]: /functions/transform/unmarshal/
 [remote data example]: /functions/resources/getremote/#remote-data
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
 
 Given the following directory structure:
 
@@ -36,11 +35,10 @@ Access the data with either of the following:
 {{ $data := getCSV "," "other-files/" "pets.csv" }}
 ```
 
-{{% note %}}
-When working with local data, the file path is relative to the working directory.
-
-You must not place CSV files in the project's `data` directory.
-{{% /note %}}
+> [!note]
+> When working with local data, the file path is relative to the working directory.
+>
+> You must not place CSV files in the project's `data` directory.
 
 Access remote data with either of the following:
 
index 1b42cbf1656ecb811b4c57e68413c2b8ef2d85a3..9cdea928706bad8ba95ca5b4ff142497cf3e7463 100644 (file)
@@ -3,23 +3,22 @@ title: data.GetJSON
 description: Returns a JSON object from a local or remote JSON file, or an error if the file does not exist.
 categories: []
 keywords: []
-action:
-  aliases: [getJSON]
-  related: []
-  returnType: any
-  signatures: ['data.GetJSON INPUT... [OPTIONS]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [getJSON]
+    returnType: any
+    signatures: ['data.GetJSON INPUT... [OPTIONS]']
 expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0
 ---
 
-{{% deprecated-in 0.123.0 %}}
+{{< deprecated-in 0.123.0 >}}
 Instead, use [`transform.Unmarshal`] with a [global resource](g), [page resource](g), or [remote resource](g).
 
 See the [remote data example].
 
 [`transform.Unmarshal`]: /functions/transform/unmarshal/
 [remote data example]: /functions/resources/getremote/#remote-data
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
 
 Given the following directory structure:
 
@@ -36,9 +35,8 @@ Access the data with either of the following:
 {{ $data := getJSON "other-files/" "books.json" }}
 ```
 
-{{% note %}}
-When working with local data, the file path is relative to the working directory.
-{{% /note %}}
+> [!note]
+> When working with local data, the file path is relative to the working directory.
 
 Access remote data with either of the following:
 
index 142d6b5282610c862288127bd6c70453efeab8f9..2177bc528800d8585c04ccc038758af4ce49a40e 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Data functions
 linkTitle: data
-description: Template functions to read local or remote data files.
+description: Use these functions to read local or remote data files.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to read local or remote data files.
index 67b264bedaabb8ec68a48ea32d806d8dbe1eb5bd..df846ac3d0fb9e584574ae6f275734e565cbcf4a 100644 (file)
@@ -3,11 +3,11 @@ title: debug.Dump
 description: Returns an object dump as a string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [debug.Dump VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [debug.Dump VALUE]
 ---
 
 ```go-html-template
@@ -29,6 +29,5 @@ action:
 ]
 ```
 
-{{% note %}}
-Output from this function may change from one release to the next. Use for debugging only.
-{{% /note %}}
+> [!note]
+> Output from this function may change from one release to the next. Use for debugging only.
index 519c195c1d13df75414d68dc4bfe9f5a579c977a..c2cd59211e9f47b7f91ba72d5b6b7fe239386beb 100644 (file)
@@ -3,11 +3,11 @@ title: debug.Timer
 description: Creates a named timer that reports elapsed time to the console.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: debug.Timer
-  signatures: [debug.Timer NAME] 
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: debug.Timer
+    signatures: [debug.Timer NAME] 
 ---
 
 {{< new-in 0.120.0 />}}
index 4188285157ddc0cebc367ec940091e3ea38f05c4..49fe416ed6a85eb11c744865c7cd321b4f2b4601 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Debug functions
 linkTitle: debug
-description: Template functions to debug your templates.
+description: Use these functions to debug your templates.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to debug your templates.
index 69a099bb77871519531247d42b1a698e26dcc044..e2f55eee071bab0e29e5afbc0819fef98ec7765d 100644 (file)
@@ -1,20 +1,20 @@
 ---
 title: diagrams.Goat
-description: Converts ASCII art to an SVG diagram, returning a GoAT diagram object.
+description: Returns an SVGDiagram object created from the given GoAT markup and options.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: diagrams.goatDiagram
-  signatures: ['diagrams.Goat INPUT']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: diagrams.SVGDiagram
+    signatures: [diagrams.Goat MARKUP]
 ---
 
-Useful in a [code block render hook], the `diagram.Goat` function converts ASCII art to an SVG diagram, returning a [GoAT] diagram object with the following methods:
+Useful in a [code block render hook], the `diagrams.Goat` function returns an SVGDiagram object created from the given [GoAT] markup.
 
-[GoAT]: https://github.com/blampe/goat#readme
-[code block render hook]: /render-hooks/code-blocks/
+## Methods
+
+The SVGDiagram object has the following methods:
 
 Inner
 : (`template.HTML`) Returns the SVG child elements without a wrapping `svg` element, allowing you to create your own wrapper.
@@ -30,13 +30,11 @@ Height
 
 ## GoAT Diagrams
 
-Hugo natively supports [GoAT](https://github.com/bep/goat) diagrams with an [embedded code block render hook].
-
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+Hugo natively supports GoAT diagrams with an [embedded code block render hook].
 
 This Markdown:
 
-````
+````text
 ```goat
 .---.     .-.       .-.       .-.     .---.
 | A +--->| 1 |<--->| 2 |<--->| 3 |<---+ B |
@@ -68,7 +66,7 @@ To customize rendering, override Hugo's [embedded code block render hook] for Go
 
 By way of example, let's create a code block render hook to render GoAT diagrams as `figure` elements with an optional caption.
 
-{{< code file=layouts/_default/_markup/render-codeblock-goat.html >}}
+```go-html-template {file="layouts/_default/_markup/render-codeblock-goat.html"}
 {{ $caption := or .Attributes.caption "" }}
 {{ $class := or .Attributes.class "diagram" }}
 {{ $id := or .Attributes.id (printf "diagram-%d" (add 1 .Ordinal)) }}
@@ -81,17 +79,17 @@ By way of example, let's create a code block render hook to render GoAT diagrams
   {{ end }}
   <figcaption>{{ $caption }}</figcaption>
 </figure>
-{{< /code >}}
+```
 
 This Markdown:
 
-{{< code file=content/example.md lang=text >}}
+````text {file="content/example.md" }
 ```goat {class="foo" caption="Diagram 1: Example"}
 .---.     .-.       .-.       .-.     .---.
 | A +--->| 1 |<--->| 2 |<--->| 3 |<---+ B |
 '---'     '-'       '+'       '+'     '---'
 ```
-{{< /code >}}
+````
 
 Is rendered to:
 
@@ -111,3 +109,7 @@ svg.foo {
   font-family: "Segoe UI","Noto Sans",Helvetica,Arial,sans-serif
 }
 ```
+
+[code block render hook]: /render-hooks/code-blocks/
+[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[GoAT]: https://github.com/bep/goat
index e136b4f3308e8fcb88eef9fc866ee88a47c0b7f6..6aa4070713cf955ed595f7c226bafae06e6b8d47 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Diagram functions
 linkTitle: diagrams
-description: Template functions to render diagrams.
+description: Use these functions to render diagrams.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to render diagrams.
index 0745718bbc89884974606b040623d277804c85fe..5237e904fe17a885821efac13ffae90c0fb57381 100644 (file)
@@ -3,12 +3,11 @@ title: encoding.Base64Decode
 description: Returns the base64 decoding of the given content.
 categories: []
 keywords: []
-action:
-  aliases: [base64Decode]
-  related:
-    - functions/encoding/Base64Encode
-  returnType: string
-  signatures: [encoding.Base64Decode INPUT]
+params:
+  functions_and_methods:
+    aliases: [base64Decode]
+    returnType: string
+    signatures: [encoding.Base64Decode INPUT]
 aliases: [/functions/base64Decode]
 ---
 
@@ -29,7 +28,7 @@ To retrieve and render the content:
 {{ with try (resources.GetRemote $url) }}
   {{ with .Err }}
     {{ errorf "%s" . }}
-  {{ else with .Value}}
+  {{ else with .Value }}
     {{ with . | transform.Unmarshal }}
       {{ .content | base64Decode | markdownify }}
     {{ end }}
index 14f67a132f1d69921b0a1f4e3eb343fc562856a5..e19d6773c15ad98e1a6f024cbde58c7aed6d8ccf 100644 (file)
@@ -3,12 +3,11 @@ title: encoding.Base64Encode
 description: Returns the base64 decoding of the given content.
 categories: []
 keywords: []
-action:
-  aliases: [base64Encode]
-  related:
-    - functions/encoding/Base64Decode
-  returnType: string
-  signatures: [encoding.Base64Encode INPUT]
+params:
+  functions_and_methods:
+    aliases: [base64Encode]
+    returnType: string
+    signatures: [encoding.Base64Encode INPUT]
 aliases: [/functions/base64, /functions/base64Encode]
 ---
 
index 475f8a76afabc28c788d4df12bfd13b1ba6b12ca..1d60dd68d0b271d35cd4410cb744bdd794515c7d 100644 (file)
@@ -3,14 +3,11 @@ title: encoding.Jsonify
 description: Encodes the given object to JSON.
 categories: []
 keywords: []
-action:
-  aliases: [jsonify]
-  returnType: template.HTML
-  related:
-    - functions/transform/Remarshal
-    - functions/transform/Unmarshal
-  signatures:
-    - encoding.Jsonify [OPTIONS] INPUT
+params:
+  functions_and_methods:
+    aliases: [jsonify]
+    returnType: template.HTML
+    signatures: ['encoding.Jsonify [OPTIONS] INPUT']
 aliases: [/functions/jsonify]
 ---
 
@@ -34,4 +31,4 @@ prefix
 : (`string`) Indentation prefix. Default is "".
 
 noHTMLEscape
-: (`bool`) Disable escaping of problematic HTML characters inside JSON quoted strings. The default behavior is to escape `&`, `<`, and `>` to `\u0026`, `\u003c`, and `\u003e` to avoid certain safety problems that can arise when embedding JSON in HTML. Default is `false`.
+: (`bool`) Whether to disable escaping of problematic HTML characters inside JSON quoted strings. The default behavior is to escape `&`, `<`, and `>` to `\u0026`, `\u003c`, and `\u003e` to avoid certain safety problems that can arise when embedding JSON in HTML. Default is `false`.
index 3c4c4519ece89615b7ccf24b83dcc12cac9d9035..f2819f0a7b9fb670d55fa591a1e9bef5cf231a09 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Encoding functions
 linkTitle: encoding
-description: Template functions to encode and decode data.
+description: Use these functions to encode and decode data.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to encode and decode data.
index 93f5463511b377454c63a6a559caaae560845b52..799622f0e70bb8ee9267251e095f5295fcfc8402 100644 (file)
@@ -3,18 +3,15 @@ title: fmt.Errorf
 description: Log an ERROR from a template.
 categories: []
 keywords: []
-action:
-  aliases: [errorf]
-  related:
-    - functions/fmt/Erroridf
-    - functions/fmt/Warnf
-    - functions/fmt/Warnidf
-  returnType: string
-  signatures: ['fmt.Errorf FORMAT [INPUT]']
+params:
+  functions_and_methods:
+    aliases: [errorf]
+    returnType: string
+    signatures: ['fmt.Errorf FORMAT [INPUT]']
 aliases: [/functions/errorf]
 ---
 
-{{% include "functions/fmt/_common/fmt-layout.md" %}}
+{{% include "/_common/functions/fmt/format-string.md" %}}
 
 The `errorf` function evaluates the format string, then prints the result to the ERROR log and fails the build.
 
index f442f09bf7a1ef444a0b993271304ff20ed5f223..97d628bac4ad32d3c103a8ed4b454b95ddc24335 100644 (file)
@@ -3,18 +3,15 @@ title: fmt.Erroridf
 description: Log a suppressible ERROR from a template.
 categories: []
 keywords: []
-action:
-  aliases: [erroridf]
-  related:
-    - functions/fmt/Errorf
-    - functions/fmt/Warnf
-    - functions/fmt/Warnidf
-  returnType: string
-  signatures: ['fmt.Erroridf ID FORMAT [INPUT]']
+params:
+  functions_and_methods:
+    aliases: [erroridf]
+    returnType: string
+    signatures: ['fmt.Erroridf ID FORMAT [INPUT]']
 aliases: [/functions/erroridf]
 ---
 
-{{% include "functions/fmt/_common/fmt-layout.md" %}}
+{{% include "/_common/functions/fmt/format-string.md" %}}
 
 The `erroridf` function evaluates the format string, then prints the result to the ERROR log and fails the build. Unlike the [`errorf`] function, you may suppress errors logged by the `erroridf` function by adding the message ID to the `ignoreLogs` array in your site configuration.
 
index 6f3128e5f01c432945daa0f617a93c017e3ba47b..f1d169cfa5e8326d2c18bde3b48d4988e3d51bda 100644 (file)
@@ -3,13 +3,11 @@ title: fmt.Print
 description: Prints the default representation of the given arguments using the standard `fmt.Print` function.
 categories: []
 keywords: []
-action:
-  aliases: [print]
-  related:
-    - functions/fmt/Printf
-    - functions/fmt/Println
-  returnType: string
-  signatures: [fmt.Print INPUT]
+params:
+  functions_and_methods:
+    aliases: [print]
+    returnType: string
+    signatures: [fmt.Print INPUT]
 aliases: [/functions/print]
 ---
 
index 5d0127460a155c4320c1dba1e6fb6de39573b490..68df9860944d768c0810a2474c7c511f915f5e8e 100644 (file)
@@ -3,17 +3,15 @@ title: fmt.Printf
 description: Formats a string using the standard `fmt.Sprintf` function.
 categories: []
 keywords: []
-action:
-  aliases: [printf]
-  related:
-    - functions/fmt/Print
-    - functions/fmt/Println
-  returnType: string
-  signatures: ['fmt.Printf FORMAT [INPUT]']
+params:
+  functions_and_methods:
+    aliases: [printf]
+    returnType: string
+    signatures: ['fmt.Printf FORMAT [INPUT]']
 aliases: [/functions/printf]
 ---
 
-{{% include "functions/fmt/_common/fmt-layout.md" %}}
+{{% include "/_common/functions/fmt/format-string.md" %}}
 
 ```go-html-template
 {{ $var := "world" }}
index a4db56ffb7bef2dd5690863c744e98da12e3d6fc..b7fe608ff60326ca10730b0ebe8faa03b36ba8bd 100644 (file)
@@ -3,13 +3,11 @@ title: fmt.Println
 description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a line break.
 categories: []
 keywords: []
-action:
-  aliases: [println]
-  related:
-    - functions/fmt/Print
-    - functions/fmt/Printf
-  returnType: string
-  signatures: [fmt.Println INPUT]
+params:
+  functions_and_methods:
+    aliases: [println]
+    returnType: string
+    signatures: [fmt.Println INPUT]
 aliases: [/functions/println]
 ---
 
index 643defd30efde4f1cd43e03e7fb87a82cc2fe022..887a8d47f0e5b0f7b41c9c9acd20b2f57b7800b9 100644 (file)
@@ -3,18 +3,15 @@ title: fmt.Warnf
 description: Log a WARNING from a template.
 categories: []
 keywords: []
-action:
-  aliases: [warnf]
-  related:
-    - functions/fmt/Errorf
-    - functions/fmt/Erroridf
-    - functions/fmt/Warnidf
-  returnType: string
-  signatures: ['fmt.Warnf FORMAT [INPUT]']
+params:
+  functions_and_methods:
+    aliases: [warnf]
+    returnType: string
+    signatures: ['fmt.Warnf FORMAT [INPUT]']
 aliases: [/functions/warnf]
 ---
 
-{{% include "functions/fmt/_common/fmt-layout.md" %}}
+{{% include "/_common/functions/fmt/format-string.md" %}}
 
 The `warnf` function evaluates the format string, then prints the result to the WARNING log. Hugo prints each unique message once to avoid flooding the log with duplicate warnings.
 
index 70c109b5b90f79752738e00f06ca9d4b13e3dad0..79ebf81e66f94252246f9b8f2071b8e44c4b69b1 100644 (file)
@@ -3,20 +3,17 @@ title: fmt.Warnidf
 description: Log a suppressible WARNING from a template.
 categories: []
 keywords: []
-action:
-  aliases: [warnidf]
-  related:
-    - functions/fmt/Errorf
-    - functions/fmt/Erroridf
-    - functions/fmt/Warnf
-  returnType: string
-  signatures: ['fmt.Warnidf ID FORMAT [INPUT]']
+params:
+  functions_and_methods:
+    aliases: [warnidf]
+    returnType: string
+    signatures: ['fmt.Warnidf ID FORMAT [INPUT]']
 aliases: [/functions/warnidf]
 ---
 
 {{< new-in 0.123.0 />}}
 
-{{% include "functions/fmt/_common/fmt-layout.md" %}}
+{{% include "/_common/functions/fmt/format-string.md" %}}
 
 The `warnidf` function evaluates the format string, then prints the result to the WARNING log. Unlike the [`warnf`] function, you may suppress warnings logged by the `warnidf` function by adding the message ID to the `ignoreLogs` array in your site configuration.
 
diff --git a/content/en/functions/fmt/_common/_index.md b/content/en/functions/fmt/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/fmt/_common/fmt-layout.md b/content/en/functions/fmt/_common/fmt-layout.md
deleted file mode 100644 (file)
index 09a9ee8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-The documentation for Go's [fmt] package describes the structure and content of the format string.
-
-[fmt]: https://pkg.go.dev/fmt
index 51ef847ca73d180d0d6878952529531b84fd7bdc..d388df112990e934935edbff3905412744987d53 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Fmt functions
 linkTitle: fmt 
-description: Template functions to print strings within a template or to print messages to the terminal
+description: Use these functions to print strings within a template or to print messages to the terminal.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to print strings within a template or to print messages to the terminal.
index 1e609b56ebc994d42253d62aa18b048d464507a2..3d935176ce28fd7481f0aa682bd1f187df8ca9b6 100644 (file)
@@ -1,11 +1,6 @@
 ---
 title: Global functions
 linkTitle: global
-description: Global template functions to access page and site data.
+description: Use these global functions to access page and site data.
 categories: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these global functions to access page and site data.
index 1dc8be515d6db7eeba795f251e6f27222bbda8f1..0d4b8070f5d0126d43339600753ee54684713443 100644 (file)
@@ -3,13 +3,11 @@ title: page
 description: Provides global access to a Page object.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/global/site
-  returnType: 
-  signatures: [page]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: 
+    signatures: [page]
 aliases: [/functions/page]
 ---
 
@@ -27,13 +25,12 @@ When a `Page` object is not in context, you can use the global `page` function:
 {{ page.Params.foo }}
 ```
 
-{{% note %}}
-Do not use the global `page` function in shortcodes, partials called by shortcodes, or cached partials. See [warnings](#warnings) below.
-{{% /note %}}
+> [!note]
+> Do not use the global `page` function in shortcodes, partials called by shortcodes, or cached partials. See [warnings](#warnings) below.
 
 ## Explanation
 
-Hugo almost always passes a `Page` as the data context into the top level template (e.g., `single.html`). The one exception is the multihost sitemap template. This means that you can access the current page with the `.` in the template.
+Hugo almost always passes a `Page` as the data context into the top-level template (e.g., `single.html`). The one exception is the multihost sitemap template. This means that you can access the current page with the `.` in the template.
 
 But when you are deeply nested inside of a [content view](g), [partial](g), or [render hook](g), it is not always practical or possible to access the `Page` object.
 
@@ -99,5 +96,5 @@ When you call the [`Summary`] method, Hugo renders the page content including sh
 
 If Hugo renders the section page before a content page, the cached rendered shortcode will be incorrect. You cannot control the rendering sequence due to concurrency.
 
-[`Summary`]: /methods/page/summary/
 [`partialCached`]: /functions/partials/includecached/
+[`Summary`]: /methods/page/summary/
index a4879fee0186d191326e07dadcfae575a789ccf0..be0c6730e66b845e7d413794ef79813edbcddc39 100644 (file)
@@ -3,12 +3,11 @@ title: site
 description: Provides global access to the current Site object.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/global/page
-  returnType: 
-  signatures: [site]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: 
+    signatures: [site]
 aliases: [/functions/site]
 ---
 
@@ -27,6 +26,5 @@ When the `Site` object is in context you can use the `Site` property:
 {{ $.Site.Params.foo }}
 ```
 
-{{% note %}}
-To simplify your templates, use the global `site` function regardless of whether the `Site` object is in context.
-{{% /note %}}
+> [!note]
+> To simplify your templates, use the global `site` function regardless of whether the `Site` object is in context.
diff --git a/content/en/functions/go-template/_common/_index.md b/content/en/functions/go-template/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/go-template/_common/text-template.md b/content/en/functions/go-template/_common/text-template.md
deleted file mode 100644 (file)
index 4b934c1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-See Go's [text/template] documentation for more information.
-
-[text/template]: https://pkg.go.dev/text/template
diff --git a/content/en/functions/go-template/_common/truthy-falsy.md b/content/en/functions/go-template/_common/truthy-falsy.md
deleted file mode 100644 (file)
index e15e58d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-The falsy values are `false`, `0`, any `nil` pointer or interface value, any array, slice, map, or string of length zero, and zero `time.Time` values.
-
-Everything else is truthy.
index 9075756aa9c2ee9947a2964fe87fe287c6b8ac0f..627dc2849efce403a0ce1eed6f8879d87b54f7b2 100644 (file)
@@ -1,14 +1,7 @@
 ---
 title: Go template functions, operators, and statements
 linkTitle: go template
-description: Template functions, operators, and statements provided by Go's text/template package.
+description: These are the functions, operators, and statements provided by Go's text/template package.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-These are the functions, operators, and statements provided by Go's [text/template] package.
-
-[text/template]: https://pkg.go.dev/text/template
index 6bc8c60a5774c4eca8c508b8b3b7c3dfff3e6773..77906df520f9c04eb868e78193642dd8da9d4e2d 100644 (file)
@@ -3,16 +3,14 @@ title: and
 description: Returns the first falsy argument. If all arguments are truthy, returns the last argument.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/not
-    - functions/go-template/or
-  returnType: any
-  signatures: [and VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: any
+    signatures: [and VALUE...]
 ---
 
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
+{{% include "/_common/functions/truthy-falsy.md" %}}
 
 ```go-html-template
 {{ and 1 0 "" }} → 0 (int)
@@ -22,5 +20,3 @@ action:
 {{ and "a" "b" "c" }} → c (string)
 {{ and "a" 1 true }} → true (bool)
 ```
-
-{{% include "functions/go-template/_common/text-template.md" %}}
index f8a082037984fbe6a02aa06ba2d557aff0cf9b60..bffab1f8cec442b9deaa105b2790e346dc931515 100644 (file)
@@ -3,13 +3,11 @@ title: block
 description: Defines a template and executes it in place.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/define
-    - functions/go-template/end
-  returnType:
-  signatures: [block NAME CONTEXT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [block NAME CONTEXT]
 ---
 
 A block is shorthand for defining a template:
@@ -25,7 +23,7 @@ and then executing it in place:
 ```
 The typical use is to define a set of root templates that are then customized by redefining the block templates within.
 
-{{< code file=layouts/_default/baseof.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <body>
   <main>
     {{ block "main" . }}
@@ -33,16 +31,16 @@ The typical use is to define a set of root templates that are then customized by
     {{ end }}
   </main>
 </body>
-{{< /code >}}
+```
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
 {{ end }}
-{{< /code >}}
+```
 
-{{< code file=layouts/_default/list.html >}}
+```go-html-template {file="layouts/_default/list.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -50,6 +48,6 @@ The typical use is to define a set of root templates that are then customized by
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index 14074d7c08cba96db7413c2ae9aba6101002baeb..9236ec91e2c08d6db7fc0175c7f1e0cacd6dfdc4 100644 (file)
@@ -3,13 +3,11 @@ title: break
 description: Used with the range statement, stops the innermost iteration and bypasses all remaining iterations.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/continue
-    - functions/go-template/range
-  returnType:
-  signatures: [break]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [break]
 ---
 
 This template code:
@@ -30,4 +28,4 @@ Is rendered to:
 <p>foo</p>
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index c8030b8b7e96004e68a62e3f30d0dc28b42bae76..0b9339bf43015e1c405d422f031d3786f3ecce90 100644 (file)
@@ -3,13 +3,11 @@ title: continue
 description: Used with the range statement, stops the innermost iteration and continues to the next iteration.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/break
-    - functions/go-template/range
-  returnType:
-  signatures: [continue]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [continue]
 ---
 
 This template code:
@@ -31,4 +29,4 @@ Is rendered to:
 <p>baz</p>
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index f15dd6ff0768e5705b45f7437b9ded564d94e083..19762a3d6077b3dee5b14edf6ff03dcdd97a13ad 100644 (file)
@@ -3,16 +3,11 @@ title: define
 description: Defines a template.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/block
-    - functions/go-template/end
-    - functions/go-template/template
-    - functions/partials/Include
-    - functions/partials/IncludeCached
-  returnType:
-  signatures: [define NAME]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [define NAME]
 ---
 
 Use with the [`block`] statement:
@@ -52,4 +47,4 @@ Use with the [`template`] function:
 [`template`]: /functions/go-template/block/
 [`partial`]: /functions/partials/include/
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index 698998bd8d883a36724157118591a281fe0c65f0..db3980070a92fa5d6e956295faefbb20e563b2fc 100644 (file)
@@ -3,15 +3,11 @@ title: else
 description: Begins an alternate block for if, with, and range statements.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/if
-    - functions/go-template/range
-    - functions/go-template/with
-    - functions/go-template/end
-  returnType:
-  signatures: [else VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [else VALUE]
 ---
 
 Use with the [`if`] statement:
@@ -62,7 +58,7 @@ Use `else if` to check multiple conditions.
 {{ end }}
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
 [`if`]: /functions/go-template/if/
 [`with`]: /functions/go-template/with/
index 6fb5bbfd6b63c0a6f4725dd08e5946ac5c59451d..6de1207249a473dd35ff67573eb0650727e2b932 100644 (file)
@@ -3,16 +3,11 @@ title: end
 description: Terminates if, with, range, block, and define statements.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/block
-    - functions/go-template/define
-    - functions/go-template/if
-    - functions/go-template/range
-    - functions/go-template/with
-  returnType:
-  signatures: [end]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [end]
 ---
 
 Use with the [`if`] statement:
@@ -56,7 +51,7 @@ Use with the [`define`] statement:
 {{ end }}
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
 [`block`]: /functions/go-template/block/
 [`define`]: /functions/go-template/define/
index 9fdf80e99624a5d2057e1efe5ecb040e1a07cf08..af2989cca19c977cc9c274665e0d590af23cc228 100644 (file)
@@ -3,18 +3,14 @@ title: if
 description: Executes the block if the expression is truthy.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/with
-    - functions/go-template/else
-    - functions/go-template/end
-    - functions/collections/IsSet
-  returnType:
-  signatures: [if EXPR]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [if EXPR]
 ---
 
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
+{{% include "/_common/functions/truthy-falsy.md" %}}
 
 ```go-html-template
 {{ $var := "foo" }}
@@ -49,6 +45,6 @@ Use `else if` to check multiple conditions:
 {{ end }}
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
 [`else`]: /functions/go-template/else/
index 43f150a5ff3499f0629b89d55fff9c5cc9ff6f57..6a13784e3b055a8c61e8bcef6679e3c6451b758b 100644 (file)
@@ -3,15 +3,11 @@ title: len
 description: Returns the length of a string, slice, map, or collection.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Count
-    - functions/strings/CountRunes
-    - functions/strings/CountWords
-    - functions/strings/RuneCount
-  returnType: int
-  signatures: [len VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: int
+    signatures: [len VALUE]
 aliases: [/functions/len]
 ---
 
@@ -48,4 +44,4 @@ You may also determine the number of pages in a collection with:
 {{ site.RegularPages.Len }} → 42
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index 4c7747c7bb7d8d490ee8e01fcf0fbeb02f55270b..fd8b9afaea9de77b1eb8f121c97d5fa9bdc27480 100644 (file)
@@ -3,13 +3,11 @@ title: not
 description: Returns the boolean negation of its single argument.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/and
-    - functions/go-template/or
-  returnType: bool
-  signatures: [not VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [not VALUE]
 ---
 
 Unlike the `and` and `or` operators, the `not` operator always returns a boolean value.
@@ -32,4 +30,4 @@ Use the `not` operator, twice in succession, to cast any value to a boolean valu
 {{ "" | not | not }} → false
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index 0d86196086933742f5d292587b5fb7436f47da22..2f55fe479a55170ea243ba3ddaaed7ae8e4ea139 100644 (file)
@@ -3,16 +3,14 @@ title: or
 description: Returns the first truthy argument. If all arguments are falsy, returns the last argument.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/and
-    - functions/go-template/not
-  returnType: any
-  signatures: [or VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: any
+    signatures: [or VALUE...]
 ---
 
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
+{{% include "/_common/functions/truthy-falsy.md" %}}
 
 ```go-html-template
 {{ or 0 1 2 }} → 1
@@ -23,4 +21,4 @@ action:
 {{ or 0 "" false }} → false
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index 96713c4b759d03a8ab6ffea9cd1ca78b01d6e98b..a06907c79c5b2bb001a751ce9faf2e790516f140 100644 (file)
@@ -3,20 +3,15 @@ title: range
 description: Iterates over a non-empty collection, binds context (the dot) to successive elements, and executes the block.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/break
-    - functions/go-template/continue
-    - functions/go-template/else
-    - functions/go-template/end
-  returnType: 
-  signatures: [range COLLECTION]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: 
+    signatures: [range COLLECTION]
 aliases: [/functions/range]
-toc: true
 ---
 
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
+{{% include "/_common/functions/truthy-falsy.md" %}}
 
 ```go-html-template
 {{ $s := slice "foo" "bar" "baz" }}
@@ -59,9 +54,8 @@ Hugo will throw an error:
 
 The error occurs because we are trying to use the `.Title` method on an integer instead of a `Page` object. Within the `range` block, if we want to render the page title, we need to get the context passed into the template.
 
-{{% note %}}
-Use the `$` to get the context passed into the template.
-{{% /note %}}
+> [!note]
+> Use the `$` to get the context passed into the template.
 
 This template will render the page title three times:
 
@@ -71,11 +65,8 @@ This template will render the page title three times:
 {{ end }}
 ```
 
-{{% note %}}
-Gaining a thorough understanding of context is critical for anyone writing template code.
-{{% /note %}}
-
-[`seq`]: /functions/collections/seq/
+> [!note]
+> Gaining a thorough understanding of context is critical for anyone writing template code.
 
 ## Array or slice of scalars
 
@@ -191,8 +182,9 @@ Is rendered to:
 
 Unlike ranging over an array or slice, Hugo sorts by key when ranging over a map.
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
-[`else`]: /functions/go-template/else/
 [`break`]: /functions/go-template/break/
 [`continue`]: /functions/go-template/continue/
+[`else`]: /functions/go-template/else/
+[`seq`]: /functions/collections/seq/
index df5b2496e960424b5dc06367456690de03ad45a8..eb6ba30cd72bd630b57404d156039a74968e1e8f 100644 (file)
@@ -3,14 +3,11 @@ title: return
 description: Used within partial templates, terminates template execution and returns the given value, if any.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/partials/Include
-    - functions/partials/IncludeCached
-  returnType: any
-  signatures: ['return [VALUE]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: any
+    signatures: ['return [VALUE]']
 ---
 
 The `return` statement is a non-standard extension to Go's [text/template package]. Used within partial templates, the `return` statement terminates template execution and returns the given value, if any.
@@ -19,21 +16,20 @@ The returned value may be of any data type including, but not limited to, [`bool
 
 A `return` statement without a value returns an empty string of type `template.HTML`.
 
-{{% note %}}
-Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks. See [usage](#usage) notes below.
-{{% /note %}}
+> [!note]
+> Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks. See [usage](#usage) notes below.
 
 ## Example
 
 By way of example, let's create a partial template that _renders_ HTML, describing whether the given number is odd or even:
 
-{{< code file="layouts/partials/odd-or-even.html" >}}
+```go-html-template {file="layouts/partials/odd-or-even.html"}
 {{ if math.ModBool . 2 }}
   <p>{{ . }} is even</p>
 {{ else }}
   <p>{{ . }} is odd</p>
 {{ end }}
-{{< /code >}}
+```
 
 When called, the partial renders HTML:
 
@@ -43,9 +39,9 @@ When called, the partial renders HTML:
 
 Instead of rendering HTML, let's create a partial that _returns_ a boolean value, reporting whether the given number is even:
 
-{{< code file="layouts/partials/is-even.html" >}}
+```go-html-template {file="layouts/partials/is-even.html"}
 {{ return math.ModBool . 2 }}
-{{< /code >}}
+```
 
 With this template:
 
@@ -66,19 +62,16 @@ Hugo renders:
 
 See additional examples in the [partial templates] section.
 
-[partial templates]: /templates/partial/#returning-a-value-from-a-partial
-
 ## Usage
 
-{{% note %}}
-Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks.
-{{% /note %}}
+> [!note]
+> Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks.
 
 A partial that returns a value must contain only one `return` statement, placed at the end of the template.
 
 For example:
 
-{{< code file="layouts/partials/is-even.html" >}}
+```go-html-template {file="layouts/partials/is-even.html"}
 {{ $result := false }}
 {{ if math.ModBool . 2 }}
   {{ $result = "even" }}
@@ -86,16 +79,18 @@ For example:
   {{ $result = "odd" }}
 {{ end }}
 {{ return $result }}
-{{< /code >}}
+```
 
-{{% note %}}
-The construct below is incorrect; it contains more than one `return` statement.
-{{% /note %}}
+> [!note]
+> The construct below is incorrect; it contains more than one `return` statement.
 
-{{< code file="layouts/partials/do-not-do-this.html" >}}
+```go-html-template {file="layouts/partials/do-not-do-this.html"}
 {{ if math.ModBool . 2 }}
   {{ return "even" }}
 {{ else }}
   {{ return "odd" }}
 {{ end }}
-{{< /code >}}
+```
+
+[partial templates]: /templates/partial/#returning-a-value-from-a-partial
+[text/template package]: https://pkg.go.dev/text/template
index 0a72acdaa886e107f6c9f6696161ea86f5fd11a2..dac1fa3be6f8ce4dd4b5d54f579c996a478f1ad3 100644 (file)
@@ -3,14 +3,11 @@ title: template
 description: Executes the given template, optionally passing context.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/define
-    - functions/partials/Include
-    - functions/partials/IncludeCached
-  returnType: 
-  signatures: ['template NAME [CONTEXT]']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: 
+    signatures: ['template NAME [CONTEXT]']
 ---
 
 Use the `template` function to execute [embedded templates]. For example:
@@ -42,7 +39,7 @@ The example above can be rewritten using an [inline partial] template:
 {{ end }}
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
 [`partial`]: /functions/partials/include/
 [inline partial]: /templates/partial/#inline-partials
index f3385a04c6039be8e3f61e0df7ed31bab7ba9f31..6aef4da362cab5e998ae055b29aefa5db238745d 100644 (file)
@@ -3,29 +3,28 @@ title: try
 description: Returns a TryValue object after evaluating the given expression.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: TryValue
-  signatures: ['try EXPRESSION']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: TryValue
+    signatures: ['try EXPRESSION']
 ---
 
 {{< new-in 0.141.0 />}}
 
 The `try` statement is a non-standard extension to Go's [text/template] package. It introduces a mechanism for handling errors within templates, mimicking the `try-catch` constructs found in other programming languages.
 
-[text/template]: https://pkg.go.dev/text/template
-
 ## Methods
 
 The `TryValue` object encapsulates the result of evaluating the expression, and provides two methods:
 
-Err
-: (`string`) Returns a string representation of the error thrown by the expression, if an error occurred, or returns `nil` if the expression evaluated without errors.
+### Err
+
+(`string`) Returns a string representation of the error thrown by the expression, if an error occurred, or returns `nil` if the expression evaluated without errors.
 
-Value
-: (`any`) Returns the result of the expression if the evaluation was successful, or returns `nil` if an error occurred while evaluating the expression.
+### Value
+
+(`any`) Returns the result of the expression if the evaluation was successful, or returns `nil` if an error occurred while evaluating the expression.
 
 ## Explanation
 
@@ -88,8 +87,6 @@ Hugo renders the above to:
 
 Error handling is essential when using the [`resources.GetRemote`] function to capture remote resources such as data or images. When calling this function, if the HTTP request fails, Hugo will fail the build.
 
-[`resources.GetRemote`]: /functions/resources/getremote/
-
 Instead of failing the build, we can catch the error and emit a warning:
 
 ```go-html-template
@@ -106,8 +103,9 @@ Instead of failing the build, we can catch the error and emit a warning:
 ```
 In the above, note that the [context](g) within the last conditional block is the `TryValue` object returned by the `try` statement. At this point neither the `Err` nor `Value` methods returned anything, so the current context is not useful. Use the `$` to access the [template context] if needed.
 
-[template context]: /templates/introduction/#template-context
+> [!note]
+> Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil.
 
-{{% note %}}
-Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil.
-{{% /note %}}
+[`resources.GetRemote`]: /functions/resources/getremote/
+[template context]: /templates/introduction/#template-context
+[text/template]: https://pkg.go.dev/text/template
index 946828f5637a871ad2dcc5f52d3cb0e55df7b59b..dc97f867e5b1c5bde57e0bba727d15ccb628fcfa 100644 (file)
@@ -3,12 +3,11 @@ title: urlquery
 description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/collections/Querify
-  returnType: string
-  signatures: ['urlquery VALUE [VALUE...]']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: ['urlquery VALUE [VALUE...]']
 aliases: [/functions/urlquery]
 ---
 
@@ -25,4 +24,4 @@ Is rendered to:
 <a href="https://example.org?url=https%3A%2F%2Fexample.com">Link</a>
 ```
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
index a730f4d2ccb0962a53ddb6c99b8f93a2f5f33cc5..c25ce3fbad0133b109192a48592221b5039e98ca 100644 (file)
@@ -3,20 +3,15 @@ title: with
 description: Binds context (the dot) to the expression and executes the block if expression is truthy.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/if
-    - functions/go-template/else
-    - functions/go-template/end
-    - functions/collections/IsSet
-  returnType:
-  signatures: [with EXPR]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType:
+    signatures: [with EXPR]
 aliases: [/functions/with]
-toc: true
 ---
 
-{{% include "functions/go-template/_common/truthy-falsy.md" %}}
+{{% include "/_common/functions/truthy-falsy.md" %}}
 
 ```go-html-template
 {{ $var := "foo" }}
@@ -78,9 +73,8 @@ Hugo will throw an error:
 
 The error occurs because we are trying to use the `.Title` method on an integer instead of a `Page` object. Inside of the `with` block, if we want to render the page title, we need to get the context passed into the template.
 
-{{% note %}}
-Use the `$` to get the context passed into the template.
-{{% /note %}}
+> [!note]
+> Use the `$` to get the context passed into the template.
 
 This template will render the page title as desired:
 
@@ -90,10 +84,9 @@ This template will render the page title as desired:
 {{ end }}
 ```
 
-{{% note %}}
-Gaining a thorough understanding of context is critical for anyone writing template code.
-{{% /note %}}
+> [!note]
+> Gaining a thorough understanding of context is critical for anyone writing template code.
 
-{{% include "functions/go-template/_common/text-template.md" %}}
+{{% include "/_common/functions/go-template/text-template.md" %}}
 
 [`else`]: /functions/go-template/else/
index b5af775197912e364729d0da4dba390f343b0a1c..b108acff8982d4c3ec96d6aed34824dd09a7cf0a 100644 (file)
@@ -1,18 +1,13 @@
 ---
 title: hash.FNV32a
-description: Returns the 32-bit FNV (Fowler–Noll–Vo) non-cryptographic hash of the given string.
+description: Returns the 32-bit FNV (Fowler-Noll-Vo) non-cryptographic hash of the given string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/hash/Xxhash
-    - functions/crypto/HMAC
-    - functions/crypto/MD5
-    - functions/crypto/SHA1
-    - functions/crypto/SHA256
-  returnType: int
-  signatures: [hash.FNV32a STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: int
+    signatures: [hash.FNV32a STRING]
 aliases: [/functions/crypto.fnv32a]
 ---
 
index 7d35c18e50ffaec2c04807e9e74be1dfdde95895..6a92b2bdcd81fbe71d698fd62b309e8bff445ae7 100644 (file)
@@ -3,18 +3,15 @@ title: hash.XxHash
 description: Returns the 64-bit xxHash non-cryptographic hash of the given string.
 categories: []
 keywords: []
-action:
-  aliases: [xxhash]
-  related:
-    - functions/hash/FNV32a
-    - functions/crypto/HMAC
-    - functions/crypto/MD5
-    - functions/crypto/SHA1
-    - functions/crypto/SHA256
-  returnType: string
-  signatures: [hash.XxHash STRING]
+params:
+  functions_and_methods:
+    aliases: [xxhash]
+    returnType: string
+    signatures: [hash.XxHash STRING]
 ---
 
 ```go-html-template
 {{ hash.XxHash "Hello world" }} → c500b0c912b376d8
 ```
+
+[xxHash](https://xxhash.com/) is a very fast non-cryptographic hash algorithm. Hugo uses [this Go implementation](https://github.com/cespare/xxhash).
index bf21c5b7b50f4cb8c4f2de0def8b032550590f23..956f7fb8da6533a1b40dbdd360e8eb42b3165731 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Hash functions
 linkTitle: hash
-description: Template functions to create non-cryptographic hashes.
+description: Use these functions to create non-cryptographic hashes.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to create non-cryptographic hashes.
index 1fbdbeac6e9c2040fc5b834daa64a0cf2bac2175..a592283b9b93ce21df2a7f587a93726cfb4af0e4 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.BuildDate
 description: Returns the compile date of the Hugo binary.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [hugo.BuildDate]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [hugo.BuildDate]
 ---
 
 The `hugo.BuildDate` function returns the compile date of the Hugo binary, formatted per [RFC 3339].
index cd4f2ce922b427465a35a0f954fffc65574d587e..324e985d1c229e78c6c1364ab36a242c9e1a2112 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.CommitHash
 description: Returns the Git commit hash of the Hugo binary.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [hugo.CommitHash]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [hugo.CommitHash]
 ---
 
 ```go-html-template
index 2f3f75e65d5f1ae2463c57dda018e9a1b67844ce..9d8667ee580117f7859ba79c5f3f8a95314df250 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.Deps
 description: Returns a slice of project dependencies, either Hugo Modules or local theme components.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: '[]hugo.Dependency'
-  signatures: [hugo.Deps]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: '[]hugo.Dependency'
+    signatures: [hugo.Deps]
 ---
 
 The `hugo.Deps` function returns a slice of project dependencies, either Hugo Modules or local theme components. Each dependency contains:
index 374a39f6c46072c8bae6f95fe8a58b0b350baa36..55130625525c9e26a3d6ea3520c479efb8366d86 100644 (file)
@@ -3,13 +3,11 @@ title: hugo.Environment
 description: Returns the current running environment.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/hugo/IsDevelopment
-    - functions/hugo/IsProduction
-  returnType: string
-  signatures: [hugo.Environment]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [hugo.Environment]
 ---
 
 The `hugo.Environment` function returns the current running [environment](g) as defined through the `--environment` command line flag.
index 17eb47e1d44fd3cb1a85eedfd60bbb20da26fc8c..dc72a7af2a7efe3a780c4436d2f8b9b4aba83cff 100644 (file)
@@ -1,15 +1,15 @@
 ---
 title: hugo.Generator
-description: Renders an HTML meta element identifying the software that generated the site. 
+description: Renders an HTML meta element identifying the software that generated the site.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: template.HTML
-  signatures: [hugo.Generator]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: template.HTML
+    signatures: [hugo.Generator]
 ---
 
 ```go-html-template
-{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.141.0">
+{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.144.2">
 ```
index 34c6266bf410aa3d06263ef8c7d7d9c0c1a71a1f..94e310deb376fff81f684b3a61561cbdaca4f851 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.GoVersion
 description: Returns the Go version used to compile the Hugo binary
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [hugo.GoVersion]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [hugo.GoVersion]
 ---
 
 ```go-html-template
index bfbc0eaa153cbcbaf1b8c56195cb63699f484691..cea923acd3162ef7a750e5c540420dec8ac1c4cb 100644 (file)
@@ -3,13 +3,11 @@ title: hugo.IsDevelopment
 description: Reports whether the current running environment is "development".
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/hugo/IsProduction
-    - functions/hugo/Environment
-  returnType: bool
-  signatures: [hugo.IsDevelopment]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [hugo.IsDevelopment]
 ---
 
 {{< new-in 0.120.0 />}}
index 9beac6e4922c8fcb93e7832bdba7d1a7cf7cec78..ab7e0f7b19e171d5d13f878b5780bff52b24f151 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.IsExtended
 description: Reports whether the Hugo binary is either the extended or extended/deploy edition.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: bool
-  signatures: [hugo.IsExtended]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [hugo.IsExtended]
 ---
 
 ```go-html-template
index 5c1cb9f831793308e9fb22009b0511988be1e4ca..605afa79a3ca8495a664e52a0879edec96051f2b 100644 (file)
@@ -3,12 +3,11 @@ title: hugo.IsMultihost
 description: Reports whether each configured language has a unique base URL.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - /functions/hugo/IsMultilingual
-  returnType: bool
-  signatures: [hugo.IsMultihost]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [hugo.IsMultihost]
 ---
 
 {{< new-in 0.124.0 />}}
index 91beb0d52cd2673a7ac56891d532cf3bf72cc3ee..85fc6550f06eca1e115ba1a718ebbf31b900a3a9 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.IsMultilingual
 description: Reports whether there are two or more configured languages.
 categories: []
 keywords: []
-action:
-  related:
-    - /functions/hugo/IsMultihost
-  returnType: bool
-  signatures: [hugo.IsMultilingual]
+params:
+  functions_and_methods:
+    aliases: [] 
+    returnType: bool
+    signatures: [hugo.IsMultilingual]
 ---
 
 {{< new-in 0.124.0 />}}
index 7e9bda0e35e7bc36a028c5bdb7008ad0b53dd34f..e5433c2395dafac5f35ccfb1a54a6702ae240f81 100644 (file)
@@ -3,13 +3,11 @@ title: hugo.IsProduction
 description: Reports whether the current running environment is "production".
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/hugo/IsDevelopment
-    - functions/hugo/Environment
-  returnType: bool
-  signatures: [hugo.IsProduction]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [hugo.IsProduction]
 ---
 
 ```go-html-template
index 0fa42fc15b2cdfbb8e665a928f01b33a22d01f13..840ff060df60c9dd27239655285b37c7f8deac7f 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.IsServer
 description: Reports whether the built-in development server is running.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: bool
-  signatures: [hugo.IsServer]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [hugo.IsServer]
 ---
 
 {{< new-in 0.120.0 />}}
index 4f32509549f80667ce032ae397f70f42c13e5765..08c68414673d32a310d237001b2ed583207b8f4a 100644 (file)
@@ -3,15 +3,10 @@ title: hugo.Store
 description: Returns a globally scoped "scratch pad" to store and manipulate data.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Store
-    - methods/site/Store
-    - methods/shortcode/Store
-    - functions/collections/NewScratch
-  returnType: maps.Scratch
-  signatures: [hugo.Store]
-toc: true
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [hugo.Store]
 ---
 
 {{< new-in 0.139.0 />}}
@@ -20,7 +15,7 @@ Use the `hugo.Store` function to create a globally scoped [scratch pad](g) to st
 
 ## Methods
 
-###### Set
+### Set
 
 Sets the value of the given key.
 
@@ -28,7 +23,7 @@ Sets the value of the given key.
 {{ hugo.Store.Set "greeting" "Hello" }}
 ```
 
-###### Get
+### Get
 
 Gets the value of the given key.
 
@@ -37,7 +32,7 @@ Gets the value of the given key.
 {{ hugo.Store.Get "greeting" }} → Hello
 ```
 
-###### Add
+### Add
 
 Adds the given value to the existing value(s) of the given key.
 
@@ -61,7 +56,7 @@ For single values, `Add` accepts values that support Go's `+` operator. If the f
 {{ hugo.Store.Get "greetings" }} → [Hello Welcome Cheers]
 ```
 
-###### SetInMap
+### SetInMap
 
 Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`.
 
@@ -71,7 +66,7 @@ Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to th
 {{ hugo.Store.Get "greetings" }} → map[english:Hello french:Bonjour]
 ```
 
-###### DeleteInMap
+### DeleteInMap
 
 Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 
@@ -80,9 +75,9 @@ Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 {{ hugo.Store.SetInMap "greetings" "french" "Bonjour" }}
 {{ hugo.Store.DeleteInMap "greetings" "english" }}
 {{ hugo.Store.Get "greetings" }} → map[french:Bonjour]
-```
+  ```
 
-###### GetSortedMapValues
+### GetSortedMapValues
 
 Returns an array of values from `key` sorted by `mapKey`.
 
@@ -92,7 +87,7 @@ Returns an array of values from `key` sorted by `mapKey`.
 {{ hugo.Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]
 ```
 
-###### Delete
+### Delete
 
 Removes the given key.
 
index e6e1207b80217320b2c62dd46512ccf2a26a9a35..7925af981bb55719f82f5c316020d4777c680b82 100644 (file)
@@ -3,13 +3,13 @@ title: hugo.Version
 description: Returns the current version of the Hugo binary.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: hugo.VersionString
-  signatures: [hugo.Version]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: hugo.VersionString
+    signatures: [hugo.Version]
 ---
 
 ```go-html-template
-{{ hugo.Version }} → 0.141.0
+{{ hugo.Version }} → 0.144.2
 ```
index ac3835ea8adea54811e55d0d80242639fa4eea87..e501025589eebe098b4f357dc62d2e74ba504ff2 100644 (file)
@@ -3,11 +3,11 @@ title: hugo.WorkingDir
 description: Returns the project working directory.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [hugo.WorkingDir]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [hugo.WorkingDir]
 ---
 
 ```go-html-template
index c3ad686dac0cc3e62ced8837a064e1a820c5910a..b1c9216c4b13bb03ab931c7421cf81e818a1ab1d 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Hugo functions
 linkTitle: hugo
-description: Template functions to access information about the Hugo application and the current environment. 
+description: Use these functions to access information about the Hugo application and the current environment.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to access information about the Hugo application and the current environment.
index 8e3708eea51c739b748d88db860ce5ab4dd86930..fd8d2ed141112ab3f4adc64c3b4a59e5b925454e 100644 (file)
@@ -3,14 +3,11 @@ title: images.AutoOrient
 description: Returns an image filter that rotates and flips an image as needed per its EXIF orientation tag.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.AutoOrient]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.AutoOrient]
 ---
 
 {{< new-in 0.121.2 />}}
@@ -23,11 +20,10 @@ Create the filter:
 {{ $filter := images.AutoOrient }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
-{{% note %}}
-When using with other filters, specify `images.AutoOrient` first.
-{{% /note %}}
+> [!note]
+> When using with other filters, specify `images.AutoOrient` first.
 
 ```go-html-template
 {{ $filters := slice
index 0001bcba8b009a1e561c836671972b687629efaa..0ddfcba5581075aa22f7dfcef8f88d71d9a7357b 100644 (file)
@@ -3,14 +3,11 @@ title: images.Brightness
 description: Returns an image filter that changes the brightness of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Brightness PERCENTAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Brightness PERCENTAGE]
 ---
 
 The percentage must be in the range [-100, 100] where 0 has no effect. A value of `-100` produces a solid black image, and a value of `100` produces a solid white image.
@@ -23,7 +20,7 @@ Create the image filter:
 {{ $filter := images.Brightness 12 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 29829f9e65365236075b5c45080654577e6377fb..be4a2bce8e6e45c4148efa2b149b59b24aaed284 100644 (file)
@@ -3,14 +3,11 @@ title: images.ColorBalance
 description: Returns an image filter that changes the color balance of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.ColorBalance PCTRED PCTGREEN PCTBLUE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.ColorBalance PCTRED PCTGREEN PCTBLUE]
 ---
 
 The percentage for each channel (red, green, blue) must be in the range [-100, 500].
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.ColorBalance -10 10 50 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index c974103b9fcc52298cf091ee55f715bafe8f0bd9..6b8cd59667a3bc69aebfa6ebe3414076ee04e6bc 100644 (file)
@@ -3,14 +3,11 @@ title: images.Colorize
 description: Returns an image filter that produces a colorized version of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Colorize HUE SATURATION PERCENTAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Colorize HUE SATURATION PERCENTAGE]
 ---
 
 The hue is the angle on the color wheel, typically in the range [0, 360].
@@ -27,7 +24,7 @@ Create the filter:
 {{ $filter := images.Colorize 180 50 20 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 8f79a65f82a35d15e59c3afdc3266764121613bb..59242fb9522d772a11b947426500a1446b6e0520 100644 (file)
@@ -3,18 +3,16 @@ title: images.Config
 description: Returns an image.Config structure from the image at the specified path, relative to the working directory.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: image.Config
-  signatures: [images.Config PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: image.Config
+    signatures: [images.Config PATH]
 aliases: [/functions/imageconfig]
 ---
 
 See [image processing] for an overview of Hugo's image pipeline.
 
-[image processing]: /content-management/image-processing/
-
 ```go-html-template
 {{ $ic := images.Config "/static/images/a.jpg" }}
 
@@ -24,10 +22,9 @@ See [image processing] for an overview of Hugo's image pipeline.
 
 Supported image formats include GIF, JPEG, PNG, TIFF, and WebP.
 
-{{% note %}}
-This is a legacy function, superseded by the [`Width`] and [`Height`] methods for [global resources](g), [page resources](g), and [remote resources](g). See the [image processing] section for details.
+> [!note]
+This is a legacy function, superseded by the [`Width`] and [`Height`] methods for [global resources](g), [page resources](g), and [remote resources](g). See the [image processing] section for details.
 
-[`Width`]: /methods/resource/width/
 [`Height`]: /methods/resource/height/
+[`Width`]: /methods/resource/width/
 [image processing]: /content-management/image-processing/
-{{% /note %}}
index 532ae8c9cbbece3140cca6690f679ce391dd8aa4..f5d6074400960355adbe1648ec195e42321a6471 100644 (file)
@@ -3,14 +3,11 @@ title: images.Contrast
 description: Returns an image filter that changes the contrast of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Contrast PERCENTAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Contrast PERCENTAGE]
 ---
 
 The percentage must be in the range [-100, 100] where 0 has no effect. A value of `-100` produces a solid grey image, and a value of `100` produces an over-contrasted image.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.Contrast -20 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index d6ae603a8c205ef08fc9e0000251dce9d9fe2f12..eab7743f7b1ba597fde5dc7d34a18036f34f9035 100644 (file)
@@ -3,16 +3,11 @@ title: images.Dither
 description: Returns an image filter that dithers an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - functions/images/Process
-    - methods/resource/Colors
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: ['images.Dither [OPTIONS]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: ['images.Dither [OPTIONS]']
 ---
 
 {{< new-in 0.123.0 />}}
@@ -28,7 +23,7 @@ method
 : (`string`) The dithering method. See the [dithering methods](#dithering-methods) section below for a list of the available methods. Default is `FloydSteinberg`.
 
 serpentine
-: (`bool`) Applicable to error diffusion dithering methods, serpentine controls whether the error diffusion matrix is applied in a serpentine manner, meaning that it goes right-to-left every other line. This greatly reduces line-type artifacts. Default is `true`.
+: (`bool`) Applicable to error diffusion dithering methods, whether to apply the error diffusion matrix in a serpentine manner, meaning that it goes right-to-left every other line. This greatly reduces line-type artifacts. Default is `true`.
 
 strength
 : (`float`) The strength at which to apply the dithering matrix, typically a value in the range [0, 1]. A value of `1.0` applies the dithering matrix at 100% strength (no modification of the dither matrix). The `strength` is inversely proportional to contrast; reducing the strength increases the contrast. Setting `strength` to a value such as `0.8` can be useful to reduce noise in the dithered image. Default is `1.0`.
@@ -57,13 +52,13 @@ Or create the filter using the default settings:
 {{ $filter := images.Dither }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Dithering methods
 
 See the [Go documentation] for descriptions of each of the dithering methods below.
 
-[Go documentation]: https://pkg.go.dev/github.com/makeworld-the-better-one/dither/v2#pkg-variables 
+[Go documentation]: https://pkg.go.dev/github.com/makeworld-the-better-one/dither/v2#pkg-variables
 
 Error diffusion dithering methods:
 
index 2961d7f47825e20e5fbe3c5e3c5bca3a1fae75ff..1f2c268be56e71bc7005a8cc14121757b498de1e 100644 (file)
@@ -3,13 +3,11 @@ title: images.Filter
 description: Applies one or more image filters to the given image resource.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - methods/resource/Filter
-  returnType: images.ImageResource
-  signatures: [images.Filter FILTERS... IMAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.ImageResource
+    signatures: [images.Filter FILTERS... IMAGE]
 ---
 
 Apply one or more [image filters](#image-filters) to the given image.
@@ -64,4 +62,4 @@ You can also apply image filters using the [`Filter`] method on a `Resource` obj
 
 Use any of these filters with the `images.Filter` function, or with the `Filter` method on a `Resource` object.
 
-{{< list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude >}}
+{{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}}
index affbdcfa8fa31598851b870a4affc1ea764b2209..d8cb076f1c32d25594c1c2f547fc87d1de2d4f20 100644 (file)
@@ -3,14 +3,11 @@ title: images.Gamma
 description: Returns an image filter that performs gamma correction on an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Gamma GAMMA]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Gamma GAMMA]
 ---
 
 The gamma value must be positive. A value greater than 1 lightens the image, while a value less than 1 darkens the image. The filter has no effect when the gamma value is&nbsp;1.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.Gamma 1.667 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index e2f49a847a1e27a30f239f378eb28ce21ccda27c..c5eb136e2379e5fcb7200964ab3ac749300e0dee 100644 (file)
@@ -3,14 +3,11 @@ title: images.GaussianBlur
 description: Returns an image filter that applies a gaussian blur to an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.GaussianBlur SIGMA]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.GaussianBlur SIGMA]
 ---
 
 The sigma value must be positive, and indicates how much the image will be blurred. The blur-affected radius is approximately 3 times the sigma value.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.GaussianBlur 5 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index d8a89b7f2655269a628416cc4fd1519c8290ca5a..d3651b8dc3a9c1ec5a30658c9b281d58c0a5847b 100644 (file)
@@ -3,14 +3,11 @@ title: images.Grayscale
 description: Returns an image filter that produces a grayscale version of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Grayscale]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Grayscale]
 ---
 
 ## Usage
@@ -21,7 +18,7 @@ Create the filter:
 {{ $filter := images.Grayscale }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 6eafac43788ab302f3630c76f735fe04a98590ce..f334eebd848ceaa7686a4d8a7f7eedfb39ea0c29 100644 (file)
@@ -3,14 +3,11 @@ title: images.Hue
 description: Returns an image filter that rotates the hue of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Hue SHIFT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Hue SHIFT]
 ---
 
 The hue angle shift is typically in the range [-180, 180] where 0 has no effect.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.Hue -15 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 1ee85e5145cd73848c6110da801bbeaa4b0d0aa0..0f9f9a9d2f8eab55175fb9bf884e91928b4da3f7 100644 (file)
@@ -3,14 +3,11 @@ title: images.Invert
 description: Returns an image filter that negates the colors of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Invert]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Invert]
 ---
 
 ## Usage
@@ -21,7 +18,7 @@ Create the filter:
 {{ $filter := images.Invert }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 8116e894692f3df7f10260602fa72c64416d442c..4f3b4aa3f10fb389ecb57e78b25de4716681a292 100644 (file)
@@ -3,23 +3,19 @@ title: images.Mask
 description: Returns an image filter that applies a mask to the source image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Mask RESOURCE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Mask RESOURCE]
 ---
 
 {{< new-in 0.141.0 />}}
 
 The `images.Mask` filter applies a mask to an image. Black pixels in the mask make the corresponding areas of the base image transparent, while white pixels keep them opaque. Color images are converted to grayscale for masking purposes. The mask is automatically resized to match the dimensions of the base image.
 
-{{% note %}}
-Of the formats supported by Hugo's imaging pipelie, only PNG and WebP have an alpha channel to support transparency. If your source image has a different format and you require transparent masked areas, convert it to either PNG or WebP as shown in the example below.
-{{% /note %}}
+> [!note]
+> Of the formats supported by Hugo's imaging pipeline, only PNG and WebP have an alpha channel to support transparency. If your source image has a different format and you require transparent masked areas, convert it to either PNG or WebP as shown in the example below.
 
 When applying a mask to a non-transparent image format such as JPEG, the masked areas will be filled with the color specified by the `bgColor` parameter in your [site configuration]. You can override that color with a `Process` image filter:
 
@@ -27,8 +23,6 @@ When applying a mask to a non-transparent image format such as JPEG, the masked
 {{ $filter := images.Process "#00ff00" }}
 ```
 
-[site configuration]: /content-management/image-processing/#imaging-configuration
-
 ## Usage
 
 Create a slice of filters, one for WebP conversion and the other for mask application:
@@ -59,9 +53,6 @@ You can also apply the filter using the [`Filter`] method on a 'Resource' object
 {{ end }}
 ```
 
-[`images.Filter`]: /functions/images/filter/
-[`Filter`]: /methods/resource/filter/
-
 ## Example
 
 Mask
@@ -78,3 +69,7 @@ Mask
   filterArgs="images/examples/mask.png"
   example=true
 >}}
+
+[`Filter`]: /methods/resource/filter/
+[`images.Filter`]: /functions/images/filter/
+[site configuration]: /configuration/imaging/
index 32b1bd23c1d56dfd4058c623cf55d73b3899ac70..b9dcf3fd2ecf32d9ab5bbeec7c42dab354e71658 100644 (file)
@@ -3,14 +3,11 @@ title: images.Opacity
 description: Returns an image filter that changes the opacity of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Opacity OPACITY]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Opacity OPACITY]
 ---
 
 {{< new-in 0.119.0 />}}
@@ -25,7 +22,7 @@ Create the filter:
 {{ $filter := images.Opacity 0.65 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 The `images.Opacity` filter is most useful for target formats such as PNG and WebP that support transparency. If the source image does not support transparency, combine this filter with the `images.Process` filter:
 
index d1cd7cf3f8dc5079f63323731086226749ea4b99..8e5eec3d150cee773a32ae711a761fea9ea754ae 100644 (file)
@@ -3,14 +3,11 @@ title: images.Overlay
 description: Returns an image filter that overlays the source image at the given coordinates, relative to the upper left corner.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Overlay RESOURCE X Y]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Overlay RESOURCE X Y]
 ---
 
 ## Usage
@@ -35,7 +32,7 @@ Create the filter:
 {{ $filter := images.Overlay $overlay 20 20 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index e2c2695a1fba9f07e56a01409c1800104af964cc..da15a44cac3fa9f90fffaa021887c5f7d8f9ff46 100644 (file)
@@ -3,14 +3,11 @@ title: images.Padding
 description: Returns an image filter that resizes the image canvas without resizing the image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: ['images.Padding V1 [V2] [V3] [V4] [COLOR]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: ['images.Padding V1 [V2] [V3] [V4] [COLOR]']
 ---
 
 {{< new-in 0.120.0 />}}
@@ -28,7 +25,7 @@ Create the filter:
 {{ $filter := images.Padding 20 40 "#976941" }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 Combine with the [`Colors`] method to create a border with one of the image's most dominant colors:
 
index 2016877ed85cd2170cce2571e6f7c08436d00af3..954950c8b375a1a4cb340a477f43946cf52a2c3d 100644 (file)
@@ -3,14 +3,11 @@ title: images.Pixelate
 description: Returns an image filter that applies a pixelation effect to an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Pixelate SIZE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Pixelate SIZE]
 ---
 
 ## Usage
@@ -21,7 +18,7 @@ Create the filter:
 {{ $filter := images.Pixelate 4 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 959770c65b77cc5fa1d7278d59df65b9b4a6d91b..134c40c5a7792e419f22eee0422f61051d723aee 100644 (file)
@@ -3,15 +3,11 @@ title: images.Process
 description: Returns an image filter that processes the given image using the given specification.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-    - methods/resource/Process
-  returnType: images.filter
-  signatures: [images.Process SPEC]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Process SPEC]
 ---
 
 {{< new-in 0.119.0 />}}
@@ -101,7 +97,7 @@ Create a filter:
 {{ $filter := images.Process "resize 256x q40 webp" }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index e3f914fd1977f2b45025b817d3542de2f871edeb..eee2dff14a05215ab43cf0576ba19d7c236063b4 100644 (file)
@@ -2,13 +2,11 @@
 title: images.QR
 description: Encodes the given text into a QR code using the specified options, returning an image resource.
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: images.ImageResource
-  signatures: ['images.QR TEXT [OPTIONS]']
-toc: true
-math: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.ImageResource
+    signatures: ['images.QR TEXT [OPTIONS]']
 ---
 
 {{< new-in 0.141.0 />}}
@@ -21,19 +19,17 @@ The `images.QR` function encodes the given text into a [QR code] using the speci
 
 Although the default option values are sufficient for most applications, you should test the rendered QR code both on-screen and in print.
 
-[QR code]: https://en.wikipedia.org/wiki/QR_code
-
 ## Options
 
 level
 : (`string`) The error correction level to use when encoding the text, one of `low`, `medium`, `quartile`, or `high`. Default is `medium`.
 
-Error correction level|Redundancy
-:--|:--|:--
-low|20%
-medium|38%
-quartile|55%
-high|65%
+  Error correction level|Redundancy
+  :--|:--|:--
+  low|20%
+  medium|38%
+  quartile|55%
+  high|65%
 
 scale
 : (`int`) The number of image pixels per QR code module. Must be greater than or equal to `2`. Default is `4`.
@@ -41,8 +37,6 @@ scale
 targetDir
 : (`string`) The subdirectory within the [`publishDir`] where Hugo will place the generated image. Use Unix-style slashes (`/`) to separarate path segments. If empty or not provided, the image is placed directly in the `publishDir` root. Hugo automatically creates the necessary subdirectories if they don't exist.
 
-[`publishDir`]: /getting-started/configuration/#publishdir
-
 ## Examples
 
 To create a QR code using the default values for `level` and `scale`:
@@ -74,7 +68,7 @@ Specify `level`, `scale`, and `targetDir` as needed to achieve the desired resul
 
 To include a QR code that points to the `Permalink` of the current page:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ with images.QR .Permalink }}
   <img
     src="{{ .RelPermalink }}"
@@ -85,7 +79,7 @@ To include a QR code that points to the `Permalink` of the current page:
     loading="lazy"
   >
 {{ end }}
-{{< /code >}}
+```
 
 Then hide the QR code with CSS unless printing the page:
 
@@ -116,9 +110,8 @@ If the QR code will be printed, use the default `scale` value of `4` pixels per
 
 Avoid using Hugo's image processing methods to resize QR codes. Resizing can introduce blurring due to anti-aliasing when a QR code module occupies a fractional number of pixels.
 
-{{% note %}}
-Always test the rendered QR code both on-screen and in print.
-{{% /note %}}
+> [!note]
+> Always test the rendered QR code both on-screen and in print.
 
 ## Shortcode
 
@@ -140,4 +133,6 @@ https://gohugo.io
 
 The `qr` shortcode accepts several arguments including `level` and `scale`. See the [related documentation] for details.
 
+[`publishDir`]: /configuration/all/#publishdir
+[QR code]: https://en.wikipedia.org/wiki/QR_code
 [related documentation]: /shortcodes/qr/
index 118bd02130309917c85b877eb4811f90ce0dc7d1..d1dd48b2450e2d211f7c5a653ad5e869ec1f0afd 100644 (file)
@@ -3,14 +3,11 @@ title: images.Saturation
 description: Returns an image filter that changes the saturation of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Saturation PERCENTAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Saturation PERCENTAGE]
 ---
 
 The percentage must be in the range [-100, 500] where 0 has no effect.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.Saturation 65 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 9f0b7adfb94304906d217ac421d12da094a5d037..ae43045db7643ffe4d1107ba86c1aa16da8397a5 100644 (file)
@@ -3,14 +3,11 @@ title: images.Sepia
 description: Returns an image filter that produces a sepia-toned version of an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Sepia PERCENTAGE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Sepia PERCENTAGE]
 ---
 
 The percentage must be in the range [0, 100] where 0 has no effect.
@@ -23,7 +20,7 @@ Create the filter:
 {{ $filter := images.Sepia 75 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index 32765f9238c61efa70b7bdf01ebc3ec81eced227..9bfcaf91bc5dba234e1dd29267d0f8c5ad15a90d 100644 (file)
@@ -3,14 +3,11 @@ title: images.Sigmoid
 description: Returns an image filter that changes the contrast of an image using a sigmoidal function.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.Sigmoid MIDPOINT FACTOR]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.Sigmoid MIDPOINT FACTOR]
 ---
 
 This is a non-linear contrast change useful for photo adjustments; it preserves highlight and shadow detail.
@@ -27,7 +24,7 @@ Create the filter:
 {{ $filter := images.Sigmoid 0.6 -4 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
index c8d23565c08dab40f9b6aaacca11e6cd1885e402..94cdb4e9de5f75d2503f6c5ac25ebf8070e666af 100644 (file)
@@ -3,14 +3,11 @@ title: images.Text
 description: Returns an image filter that adds text to an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: ['images.Text TEXT [OPTIONS]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: ['images.Text TEXT [OPTIONS]']
 ---
 
 ## Options
@@ -18,7 +15,7 @@ toc: true
 Although none of the options are required, at a minimum you will want to set the `size` to be some reasonable percentage of the image height.
 
 alignx
- {{< new-in 0.141.0 />}}
+: {{< new-in 0.141.0 />}}
 : (`string`) The horizontal alignment of the text relative to the horizontal offset, one of `left`, `center`, or `right`. Default is `left`.
 
 color
@@ -27,8 +24,6 @@ color
 font
 : (`resource.Resource`) The font can be a [global resource](g), a [page resource](g), or a [remote resource](g). Default is [Go Regular], a proportional sans-serif TrueType font.
 
-[Go Regular]: https://go.dev/blog/go-fonts#sans-serif
-
 linespacing
 : (`int`) The number of pixels between each line. For a line height of 1.4, set the `linespacing` to 0.4 multiplied by the `size`. Default is `2`.
 
@@ -41,6 +36,8 @@ x
 y
 : (`int`) The vertical offset, in pixels, relative to the top of the image. Default is `10`.
 
+[Go Regular]: https://go.dev/blog/go-fonts#sans-serif
+
 ## Usage
 
 Set the text and paths:
index 9ea58f2b645dc31dd3bbc91bdd23c4d68914aa61..9c06eb5e1230ed40432bbed10769e86c0b83b4c7 100644 (file)
@@ -3,14 +3,11 @@ title: images.UnsharpMask
 description: Returns an image filter that sharpens an image.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/images/Filter
-    - methods/resource/Filter
-  returnType: images.filter
-  signatures: [images.UnsharpMask SIGMA AMOUNT THRESHOLD]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: images.filter
+    signatures: [images.UnsharpMask SIGMA AMOUNT THRESHOLD]
 ---
 
 The sigma argument is used in a gaussian function and affects the radius of effect. Sigma must be positive. The sharpen radius is approximately 3 times the sigma value.
@@ -27,7 +24,7 @@ Create the filter:
 {{ $filter := images.UnsharpMask 10 0.4 0.03 }}
 ```
 
-{{% include "functions/images/_common/apply-image-filter.md" %}}
+{{% include "/_common/functions/images/apply-image-filter.md" %}}
 
 ## Example
 
diff --git a/content/en/functions/images/_common/_index.md b/content/en/functions/images/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/images/_common/apply-image-filter.md b/content/en/functions/images/_common/apply-image-filter.md
deleted file mode 100644 (file)
index 08e0823..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Apply the filter using the [`images.Filter`] function:
-
-[`images.Filter`]: /functions/images/filter/
-
-```go-html-template
-{{ with resources.Get "images/original.jpg" }}
-  {{ with . | images.Filter $filter }}
-    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
-  {{ end }}
-{{ end }}
-```
-
-You can also apply the filter using the [`Filter`] method on a `Resource` object:
-
-[`Filter`]: /methods/resource/filter/
-
-```go-html-template
-{{ with resources.Get "images/original.jpg" }}
-  {{ with .Filter $filter }}
-    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
-  {{ end }}
-{{ end }}
-```
index 13542ea730656ee1273432c7b89c48043ce98bef..f92e16e7ac7dd48fac5b975c9eb28b9798944f8f 100644 (file)
@@ -4,9 +4,4 @@ linkTitle: images
 description: Use these functions to create an image filter, apply an image filter to an image, and to retrieve image information.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to create an image filter, apply an image filter to an image, and to retrieve image information.
index 71b4a5fd2df9d4a33e0e4ccbe52f78f34f659a7a..d3d785243eea5e4bf3ba91403d9bca4ab63adfd0 100644 (file)
@@ -3,13 +3,11 @@ title: inflect.Humanize
 description: Returns the humanized version of the input with the first letter capitalized.
 categories: []
 keywords: []
-action:
-  aliases: [humanize]
-  related:
-    - functions/inflect/Pluralize
-    - functions/inflect/Singularize
-  returnType: string
-  signatures: [inflect.Humanize INPUT]
+params:
+  functions_and_methods:
+    aliases: [humanize]
+    returnType: string
+    signatures: [inflect.Humanize INPUT]
 aliases: [/functions/humanize]
 ---
 
index c25f896170125c21faa6249b1b540213f1ccd9df..f168770d3642fbe5d45ed877a7964c47ebc6abb4 100644 (file)
@@ -3,13 +3,11 @@ title: inflect.Pluralize
 description: Pluralizes the given word according to a set of common English pluralization rules.
 categories: []
 keywords: []
-action:
-  aliases: [pluralize]
-  related:
-    - functions/inflect/Humanize
-    - functions/inflect/Singularize
-  returnType: string
-  signatures: [inflect.Pluralize INPUT]
+params:
+  functions_and_methods:
+    aliases: [pluralize]
+    returnType: string
+    signatures: [inflect.Pluralize INPUT]
 aliases: [/functions/pluralize]
 ---
 
index d2a8572f61cba9c710bc39a9ced1272bdff19c59..41e05b78460df02cf16bfc43ebdab351f0171154 100644 (file)
@@ -3,13 +3,11 @@ title: inflect.Singularize
 description: Singularizes the given word according to a set of common English singularization rules.
 categories: []
 keywords: []
-action:
-  aliases: [singularize]
-  related:
-    - functions/inflect/Humanize
-    - functions/inflect/Pluralize
-  returnType: string
-  signatures: [inflect.Singularize INPUT]
+params:
+  functions_and_methods:
+    aliases: [singularize]
+    returnType: string
+    signatures: [inflect.Singularize INPUT]
 aliases: [/functions/singularize]
 ---
 
index 601b409e6a02a0024b4b8fd78615db9210ba6747..2afe4fe339a13784ddbdef66d5b6079a4735805a 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Inflect functions
 linkTitle: inflect
-description: Template functions to inflect English nouns.
+description: These functions provide word inflection features such as singularization and pluralization of English nouns.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-These functions provide word inflection features such as singularization and pluralization of English nouns.
index 08bce47e543a70d5333d7ef1234a01e29edabbce..d0007aaa01df8d746c5d590c28e327626c056e1d 100644 (file)
@@ -3,17 +3,11 @@ title: js.Babel
 description: Compile the given JavaScript resource with Babel.
 categories: []
 keywords: []
-action:
-  aliases: [babel]
-  related:
-    - functions/js/Batch
-    - functions/js/Build
-    - functions/resources/Fingerprint
-    - functions/resources/Minify
-  returnType: resource.Resource
-  signatures: ['js.Babel [OPTIONS] RESOURCE']
-weight: 30
-toc: true
+params:
+  functions_and_methods:
+    aliases: [babel]
+    returnType: resource.Resource
+    signatures: ['js.Babel [OPTIONS] RESOURCE']
 ---
 
 ```go-html-template
@@ -37,18 +31,21 @@ toc: true
 
 ## Setup
 
-Step 1
-: Install [Node.js](https://nodejs.org/en/download)
+### Step 1
 
-Step 2
-: Install the required Node.js packages in the root of your project.
+Install [Node.js](https://nodejs.org/en/download)
+
+### Step 2
+
+Install the required Node.js packages in the root of your project.
 
 ```sh
 npm install --save-dev @babel/core @babel/cli
 ```
 
-Step 3
-: Add the babel executable to Hugo's `security.exec.allow` list in your site configuration:
+### Step 3
+
+Add the babel executable to Hugo's `security.exec.allow` list in your site configuration:
 
 {{< code-toggle file=hugo >}}
 [security.exec]
@@ -75,32 +72,28 @@ module.exports = {
 
 ## Options
 
-###### compact
-
-(`bool`) Whether to remove optional newlines and whitespace. Enabled when `minified` is `true`. Default is `false`
-
-###### config
-
-(`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` file in the root of your project. See [details](https://babeljs.io/docs/en/configuration).
-
-###### minified
-
-(`bool`) Whether to minify the compiled code. Enables the `compact` option. Default is `false`.
-
-###### noBabelrc
-
-(`string`) Whether to ignore `.babelrc` and `.babelignore` files. Default is `false`.
+compact
+: (`bool`) Whether to remove optional newlines and whitespace. Enabled when `minified` is `true`. Default is `false`
 
-###### noComments
+config
+: (`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` file in the root of your project. See&nbsp;[details](https://babeljs.io/docs/en/configuration).
 
-(`bool`) Whether to remove comments. Default is `false`.
+minified
+: (`bool`) Whether to minify the compiled code. Enables the `compact` option. Default is `false`.
 
-###### sourceMap
+noBabelrc
+: (`string`) Whether to ignore `.babelrc` and `.babelignore` files. Default is `false`.
 
-(`string`) Whether to generate source maps, one of `external`, `inline`, or `none`. Default is `none`.
+noComments
+: (`bool`) Whether to remove comments. Default is `false`.
 
-<!-- In the above, technically "none" is not one of the enumerated values, but it has the same effect and is easier to document than an empty string. -->
+sourceMap
+: (`string`) Whether to generate source maps, one of `external`, `inline`, or `none`. Default is `none`.
 
-###### verbose
+verbose
+: (`bool`) Whether to enable verbose logging. Default is `false`
 
-(`bool`) Whether to enable verbose logging. Default is `false`
+<!--
+In the above, technically "none" is not one of the enumerated sourceMap
+values but it has the same effect and is easier to document than an empty string.
+-->
index 08913f61f5e9e90ca97c0dac9d0b2fa98235d6cf..a2c8bb893b53b8791e9bdffd423e2f0a79154a94 100644 (file)
@@ -3,40 +3,33 @@ title: js.Batch
 description: Build JavaScript bundle groups with global code splitting and flexible hooks/runners setup.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/js/Build
-    - functions/js/Babel
-    - functions/resources/Fingerprint
-    - functions/resources/Minify
-  returnType: js.Batcher
-  signatures: ['js.Batch [ID]']
-weight: 20
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: js.Batcher
+    signatures: ['js.Batch [ID]']
 ---
 
-{{% note %}}
-For a runnable example of this feature, see [this test and demo repo](https://github.com/bep/hugojsbatchdemo/).
-{{% /note %}}
+> [!note]
+> For a runnable example of this feature, see [this test and demo repo](https://github.com/bep/hugojsbatchdemo/).
 
 The Batch `ID` is used to create the base directory for this batch. Forward slashes are allowed. `js.Batch` returns an object with an API with this structure:
 
-* [Group]
-  * [Script]
-    * [SetOptions]
-  * [Instance]
-    * [SetOptions]
-  * [Runner]
-    * [SetOptions]
-  * [Config]
-    * [SetOptions]
+- [Group]
+  - [Script]
+    - [SetOptions]
+  - [Instance]
+    - [SetOptions]
+  - [Runner]
+    - [SetOptions]
+  - [Config]
+    - [SetOptions]
 
 ## Group
 
 The `Group` method take an `ID` (`string`) as argument. No slashes. It returns an object with these methods:
 
-#### Script
+### Script
 
 The `Script` method takes an `ID` (`string`) as argument. No slashes. It returns an [OptionsSetter] that can be used to set [script options] for this script.
 
@@ -50,9 +43,9 @@ The `Script` method takes an `ID` (`string`) as argument. No slashes. It returns
 {{ end }}
 ```
 
-`SetOptions` takes a [script options] map. Note that if you want the  script to be handled by a [runner], you need to set the `export` option to match what you want to pass on to the runner (default is `*`).
+`SetOptions` takes a [script options] map. Note that if you want the script to be handled by a [runner], you need to set the `export` option to match what you want to pass on to the runner (default is `*`).
 
-#### Instance
+### Instance
 
 The `Instance` method takes two `string` arguments `SCRIPT_ID` and `INSTANCE_ID`. No slashes. It returns an [OptionsSetter] that can be used to set [params options] for this instance.
 
@@ -68,7 +61,7 @@ The `Instance` method takes two `string` arguments `SCRIPT_ID` and `INSTANCE_ID`
 
 `SetOptions` takes a [params options] map. The instance options will be passed to any [runner] script in the same group, as JSON.
 
-#### Runner
+### Runner
 
 The `Runner` method takes an `ID` (`string`) as argument. No slashes. It returns an [OptionsSetter] that can be used to set [script options] for this runner.
 
@@ -131,34 +124,34 @@ import * as ReactDOM from 'react-dom/client';
 import * as React from 'react';
 
 export default function Run(group) {
-       console.log('Running react-create-elements.js', group);
-       const scripts = group.scripts;
-       for (const script of scripts) {
-               for (const instance of script.instances) {
-                       /* This is a convention in this project. */
-                       let elId = `${script.id}-${instance.id}`;
-                       let el = document.getElementById(elId);
-                       if (!el) {
-                               console.warn(`Element with id ${elId} not found`);
-                               continue;
-                       }
-                       const root = ReactDOM.createRoot(el);
-                       const reactEl = React.createElement(script.binding, instance.params);
-                       root.render(reactEl);
-               }
-       }
+  console.log('Running react-create-elements.js', group);
+  const scripts = group.scripts;
+  for (const script of scripts) {
+    for (const instance of script.instances) {
+      /* This is a convention in this project. */
+      let elId = `${script.id}-${instance.id}`;
+      let el = document.getElementById(elId);
+      if (!el) {
+        console.warn(`Element with id ${elId} not found`);
+        continue;
+      }
+      const root = ReactDOM.createRoot(el);
+      const reactEl = React.createElement(script.binding, instance.params);
+      root.render(reactEl);
+    }
+  }
 }
 ```
 
-#### Config
+### Config
 
 Returns an [OptionsSetter] that can be used to set [build options] for the batch.
 
 These are mostly the same as for `js.Build`, but note that:
 
-* `targetPath` is set automatically (there may be multiple outputs).
-`format` must be `esm`, currently the only format supporting [code splitting].
-`params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
+- `targetPath` is set automatically (there may be multiple outputs).
+- ``format` must be `esm`, currently the only format supporting [code splitting].
+- ``params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
 
 ```js
 import * as params from "@params";
@@ -185,14 +178,14 @@ Setting the `Config` for a batch can be done from any template (including shortc
 
 ## Options
 
-### Build Options
+### Build options
 
 format
-: (`string`) Currently only `esm` is supported in [ESBuild's code splitting].
+: (`string`) Currently only `esm` is supported in ESBuild's [code splitting].
 
-{{% include "./_common/options.md" %}}
+{{% include "/_common/functions/js/options.md" %}}
 
-### Script Options
+### Script options
 
 resource
 : The resource to build. This can be a file resource or a virtual resource.
@@ -205,18 +198,17 @@ importContext
 
 params
 : A map of parameters that will be passed to the script as JSON. These gets bound to the `@params` namespace:
-```js
-import * as params from '@params';
-```
 
-### Script Options
+  ```js
+  import * as params from '@params';
+  ```
 
-### Params Options
+### Params options
 
 params
-: A map of parameters that will be passed to the script as JSON. 
+: A map of parameters that will be passed to the script as JSON.
 
-### Import Context
+### Import context
 
 Hugo will, by default, first try to resolve any import in [assets](/hugo-pipes/introduction/#asset-directory) and, if not found, let [ESBuild] resolve it (e.g. from `node_modules`). The  `importContext` option can be used to set the first context for resolving imports. A common use of this is to resolve imports inside a [page bundle](/content-management/page-bundles/).
 
@@ -243,20 +235,17 @@ An `OptionsSetter` is a special object that is returned once only. This means th
 
 The `Build` method returns an object with the following structure:
 
-* Groups (map)
-  * [`Resources`]
+- Groups (map)
+  - [`Resources`]
 
-Eeach [`Resource`] will be of media type `application/javascript` or `text/css`.
+Each [`Resource`] will be of media type `application/javascript` or `text/css`.
 
- In a template you would typically handle one group with a given `ID` (e.g. scripts for the current section). Because of the concurrent build, this needs to be done in a [`templates.Defer`] block:
+In a template you would typically handle one group with a given `ID` (e.g. scripts for the current section). Because of the concurrent build, this needs to be done in a [`templates.Defer`] block:
 
-{{% note %}}
-The [`templates.Defer`] acts as a synchronisation point to handle scripts added concurrently by different templates. If you have a setup with where the batch is created in one go (in one template), you don't need it.
-
-See [this discussion](https://discourse.gohugo.io/t/js-batch-with-simple-global-script/53002/5?u=bep) for more.
-
-[`templates.Defer`]: /functions/templates/defer/
-{{% /note %}}
+> [!note]
+> The [`templates.Defer`] acts as a synchronisation point to handle scripts added concurrently by different templates. If you have a setup with where the batch is created in one go (in one template), you don't need it.
+>
+> See [this discussion](https://discourse.gohugo.io/t/js-batch-with-simple-global-script/53002/5?u=bep) for more.
 
 ```go-html-template
 {{ $group := .group }}
@@ -279,10 +268,10 @@ See [this discussion](https://discourse.gohugo.io/t/js-batch-with-simple-global-
 
 ## Known Issues
 
-In the official documentation for [ESBuild's code splitting], there's a warning note in the header. The two issues are:
+In the official documentation for ESBuild's [code splitting], there's a warning note in the header. The two issues are:
 
-* `esm` is currently the only implemented output format. This means that it will not work for very old browsers. See [caniuse](https://caniuse.com/?search=ESM).
-* There's a known import ordering issue.
+  - `esm` is currently the only implemented output format. This means that it will not work for very old browsers. See [caniuse](https://caniuse.com/?search=ESM).
+  - There's a known import ordering issue.
 
 We have not seen the ordering issue as a problem during our [extensive testing](https://github.com/bep/hugojsbatchdemo) of this new feature with different libraries. There are two main cases:
 
@@ -296,28 +285,23 @@ import './lib2.js';
 import './lib1.js';
 
 console.log('entrypoints-workaround.js');
-
 ```
 
-[build options]: #build-options
 [`Resource`]: /methods/resource/
-[`Resources`]: /methods/page/resources/
 [`Resources.Mount`]: /methods/page/resources/#mount
+[`Resources`]: /methods/page/resources/
+[`templates.Defer`]: /functions/templates/defer/
 [`templates.Defer`]: /functions/templates/defer/
+[build options]: #build-options
 [code splitting]: https://esbuild.github.io/api/#splitting
 [config]: #config
-[ESBuild's code splitting]: https://esbuild.github.io/api/#splitting
 [ESBuild]: https://github.com/evanw/esbuild
-[group]: #group
-[instance]: #instance
 [JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
 [js.Batch Demo Repo]: https://github.com/bep/hugojsbatchdemo/
-[map]: /functions/collections/dictionary/
 [OptionsSetter]: #optionssetter
-[page bundles]: /content-management/page-bundles/
 [params options]: #params-options
 [runner]: #runner
-[script options]: #script-options
 [script]: #script
+[script options]: #script-options
 [SetOptions]: #optionssetter
 [with]: /functions/go-template/with/
index 9bdc2454a9f9aea04e3e9f1cb6a78ef21a7f610c..1bec6b16f09fbb9dc835ef28cd9f1b5b826154e6 100644 (file)
@@ -3,17 +3,11 @@ title: js.Build
 description: Bundle, transpile, tree shake, and minify JavaScript resources.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/js/Batch
-    - functions/js/Babel
-    - functions/resources/Fingerprint
-    - functions/resources/Minify
-  returnType: resource.Resource
-  signatures: ['js.Build [OPTIONS] RESOURCE']
-weight: 10
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['js.Build [OPTIONS] RESOURCE']
 ---
 
 The `js.Build` function uses the [evanw/esbuild] package to:
@@ -24,8 +18,6 @@ The `js.Build` function uses the [evanw/esbuild] package to:
 - Minify
 - Create source maps
 
-[evanw/esbuild]: https://github.com/evanw/esbuild
-
 ```go-html-template
 {{ with resources.Get "js/main.js" }}
   {{ $opts := dict
@@ -47,16 +39,13 @@ The `js.Build` function uses the [evanw/esbuild] package to:
 
 ## Options
 
-###### targetPath
-
-(`string`) If not set, the source path will be used as the base target path.
-Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript.
+targetPath
+: (`string`) If not set, the source path will be used as the base target path. Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript.
 
-###### format
+format
+: (`string`) The output format. One of: `iife`, `cjs`, `esm`. Default is `iife`, a self-executing function, suitable for inclusion as a `<script>` tag.
 
-(`string`) The output format. One of: `iife`, `cjs`, `esm`. Default is `iife`, a self-executing function, suitable for inclusion as a `<script>` tag.
-
-{{% include "./_common/options.md" %}}
+{{% include "/_common/functions/js/options.md" %}}
 
 ## Import JS code from the assets directory
 
@@ -99,7 +88,7 @@ And then in your JS file:
 import * as params from '@params';
 ```
 
-Hugo will, by default, generate a `assets/jsconfig.json` file that maps the imports. This is useful for navigation/intellisense help inside code editors, but if you don't need/want it, you can [turn it off](/getting-started/configuration/#configure-build).
+Hugo will, by default, generate a `assets/jsconfig.json` file that maps the imports. This is useful for navigation/intellisense help inside code editors, but if you don't need/want it, you can [turn it off](/configuration/build/).
 
 ## Node.js dependencies
 
@@ -109,9 +98,8 @@ Any imports in a file outside `assets` or that does not resolve to a component i
 
 The start directory for resolving npm packages (aka. packages that live inside a `node_modules` directory) is always the main project directory.
 
-{{% note %}}
-If you're developing a theme/component that is supposed to be imported and depends on dependencies inside `package.json`, we recommend reading about [hugo mod npm pack](/commands/hugo_mod_npm_pack/), a tool to consolidate all the npm dependencies in a project.
-{{% /note %}}
+> [!note]
+> If you're developing a theme/component that is supposed to be imported and depends on dependencies inside `package.json`, we recommend reading about [hugo mod npm pack](/commands/hugo_mod_npm_pack/), a tool to consolidate all the npm dependencies in a project.
 
 ## Examples
 
@@ -129,3 +117,5 @@ Or with options:
 {{ $built := resources.Get "scripts/main.js" | js.Build $opts }}
 <script src="{{ $built.RelPermalink }}" defer></script>
 ```
+
+[evanw/esbuild]: https://github.com/evanw/esbuild
diff --git a/content/en/functions/js/_common/_index.md b/content/en/functions/js/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/js/_common/options.md b/content/en/functions/js/_common/options.md
deleted file mode 100644 (file)
index e2b6566..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-###### params
-
-(`map` or `slice`) Params that can be imported as JSON in your JS files, e.g.
-
-```go-html-template
-{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
-```
-And then in your JS file:
-
-```js
-import * as params from '@params';
-```
-
-Note that this is meant for small data sets, e.g. configuration settings. For larger data, please put/mount the files into `assets` and import them directly.
-
-###### minify
-
-(`bool`) Let `js.Build` handle the minification.
-
-###### loaders
-
-{{< new-in 0.140.0 />}}
-
-(`map`) Configuring a loader for a given file type lets you load that file type with an import statement or a require call. For example configuring the .png file extension to use the data URL loader means importing a .png file gives you a data URLcontaining the contents of that image. Loaders available are `none`, `base64`, `binary`, `copy`,  `css`,  `dataurl`, `default`, `empty`, `file`, `global-css`, `js`, `json`, `jsx`, `local-css`,  `text`, `ts`, `tsx`. See https://esbuild.github.io/api/#loader.
-
-###### inject
-
-(`slice`) This option allows you to automatically replace a global variable with an import from another file. The path names must be relative to `assets`. See https://esbuild.github.io/api/#inject.
-
-###### shims
-
-(`map`) This option allows swapping out a component with another. A common use case is to load dependencies like React from a CDN  (with _shims_) when in production, but running with the full bundled `node_modules` dependency during development:
-
-```go-html-template
-{{ $shims := dict "react" "js/shims/react.js"  "react-dom" "js/shims/react-dom.js" }}
-{{ $js = $js | js.Build dict "shims" $shims }}
-```
-
-The _shim_ files may look like these:
-
-```js
-// js/shims/react.js
-module.exports = window.React;
-```
-
-```js
-// js/shims/react-dom.js
-module.exports = window.ReactDOM;
-```
-
-With the above, these imports should work in both scenarios:
-
-```js
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
-```
-
-###### target
-
-(`string`) The language target. One of: `es5`, `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020` or `esnext`. Default is `esnext`.
-
-###### platform
-
-{{< new-in 0.140.0 />}}
-
-(`string`) One of `browser`, `node`, `neutral`.  Default is `browser`. See https://esbuild.github.io/api/#platform.
-
-###### externals
-
-(`slice`) External dependencies. Use this to trim dependencies you know will never be executed. See https://esbuild.github.io/api/#external.
-
-###### defines
-
-(`map`) Allow to define a set of string replacement to be performed when building. Should be a map where each key is to be replaced by its value.
-
-```go-html-template
-{{ $defines := dict "process.env.NODE_ENV" `"development"` }}
-```
-
-###### sourceMap
-
-(`string`) Whether to generate `inline`, `linked` or `external` source maps from esbuild. Linked and external source maps will be written to the target with the output file name + ".map". When `linked` a `sourceMappingURL` will also be written to the output file. By default, source maps are not created. Note that the `linked` option was added in Hugo 0.140.0.
-
-###### sourcesContent
-
-{{< new-in 0.140.0 />}}
-
-(`bool`) Whether to include the content of the source files in the source map. By default, this is `true`.
-
-###### JSX
-
-{{< new-in 0.124.0 />}}
-
-(`string`) How to handle/transform JSX syntax. One of: `transform`, `preserve`, `automatic`. Default is `transform`. Notably, the `automatic` transform was introduced in React 17+ and will cause the necessary JSX helper functions to be imported automatically. See https://esbuild.github.io/api/#jsx.
-
-###### JSXImportSource
-
-{{< new-in 0.124.0 />}}
-
-(`string`) Which library to use to automatically import its JSX helper functions from. This only works if `JSX` is set to `automatic`. The specified library needs to be installed through npm and expose certain exports. See https://esbuild.github.io/api/#jsx-import-source.
-
-The combination of `JSX` and `JSXImportSource` is helpful if you want to use a non-React JSX library like Preact, e.g.:
-
-```go-html-template
-{{ $js := resources.Get "js/main.jsx" | js.Build (dict "JSX" "automatic" "JSXImportSource" "preact") }}
-```
-
-With the above, you can use Preact components and JSX without having to manually import `h` and `Fragment` every time:
-
-```jsx
-import { render } from 'preact';
-
-const App = () => <>Hello world!</>;
-
-const container = document.getElementById('app');
-if (container) render(<App />, container);
-```
index 3356e7c7be645d1f282bf2565e8b05eefd9de3f8..d3557a2d3f503cf582daf9e65237ee6ce075b821 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: JavaScript functions
 linkTitle: js
-description: Template functions to work with JavaScript and TypeScript files.
+description: Use these functions to work with JavaScript and TypeScript files.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with JavaScript and TypeScript files.
index 70365c21626419c5f63fbf427afcb0eb0f0b6e4f..d2a1d76f652d4c5df29c94c0e624d452d7e08498 100644 (file)
@@ -3,19 +3,15 @@ title: lang.FormatAccounting
 description: Returns a currency representation of a number for the given currency and precision for the current language and region in accounting notation.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/lang/FormatCurrency
-    - functions/lang/FormatNumber
-    - functions/lang/FormatNumberCustom
-    - functions/lang/FormatPercent
-  returnType: string
-  signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER]
 ---
 
 ```go-html-template
 {{ 512.5032 | lang.FormatAccounting 2 "NOK" }} → NOK512.50
 ```
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
index bd83c2ec5bf98c4492087f8024865804fc6035d3..327413c074b3fd6ee3bd2ae727f91c873c41adbd 100644 (file)
@@ -3,19 +3,15 @@ title: lang.FormatCurrency
 description: Returns a currency representation of a number for the given currency and precision for the current language and region.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/lang/FormatAccounting
-    - functions/lang/FormatNumber
-    - functions/lang/FormatNumberCustom
-    - functions/lang/FormatPercent
-  returnType: string
-  signatures: [lang.FormatCurrency PRECISION CURRENCY NUMBER]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [lang.FormatCurrency PRECISION CURRENCY NUMBER]
 ---
 
 ```go-html-template
 {{ 512.5032 | lang.FormatCurrency 2 "USD" }} → $512.50
 ```
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
index 597df742a3182b917f2cb1dfbbb08469b1e5bea4..5bf37996af8182c3dc8e92f0a22e2b2f52be935f 100644 (file)
@@ -3,19 +3,15 @@ title: lang.FormatNumber
 description: Returns a numeric representation of a number with the given precision for the current language and region.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/lang/FormatAccounting
-    - functions/lang/FormatCurrency
-    - functions/lang/FormatNumberCustom
-    - functions/lang/FormatPercent
-  returnType: string
-  signatures: [lang.FormatNumber PRECISION NUMBER]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [lang.FormatNumber PRECISION NUMBER]
 ---
 
 ```go-html-template
 {{ 512.5032 | lang.FormatNumber 2 }} → 512.50
 ```
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
index 603f42087139c660436ce387a382dc0110811e6f..0a70cd9384c356dd04106972569462ceec95d7a7 100644 (file)
@@ -3,15 +3,11 @@ title: lang.FormatNumberCustom
 description: Returns a numeric representation of a number with the given precision using negative, decimal, and grouping options.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/lang/FormatAccounting
-    - functions/lang/FormatCurrency
-    - functions/lang/FormatNumber
-    - functions/lang/FormatPercent
-  returnType: string
-  signatures: ['lang.FormatNumberCustom PRECISION NUMBER [OPTIONS...]']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: ['lang.FormatNumberCustom PRECISION NUMBER [OPTIONS...]']
 aliases: ['/functions/numfmt/']
 ---
 
@@ -29,6 +25,6 @@ For a simpler function that adapts to the current language, see [`lang.FormatNum
 {{ lang.FormatNumberCustom 0 -12345.6789 "-|.| " "|" }} → -12 346
 ```
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
 
 [`lang.FormatNumber`]: /functions/lang/formatnumber/
index 529ada67bf7a9e01796c09f01f552174a9adb0ab..aef1fb64ced0b0e44743955f587fc9ec51efe300 100644 (file)
@@ -3,19 +3,15 @@ title: lang.FormatPercent
 description: Returns a percentage representation of a number with the given precision for the current language and region.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/lang/FormatAccounting
-    - functions/lang/FormatCurrency
-    - functions/lang/FormatNumber
-    - functions/lang/FormatNumberCustom
-  returnType: string
-  signatures: [lang.FormatPercent PRECISION NUMBER]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [lang.FormatPercent PRECISION NUMBER]
 ---
 
 ```go-html-template
 {{ 512.5032 | lang.FormatPercent 2 }} → 512.50%
 ```
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
index 75f5cdf01ee1bcb650c36414d6b31a94ebe5fb7d..db40c26690ee5a3478f92e4df713b8c70cd80c74 100644 (file)
@@ -3,11 +3,11 @@ title: lang.Merge
 description: Merge missing translations from other languages.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: any
-  signatures: [lang.Merge FROM TO]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: any
+    signatures: [lang.Merge FROM TO]
 aliases: [/functions/lang.merge]
 ---
 
index 48c1345e2198df6ba953e48c7e41b89bc123b8fd..00bb0e3f3d8b92ae15ea7888f0c65fba75efcd63 100644 (file)
@@ -3,31 +3,24 @@ title: lang.Translate
 description: Translates a string using the translation tables in the i18n directory.
 categories: []
 keywords: []
-action:
-  aliases: [T, i18n]
-  related: []
-  returnType: string
-  signatures: ['lang.Translate KEY [CONTEXT]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [T, i18n]
+    returnType: string
+    signatures: ['lang.Translate KEY [CONTEXT]']
 aliases: [/functions/i18n]
 ---
 
-The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language. 
+The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language.
 
 If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`].
 
-[`defaultContentLanguage`]: /getting-started/configuration/#defaultcontentlanguage
-
 If the key is not found in the translation table for the `defaultContentLanguage`, the `lang.Translate` function returns an empty string.
 
-{{% note %}}
-To list missing and fallback translations, use the `--printI18nWarnings` flag when building your site.
-
-To render placeholders for missing and fallback translations, set 
-[`enableMissingTranslationPlaceholders`] to `true` in your site configuration.
-
-[`enableMissingTranslationPlaceholders`]: /getting-started/configuration/#enablemissingtranslationplaceholders
-{{% /note %}}
+> [!note]
+> To list missing and fallback translations, use the `--printI18nWarnings` flag when building your site.
+>
+> To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`] to `true` in your site configuration.
 
 ## Translation tables
 
@@ -38,7 +31,7 @@ i18n/en.toml
 i18n/en-US.toml
 ```
 
-The base name must match the language key as defined in your site configuration.
+The base name must match the [language key] as defined in your site configuration.
 
 Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. You may omit the `art-x-` prefix for brevity. For example:
 
@@ -47,10 +40,8 @@ i18n/art-x-hugolang.toml
 i18n/hugolang.toml
 ```
 
-Private use subtags must not exceed 8 alphanumeric characters.
-
-[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646
-[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
+> [!note]
+> Private use subtags must not exceed 8 alphanumeric characters.
 
 ## Simple translations
 
@@ -76,9 +67,8 @@ privacy = 'prywatność'
 security = 'bezpieczeństwo'
 {{< /code-toggle >}}
 
-{{% note %}}
-The examples below use the `T` alias for brevity.
-{{% /note %}}
+> [!note]
+> The examples below use the `T` alias for brevity.
 
 When viewing the English language site:
 
@@ -106,8 +96,6 @@ i18n/
 
 The Unicode [CLDR Plural Rules chart] describes the pluralization categories for each language.
 
-[CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
-
 The English translation table:
 
 {{< code-toggle file=i18n/en >}}
@@ -136,9 +124,8 @@ many = '{{ . }} miesięcy'
 other = '{{ . }} miesiąca'
 {{< /code-toggle >}}
 
-{{% note %}}
-The examples below use the `T` alias for brevity.
-{{% /note %}}
+> [!note]
+> The examples below use the `T` alias for brevity.
 
 When viewing the English language site:
 
@@ -185,16 +172,13 @@ Template code:
 {{ T "age" (dict "name" "John" "count" 3) }} → John is 3 years old.
 ```
 
-{{% note %}}
-Translation tables may contain both simple translations and translations with pluralization.
-{{% /note %}}
+> [!note]
+> Translation tables may contain both simple translations and translations with pluralization.
 
 ## Reserved keys
 
 Hugo uses the [go-i18n] package to look up values in translation tables. This package reserves the following keys for internal use:
 
-[go-i18n]: https://github.com/nicksnyder/go-i18n
-
 id
 : (`string`) Uniquely identifies the message.
 
@@ -228,8 +212,6 @@ many
 other
 : (`string`) The content of the message for the [CLDR] plural form "other".
 
-[CLDR]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
-
 If you need to provide a translation for one of the reserved keys, you can prepend the word with an underscore. For example:
 
 {{< code-toggle file=i18n/es >}}
@@ -253,3 +235,12 @@ Then in your templates:
 {{ T "_zero" }} → cero
 {{ T "_other" }} → otro
 ```
+
+[`defaultContentLanguage`]: /configuration/all/#defaultcontentlanguage
+[`enableMissingTranslationPlaceholders`]: /configuration/all/#enablemissingtranslationplaceholders
+[CLDR]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
+[CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
+[go-i18n]: https://github.com/nicksnyder/go-i18n
+[language key]: /configuration/languages/#language-keys
+[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646
+[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
index 934d97bffd2bab71d2d1d988fcb536b23421d1c7..de75cad454dec41b25f68c1d4ef75c91f1948292 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Lang functions
 linkTitle: lang
-description: Template functions to adapt your site to meet language and regional requirements.
+description: Use these functions to adapt your site to meet language and regional requirements.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to adapt your site to meet language and regional requirements.
index 6e907d56452ad3e4385de423c4fe1b105ca579fb..60d8d6d64b3a70f9c01a25c1b918cee361c72e73 100644 (file)
@@ -3,11 +3,11 @@ title: math.Abs
 description: Returns the absolute value of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: float64
-  signatures: [math.Abs VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Abs VALUE]
 ---
 
 ```go-html-template
index abdae4f740278c0bdd4c4325a23742e8a28c2f40..32537e2dd037525c68f390ee679332753bb44f30 100644 (file)
@@ -3,18 +3,11 @@ title: math.Acos
 description: Returns the arccosine, in radians, of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Asin
-    - functions/math/Atan
-    - functions/math/Atan2
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Tan
-  returnType: float64
-  signatures: [math.Acos VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Acos VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 25de514e0c4877b4a49fb58ffb3e27f14f4d1792..cd137c6c75ac53ff415d258a3068a294e81c77ef 100644 (file)
@@ -3,16 +3,11 @@ title: math.Add
 description: Adds two or more numbers.
 categories: []
 keywords: []
-action:
-  aliases: [add]
-  related:
-    - functions/math/Div
-    - functions/math/Mul
-    - functions/math/Product
-    - functions/math/Sub
-    - functions/math/Sum
-  returnType: any
-  signatures: [math.Add VALUE VALUE...]
+params:
+  functions_and_methods:
+    aliases: [add]
+    returnType: any
+    signatures: [math.Add VALUE VALUE...]
 ---
 
 If one of the numbers is a [`float`](g), the result is a `float`.
index 0496a1b4529cd911791009cac79cf6f8b515a1d3..76114a72e0204e62325f49949ab9937bdfcb74ee 100644 (file)
@@ -3,18 +3,11 @@ title: math.Asin
 description: Returns the arcsine, in radians, of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Acos
-    - functions/math/Atan
-    - functions/math/Atan2
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Tan
-  returnType: float64
-  signatures: [math.Asin VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Asin VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 942b3d2f2c0d5241891534832e9f4f675f6d8f89..5c8268b4794471c554467097f9bb0501ec42e43f 100644 (file)
@@ -3,18 +3,11 @@ title: math.Atan
 description: Returns the arctangent, in radians, of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Atan2
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Tan
-  returnType: float64
-  signatures: [math.Atan VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Atan VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index efa13b16633b693439e701824205fd69f08a290c..942fffdf8226136afb461c762e543886be907c6b 100644 (file)
@@ -3,18 +3,11 @@ title: math.Atan2
 description: Returns the arctangent, in radians, of the given number pair, determining the correct quadrant from their signs.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Atan
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Tan
-  returnType: float64
-  signatures: [math.Atan2 VALUE VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Atan2 VALUE VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 9f74991c32b7e825b21c4584807e4d3284dd884b..22a9d0299148ec61ebf89bb103e5e9ff90f67e4b 100644 (file)
@@ -3,13 +3,11 @@ title: math.Ceil
 description: Returns the least integer value greater than or equal to the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Floor
-    - functions/math/Round
-  returnType: float64
-  signatures: [math.Ceil VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Ceil VALUE]
 ---
 
 ```go-html-template
index 3291b24f8568d3afc3221d0881d8320b39c4a711..249a064bb200df7a260d39e5ea275e47ba532417 100644 (file)
@@ -3,18 +3,11 @@ title: math.Cos
 description: Returns the cosine of the given radian number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Tan
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Atan
-    - functions/math/Atan2
-  returnType: float64
-  signatures: [math.Cos VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Cos VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 457806b8e5dca61aa8eed3e559f2f27dff26c887..16456cec656a0a2d7251124eec72983f10f41204 100644 (file)
@@ -3,11 +3,11 @@ title: math.Counter
 description: Increments and returns a global counter.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: uint64
-  signatures: [math.Counter]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: uint64
+    signatures: [math.Counter]
 ---
 
 The counter is global for both monolingual and multilingual sites, and its initial value for each build is&nbsp;1.
@@ -27,9 +27,7 @@ Use this function to:
 - Create unique warnings as shown above; the [`warnf`] function suppresses duplicate messages
 - Create unique target paths for the `resources.FromString` function where the target path is also the cache key
 
-[`warnf`]: /functions/fmt/warnf/
-[`resources.FromString`]: /functions/resources/fromstring/
+> [!note]
+> Due to concurrency, the value returned in a given template for a given page will vary from one build to the next. You cannot use this function to assign a static id to each page.
 
-{{% note %}}
-Due to concurrency, the value returned in a given template for a given page will vary from one build to the next. You cannot use this function to assign a static id to each page.
-{{% /note %}}
+[`warnf`]: /functions/fmt/warnf/
index b9f7a0a53b895c4fe6b66bab3557f3d7fd1aee8f..0e338a9e902e329e7f6dadfb8db4e207cef33679 100644 (file)
@@ -3,16 +3,11 @@ title: math.Div
 description: Divides the first number by one or more numbers.
 categories: []
 keywords: []
-action:
-  aliases: [div]
-  related:
-    - functions/math/Add
-    - functions/math/Mul
-    - functions/math/Product
-    - functions/math/Sub
-    - functions/math/Sum
-  returnType: any
-  signatures: [math.Div VALUE VALUE...]
+params:
+  functions_and_methods:
+    aliases: [div]
+    returnType: any
+    signatures: [math.Div VALUE VALUE...]
 ---
 
 If one of the numbers is a [`float`](g), the result is a `float`.
index 10ad758b6b9eb6642f47204d2b5d4501f0fe5025..dbfd8620e9ce369395d2edc2ecaabaa769d93798 100644 (file)
@@ -3,13 +3,11 @@ title: math.Floor
 description: Returns the greatest integer value less than or equal to the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Ceil
-    - functions/math/Round
-  returnType: float64
-  signatures: [math.Floor VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Floor VALUE]
 ---
 
 ```go-html-template
index 84edcb288515eba067a9e071d9717e5e11d75bff..123ffacd7524a79aebb6684c731b6ee629fd3bd6 100644 (file)
@@ -3,11 +3,11 @@ title: math.Log
 description: Returns the natural logarithm of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: float64
-  signatures: [math.Log VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Log VALUE]
 ---
 
 ```go-html-template
index 9beff563006dafea4ed9001a0766d8e3f17cd3dc..d3a7676fc3c88015e0c428ff8d9004a9a0ee92e9 100644 (file)
@@ -3,12 +3,11 @@ title: math.Max
 description: Returns the greater of all numbers. Accepts scalars, slices, or both.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Min
-  returnType: float64
-  signatures: [math.Max VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Max VALUE...]
 ---
 
 ```go-html-template
index 79e464c74ab58db4870f92af9fba8ad7b6e22afe..4f7d7b85a4dc865b893b05a032e6627969c37518 100644 (file)
@@ -3,12 +3,11 @@ title: math.Min
 description: Returns the smaller of all numbers. Accepts scalars, slices, or both.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Max
-  returnType: float64
-  signatures: [math.Min VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Min VALUE...]
 ---
 
 ```go-html-template
index d312730c542120d9960a6c7bbc8c8aff7a2f41e3..6035a361e0c2143ff07070f99dcf5971c4bd3a21 100644 (file)
@@ -3,12 +3,11 @@ title: math.Mod
 description: Returns the modulus of two integers.
 categories: []
 keywords: []
-action:
-  aliases: [mod]
-  related:
-    - functions/math/ModBool
-  returnType: int64
-  signatures: [math.Mod VALUE1 VALUE2]
+params:
+  functions_and_methods:
+    aliases: [mod]
+    returnType: int64
+    signatures: [math.Mod VALUE1 VALUE2]
 ---
 
 ```go-html-template
index d915ff6141b1c4cfa691aad532c59afb0dd3c39a..fc7813d674d4ff0c492805fdce2e3a6038d857c6 100644 (file)
@@ -3,12 +3,11 @@ title: math.ModBool
 description: Reports whether the modulus of two integers equals 0.
 categories: []
 keywords: []
-action:
-  aliases: [modBool]
-  related:
-    - functions/math/Mod
-  returnType: bool
-  signatures: [math.ModBool VALUE1 VALUE2]
+params:
+  functions_and_methods:
+    aliases: [modBool]
+    returnType: bool
+    signatures: [math.ModBool VALUE1 VALUE2]
 ---
 
 ```go-html-template
index bc143c5efc47203e537e4821a8fa053b722641a8..69f2dbe1b31aa5532360d7080feef741083960fb 100644 (file)
@@ -3,16 +3,11 @@ title: math.Mul
 description: Multiplies two or more numbers.
 categories: []
 keywords: []
-action:
-  aliases: [mul]
-  related:
-    - functions/math/Add
-    - functions/math/Div
-    - functions/math/Product
-    - functions/math/Sub
-    - functions/math/Sum
-  returnType: any
-  signatures: [math.Mul VALUE VALUE...]
+params:
+  functions_and_methods:
+    aliases: [mul]
+    returnType: any
+    signatures: [math.Mul VALUE VALUE...]
 ---
 
 If one of the numbers is a [`float`](g), the result is a `float`.
index f2cf92c7ab2a16eb05dad96161581d76300b9dac..0bc74bf031d35a4a2d19a63f80da0a5a085edce1 100644 (file)
@@ -3,18 +3,11 @@ title: math.Pi
 description: Returns the mathematical constant pi.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Tan
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Atan
-    - functions/math/Atan2
-  returnType: float64
-  signatures: [math.Pi]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Pi]
 ---
 
 {{< new-in 0.130.0 />}}
index 5a1482d73c7dd270835837360c9b01b1d2b8f8d7..a4384305d5b80308284c8890ce2d7123baf2c9d0 100644 (file)
@@ -3,12 +3,11 @@ title: math.Pow
 description: Returns the first number raised to the power of the second number.
 categories: []
 keywords: []
-action:
-  aliases: [pow]
-  related:
-    - functions/math/Sqrt
-  returnType: float64
-  signatures: [math.Pow VALUE1 VALUE2]
+params:
+  functions_and_methods:
+    aliases: [pow]
+    returnType: float64
+    signatures: [math.Pow VALUE1 VALUE2]
 ---
 
 ```go-html-template
index 1809c560de7608e9ac1c60fc18786c6823c10380..ffb1afe460daa1d56e806d51e1d5a83f6518b64b 100644 (file)
@@ -3,20 +3,13 @@ title: math.Product
 description: Returns the product of all numbers. Accepts scalars, slices, or both.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Add
-    - functions/math/Div
-    - functions/math/Mul
-    - functions/math/Sub
-    - functions/math/Sum
-  returnType: float64
-  signatures: [math.Product VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Product VALUE...]
 ---
 
-{{< new-in 0.114.0 />}}
-
 ```go-html-template
 {{ math.Product 1 (slice 2 3) 4 }} → 24
 ```
index cae6455c0a526edf3b36d021d8986abf4c37c7dc..d659e651f8578d3be662d83ca866780f8bbc0cb2 100644 (file)
@@ -3,11 +3,11 @@ title: math.Rand
 description: Returns a pseudo-random number in the half-open interval [0.0, 1.0).
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: float64
-  signatures: [math.Rand]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Rand]
 ---
 
 {{< new-in 0.121.2 />}}
index e0678eb784c89905602b70c8ddd336e3fec08de3..6bc015ce784081456b402a786571d95d511a0a93 100644 (file)
@@ -3,13 +3,11 @@ title: math.Round
 description: Returns the nearest integer, rounding half away from zero.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Ceil
-    - functions/math/Floor
-  returnType: float64
-  signatures: [math.Round VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Round VALUE]
 ---
 
 ```go-html-template
index 37936d7143fbc335fe0a4d496731449257c26c97..b5ab86bb8e75114d644c62c95c7342509d23d57c 100644 (file)
@@ -3,18 +3,11 @@ title: math.Sin
 description: Returns the sine of the given radian number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Pi
-    - functions/math/Cos
-    - functions/math/Tan
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Atan
-    - functions/math/Atan2
-  returnType: float64
-  signatures: [math.Sin VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Sin VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 436cb31c327e563362baebd7b15cd9cc142c74b5..b2f49fdbd8805f1bfb8d1380b4231d984fd57d06 100644 (file)
@@ -3,12 +3,11 @@ title: math.Sqrt
 description: Returns the square root of the given number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Pow
-  returnType: float64
-  signatures: [math.Sqrt VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Sqrt VALUE]
 ---
 
 ```go-html-template
index 9f211ef1b9fb635a39c3fb1d6020eab3dd04a782..49459cd715fd1bb2328a709ae7468fa883d9b954 100644 (file)
@@ -1,18 +1,13 @@
 ---
 title: math.Sub
-description: Subtracts one or more numbers from the first number. 
+description: Subtracts one or more numbers from the first number.
 categories: []
 keywords: []
-action:
-  aliases: [sub]
-  related:
-    - functions/math/Add
-    - functions/math/Div
-    - functions/math/Mul
-    - functions/math/Product
-    - functions/math/Sum
-  returnType: any
-  signatures: [math.Sub VALUE VALUE...]
+params:
+  functions_and_methods:
+    aliases: [sub]
+    returnType: any
+    signatures: [math.Sub VALUE VALUE...]
 ---
 
 If one of the numbers is a [`float`](g), the result is a `float`.
index 5cf882bee19cae19d13b44811bcf7a3103c82d1a..e14bc924b1b9c2d025e6ab8f7f229c52c0ad5df0 100644 (file)
@@ -2,20 +2,13 @@
 title: math.Sum
 description: Returns the sum of all numbers. Accepts scalars, slices, or both.
 categories: []
-action:
-  aliases: []
-  related:
-    - functions/math/Add
-    - functions/math/Div
-    - functions/math/Mul
-    - functions/math/Product
-    - functions/math/Sub
-  returnType: float64
-  signatures: [math.Sum VALUE...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Sum VALUE...]
 ---
 
-{{< new-in 0.114.0 />}}
-
 ```go-html-template
 {{ math.Sum 1 (slice 2 3) 4 }} → 10
 ```
index a8691fbca8f15932fc203b475984668b3462286a..c4f861c05fc1fff90d39585b56aa0b2c8b698695 100644 (file)
@@ -3,18 +3,11 @@ title: math.Tan
 description: Returns the tangent of the given radian number.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/Pi
-    - functions/math/Sin
-    - functions/math/Cos
-    - functions/math/Asin
-    - functions/math/Acos
-    - functions/math/Atan
-    - functions/math/Atan2
-  returnType: float64
-  signatures: [math.Tan VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.Tan VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 54473be72fa87b04aaa0b4749bcf887417661249..f01cd4728888266ba1d29ca31973f4a567e6fbe1 100644 (file)
@@ -3,13 +3,11 @@ title: math.ToDegrees
 description: ToDegrees converts radians into degrees.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/ToRadians
-    - functions/math/Pi
-  returnType: float64
-  signatures: [math.ToDegrees VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.ToDegrees VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index c587c023c636e4f7054894256d88203046f42161..b5acbb65b637577f865c52178b978c41910fd36a 100644 (file)
@@ -3,13 +3,11 @@ title: math.ToRadians
 description: ToRadians converts degrees into radians.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/math/ToDegrees
-    - functions/math/Pi
-  returnType: float64
-  signatures: [math.ToRadians VALUE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: float64
+    signatures: [math.ToRadians VALUE]
 ---
 
 {{< new-in 0.130.0 />}}
index 76713bc99a4ffee4bb45a22202980f6d7c9698c6..c58a5a70486b680c422d8e54754a3d4b0f41b527 100644 (file)
@@ -1,11 +1,6 @@
 ---
 title: Math functions
 linkTitle: math
-description: Template functions to perform mathematical operations.
+description: Use these functions to perform mathematical operations.
 categories: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to perform mathematical operations.
index 6ee1519e5b010a189e684f89ec5fc7ffee99e195..d1f928aebc45ed23216d311bd66f9fd13675487b 100644 (file)
@@ -3,11 +3,11 @@ title: openapi3.Unmarshal
 description: Unmarshals the given resource into an OpenAPI 3 document.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: openapi3.OpenAPIDocument
-  signatures: ['openapi3.Unmarshal RESOURCE']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: openapi3.OpenAPIDocument
+    signatures: ['openapi3.Unmarshal RESOURCE']
 ---
 
 Use the `openapi3.Unmarshal` function with [global resources](g), [page resources](g), or [remote resources](g).
index 9b6aa958401959276c48a5719d7da3ffbec75b4d..852daf7b544560758cad8ece04b2f659542f8bdf 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: OpenAPI functions
 linkTitle: openapi3
-description: Template functions to work with OpenAPI 3 definitions.
+description: Use these functions to work with OpenAPI 3 definitions.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with OpenAPI 3 definitions.
index b8104a066de379f290523163fa405630e756ed63..b8a01a3e732f801c637ad58c4ed54f18363b41cd 100644 (file)
@@ -3,19 +3,15 @@ title: os.FileExists
 description: Reports whether the file or directory exists.
 categories: []
 keywords: []
-action:
-  aliases: [fileExists]
-  related:
-    - functions/os/Getenv
-    - functions/os/ReadDir
-    - functions/os/ReadFile
-    - functions/os/Stat
-  returnType: bool
-  signatures: [os.FileExists PATH]
+params:
+  functions_and_methods:
+    aliases: [fileExists]
+    returnType: bool
+    signatures: [os.FileExists PATH]
 aliases: [/functions/fileexists]
 ---
 
-The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
+The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional.
 
 With this directory structure:
 
index 2b7a088816f18dc6b0a6cd97f600c5a980123d53..04215e6c36a221f8167f9fec57bf6b45a2bde483 100644 (file)
@@ -3,17 +3,12 @@ title: os.Getenv
 description: Returns the value of an environment variable, or an empty string if the environment variable is not set.
 categories: []
 keywords: []
-action:
-  aliases: [getenv]
-  related:
-    - functions/os/FileExists
-    - functions/os/ReadDir
-    - functions/os/ReadFile
-    - functions/os/Stat
-  returnType: string
-  signatures: [os.Getenv VARIABLE]
+params:
+  functions_and_methods:
+    aliases: [getenv]
+    returnType: string
+    signatures: [os.Getenv VARIABLE]
 aliases: [/functions/getenv]
-toc: true
 ---
 
 ## Security
@@ -30,9 +25,7 @@ To access other environment variables, adjust your site configuration. For examp
 getenv = ['^HUGO_', '^CI$', '^USER$', '^HOME$']
 {{< /code-toggle >}}
 
-Read more about Hugo's [security policy].
-
-[security policy]: /about/security/#security-policy
+For more information see [configure security](/configuration/security).
 
 ## Examples
 
index f4a5389d9814116732150d7009c85bd699414fb7..65c398a3160197e796356a52d92b8ce531dd2716 100644 (file)
@@ -3,15 +3,11 @@ title: os.ReadDir
 description: Returns an array of FileInfo structures sorted by file name, one element for each directory entry.
 categories: []
 keywords: []
-action:
-  aliases: [readDir]
-  related:
-    - functions/os/FileExists
-    - functions/os/Getenv
-    - functions/os/ReadFile
-    - functions/os/Stat
-  returnType: os.FileInfo
-  signatures: [os.ReadDir PATH]
+params:
+  functions_and_methods:
+    aliases: [readDir]
+    returnType: os.FileInfo
+    signatures: [os.ReadDir PATH]
 aliases: [/functions/readdir]
 ---
 
index 5e733ef2d9406bd839755af1a340b787a52d8f43..7f25327c8e853733157f7f652558b6410d4e7918 100644 (file)
@@ -3,19 +3,15 @@ title: os.ReadFile
 description: Returns the contents of a file.
 categories: []
 keywords: []
-action:
-  aliases: [readFile]
-  related:
-    - functions/os/FileExists
-    - functions/os/Getenv
-    - functions/os/ReadDir
-    - functions/os/Stat
-  returnType: string
-  signatures: [os.ReadFile PATH]
+params:
+  functions_and_methods:
+    aliases: [readFile]
+    returnType: string
+    signatures: [os.ReadFile PATH]
 aliases: [/functions/readfile]
 ---
 
-The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
+The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional.
 
 With a file named README.md in the root of your project directory:
 
index 6b6f668de481139052e0e626f4611eb3e6809fb4..63cb3f26ae98dea15f4b5e738a49a0bb8c704451 100644 (file)
@@ -3,19 +3,15 @@ title: os.Stat
 description: Returns a FileInfo structure describing a file or directory.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/os/FileExists
-    - functions/os/Getenv
-    - functions/os/ReadDir
-    - functions/os/ReadFile
-  returnType: os.FileInfo
-  signatures: [os.Stat PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: os.FileInfo
+    signatures: [os.Stat PATH]
 aliases: [/functions/os.stat]
 ---
 
-The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
+The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/configuration/all/#contentdir). A leading path separator (`/`) is optional.
 
 ```go-html-template
 {{ $f := os.Stat "README.md" }}
index c080d00925aa09df61cdd6906cbac9a2882a98bd..b125f70042bef02ce81f8cf0d827d333139105fe 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: OS functions
 linkTitle: os
-description: Template functions to interact with the operating system.
+description: Use these functions to interact with the operating system.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to interact with the operating system.
index aa93b409046a0acaff1bb49a892d182c28b0b10b..eb7eeafdcc665ac5a60ce292dca1bb20eb4a834e 100644 (file)
@@ -3,15 +3,11 @@ title: partials.Include
 description: Executes the given partial template, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output.
 categories: []
 keywords: []
-action:
-  aliases: [partial]
-  related:
-    - functions/go-template/return
-    - functions/partials/IncludeCached
-    - functions/go-template/template
-    - methods/page/Render
-  returnType: any
-  signatures: ['partials.Include NAME [CONTEXT]']
+params:
+  functions_and_methods:
+    aliases: [partial]
+    returnType: any
+    signatures: ['partials.Include NAME [CONTEXT]']
 aliases: [/functions/partial]
 ---
 
index 8b57c3399689c358b3589479270a0d4626c95841..3905ee15ed3456b41b49adb6b46f7ea4787437e3 100644 (file)
@@ -3,18 +3,11 @@ title: partials.IncludeCached
 description: Executes the given template and caches the result, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output.
 categories: []
 keywords: []
-action:
-  aliases: [partialCached]
-  related:
-    - functions/go-template/return
-    - functions/partials/Include
-    - functions/go-template/template
-    - methods/page/Render
-  returnType: any
-  signatures: ['partials.IncludeCached LAYOUT CONTEXT [VARIANT...]']
-signatures: 
-  - partials.IncludeCached NAME CONTEXT [VARIANT...]
-  - partialCached NAME CONTEXT [VARIANT...]
+params:
+  functions_and_methods:
+    aliases: [partialCached]
+    returnType: any
+    signatures: ['partials.IncludeCached LAYOUT CONTEXT [VARIANT...]']
 aliases: [/functions/partialcached]
 ---
 
@@ -22,11 +15,10 @@ Without a [`return`] statement, the `partialCached` function returns a string of
 
 The `partialCached` function can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation.
 
-{{% note %}}
-Each Site (or language) has its own `partialCached` cache, so each site will execute a partial once.
-
-Hugo renders pages in parallel, and will render the partial more than once with concurrent calls to the `partialCached` function. After Hugo caches the rendered partial, new pages entering the build pipeline will use the cached result.
-{{% /note %}}
+> [!note]
+> Each Site (or language) has its own `partialCached` cache, so each site will execute a partial once.
+>
+> Hugo renders pages in parallel, and will render the partial more than once with concurrent calls to the `partialCached` function. After Hugo caches the rendered partial, new pages entering the build pipeline will use the cached result.
 
 Here is the simplest usage:
 
@@ -36,9 +28,9 @@ Here is the simplest usage:
 
 Pass additional arguments to `partialCached` to create variants of the cached partial. For example, if you have a complex partial that should be identical when rendered for pages within the same section, use a variant based on section so that the partial is only rendered once per section:
 
-{{< code file=partial-cached-example.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 {{ partialCached "footer.html" . .Section }}
-{{< /code >}}
+```
 
 Pass additional arguments, of any data type, as needed to create unique variants:
 
@@ -46,7 +38,7 @@ Pass additional arguments, of any data type, as needed to create unique variants
 {{ partialCached "footer.html" . .Params.country .Params.province }}
 ```
 
-The variant arguments are not available to the underlying partial template; they are only used to create unique cache keys. 
+The variant arguments are not available to the underlying partial template; they are only used to create unique cache keys.
 
 To return a value from a partial template, it must contain only one `return` statement, placed at the end of the template:
 
index 0a7d4d6d0164cedd48bb120bc677980306729172..09b467399b1d7c4d6479cdb5645b6cf70e9535ed 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Partial functions
 linkTitle: partials
-description: Template functions to call partial templates.
+description: Use these functions to call partial templates.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to call partial templates.
index 2071f8bea71ac6ab8a5493f5172e07607c1beebd..39d52bfcb2bef89d76bd9e314ceb0f8f1e39de31 100644 (file)
@@ -1,19 +1,13 @@
 ---
 title: path.Base
-description: Replaces path separators with slashes (`/`) and returns the last element of the given path. 
+description: Replaces path separators with slashes (`/`) and returns the last element of the given path.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/BaseName
-    - functions/path/Clean
-    - functions/path/Dir
-    - functions/path/Ext
-    - functions/path/Join
-    - functions/path/Split
-  returnType: string
-  signatures: [path.Base PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.Base PATH]
 aliases: [/functions/path.base]
 ---
 
index 477c8d319606503751af520d4b5b0a2df43306df..468898a6f4d6c69aacde7670939337c8c5883242 100644 (file)
@@ -3,17 +3,11 @@ title: path.BaseName
 description: Replaces path separators with slashes (`/`) and returns the last element of the given path, removing the extension if present.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/Clean
-    - functions/path/Dir
-    - functions/path/Ext
-    - functions/path/Join
-    - functions/path/Split
-  returnType: string
-  signatures: [path.BaseName PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.BaseName PATH]
 aliases: [/functions/path.basename]
 ---
 
index 57a665c03a157b26c3bcbfa81f29e884e4bb301f..b9f2de0386191cd74a5af79872f6276c656f2526 100644 (file)
@@ -3,17 +3,11 @@ title: path.Clean
 description: Replaces path separators with slashes (`/`) and returns the shortest path name equivalent to the given path.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/BaseName
-    - functions/path/Dir
-    - functions/path/Ext
-    - functions/path/Join
-    - functions/path/Split
-  returnType: string
-  signatures: [path.Clean PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.Clean PATH]
 aliases: [/functions/path.clean]
 ---
 
index 6d5e5c97528d46cffbde11d999b92d3d404f1974..04d5500f5cf52fedf26aa3fcf5b6f80b8a242cbc 100644 (file)
@@ -3,17 +3,11 @@ title: path.Dir
 description: Replaces path separators with slashes (/) and returns all but the last element of the given path.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/BaseName
-    - functions/path/Clean
-    - functions/path/Ext
-    - functions/path/Join
-    - functions/path/Split
-  returnType: string
-  signatures: [path.Dir PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.Dir PATH]
 aliases: [/functions/path.dir]
 ---
 
index f3e47aecd773e636bf8611f5562895f7d00076bd..3646d02d007df11a5b9679cc387e6dc4f5f7fa98 100644 (file)
@@ -3,17 +3,11 @@ title: path.Ext
 description: Replaces path separators with slashes (`/`) and returns the file name extension of the given path.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/BaseName
-    - functions/path/Clean
-    - functions/path/Dir
-    - functions/path/Join
-    - functions/path/Split
-  returnType: string
-  signatures: [path.Ext PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.Ext PATH]
 aliases: [/functions/path.ext]
 ---
 
index 394389780768e2e9549d4e5d91502bd542ee659b..bda46737fb1c49e28df51d154c4ce78952cbe0d2 100644 (file)
@@ -3,18 +3,11 @@ title: path.Join
 description: Replaces path separators with slashes (`/`), joins the given path elements into a single path, and returns the shortest path name equivalent to the result.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/BaseName
-    - functions/path/Clean
-    - functions/path/Dir
-    - functions/path/Ext
-    - functions/path/Split
-    - functions/urls/JoinPath
-  returnType: string
-  signatures: [path.Join ELEMENT...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [path.Join ELEMENT...]
 aliases: [/functions/path.join]
 ---
 
index 329d73954a2a8bd986a3aab95d52486eebb3298d..d4f8d08e041501c0714cdc945300a8982a0d3f95 100644 (file)
@@ -1,19 +1,13 @@
 ---
 title: path.Split
-description: Replaces path separators with slashes (`/`) and splits the resulting path immediately following the final slash, separating it into a directory and file name component. 
+description: Replaces path separators with slashes (`/`) and splits the resulting path immediately following the final slash, separating it into a directory and file name component.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Base
-    - functions/path/BaseName
-    - functions/path/Clean
-    - functions/path/Dir
-    - functions/path/Ext
-    - functions/path/Join
-  returnType: paths.DirFile
-  signatures: [path.Split PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: paths.DirFile
+    signatures: [path.Split PATH]
 aliases: [/functions/path.split]
 ---
 
index 2d7ce8e90ec2d72b0ac3fe1b3c957938b1361bd5..49b2927cee15b15b3e4a3b035a7e4297e52726e9 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Path functions
 linkTitle: path
-description: Template functions to work with file paths.
+description: Use these functions to work with file paths.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with file paths.
index ada5a221d67948be63243470206f3a65ccd5ed2f..55b9811d79284eea450c0e536aad6cfdeb0760c6 100644 (file)
@@ -3,12 +3,11 @@ title: reflect.IsMap
 description: Reports whether the given value is a map.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/reflect/IsSlice
-  returnType: bool
-  signatures: [reflect.IsMap INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [reflect.IsMap INPUT]
 aliases: [/functions/reflect.ismap]
 ---
 
index cda24a5e1b75e0f4761525a53dc3cdbd79fd6f3e..3a5c1229bcce2e14e190769425d56f3f679c7c12 100644 (file)
@@ -3,12 +3,11 @@ title: reflect.IsSlice
 description: Reports whether the given value is a slice.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/reflect/IsMap
-  returnType: bool
-  signatures: [reflect.IsSlice INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [reflect.IsSlice INPUT]
 aliases: [/functions/reflect.isslice]
 ---
 
index 711908ee2b967165c50bed9a0f730ce747bf4d8e..58f00c3deb31d5a1da4ea424a042ec11dddb69e1 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Reflect functions
 linkTitle: reflect
-description: Template functions to determine a value's data type.
+description: Use these functions to determine a value's data type.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to determine a value's data type.
index 757aff780a09bcbab57d8391a3a5729f2c7a98da..799823fc579ba371b1006219847b43ba9314f8c1 100644 (file)
@@ -3,15 +3,16 @@ title: resources.Babel
 description: Compiles the given JavaScript resource with Babel.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: resource.Resource
-  signatures: ['resources.Babel [OPTIONS] RESOURCE']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['resources.Babel [OPTIONS] RESOURCE']
 expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0
 ---
 
-{{% deprecated-in 0.128.0 %}}
+{{< deprecated-in 0.128.0 >}}
 Use [`js.Babel`] instead.
 
 [`js.Babel`]: /functions/js/babel/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index ba9dcde0c203f411e03127f8e39055daee8812d9..99e2b97715f6bfa5b6c34d088db734bd738fed37 100644 (file)
@@ -3,16 +3,11 @@ title: resources.ByType
 description: Returns a collection of global resources of the given media type, or nil if none found.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/Get
-    - functions/resources/GetMatch
-    - functions/resources/GetRemote
-    - functions/resources/Match
-    - methods/page/Resources
-  returnType: resource.Resources
-  signatures: [resources.ByType MEDIATYPE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resources
+    signatures: [resources.ByType MEDIATYPE]
 ---
 
 The [media type] is typically one of `image`, `text`, `audio`, `video`, or `application`.
@@ -23,12 +18,10 @@ The [media type] is typically one of `image`, `text`, `audio`, `video`, or `appl
 {{ end }}
 ```
 
-{{% note %}}
-This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
-
-For page resources, use the [`Resources.ByType`] method on a `Page` object.
+> [!note]
+This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
+>
+For page resources, use the [`Resources.ByType`] method on a `Page` object.
 
 [`Resources.ByType`]: /methods/page/resources/
-{{% /note %}}
-
 [media type]: https://en.wikipedia.org/wiki/Media_type
index 6e81f3f44d30513012a93ce1498f2de9a6275272..fe7226e1b4a38279aaf7072dcacd94dd7faba669 100644 (file)
@@ -3,11 +3,11 @@ title: resources.Concat
 description: Returns a concatenated slice of resources.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: resource.Resource
-  signatures: ['resources.Concat TARGETPATH [RESOURCE...]']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['resources.Concat TARGETPATH [RESOURCE...]']
 ---
 
 The `resources.Concat` function returns a concatenated slice of resources, caching the result using the target path as its cache key. Each resource must have the same [media type].
index 3be3dfd5779c2cfb33fbccb6292375da677bf566..220a3db4ce9b52d311a98678f17c2aea5c57d5ff 100644 (file)
@@ -2,11 +2,11 @@
 title: resources.Copy
 description: Copies the given resource to the target path.
 categories: []
-action:
-  aliases: []
-  related: []
-  returnType: resource.Resource
-  signatures: [resources.Copy TARGETPATH RESOURCE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: [resources.Copy TARGETPATH RESOURCE]
 ---
 
 ```go-html-template
@@ -23,6 +23,5 @@ The relative URL of the new published resource will be:
 /img/new-image-name.jpg
 ```
 
-{{% note %}}
-Use the `resources.Copy` function with global, page, and remote resources.
-{{% /note %}}
+> [!note]
+> Use the `resources.Copy` function with global, page, and remote resources.
index 0c90a03b335caf12f2661fb86bd9b14011b6344a..bff83832e006526eb4d5853c73bdc3ec5b0797f6 100644 (file)
@@ -3,30 +3,25 @@ title: resources.ExecuteAsTemplate
 description: Returns a resource created from a Go template, parsed and executed with the given context.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/FromString
-  returnType: resource.Resource
-  signatures: [resources.ExecuteAsTemplate TARGETPATH CONTEXT RESOURCE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: [resources.ExecuteAsTemplate TARGETPATH CONTEXT RESOURCE]
 ---
 
 The `resources.ExecuteAsTemplate` function returns a resource created from a Go template, parsed and executed with the given context, caching the result using the target path as its cache key.
 
 Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] methods.
 
-[`publish`]: /methods/resource/publish/
-[`permalink`]: /methods/resource/permalink/
-[`relpermalink`]: /methods/resource/relpermalink/
-
 Let's say you have a CSS file that you wish to populate with values from your site configuration:
 
-{{< code file=assets/css/template.css lang=go-html-template >}}
+```go-html-template {file="assets/css/template.css"}
 body {
   background-color: {{ site.Params.style.bg_color }};
   color: {{ site.Params.style.text_color }};
 }
-{{< /code >}}
+```
 
 And your site configuration contains:
 
@@ -54,9 +49,13 @@ The example above:
 
 The result is:
 
-{{< code file=public/css/main.css >}}
+```css {file="public/css/main.css"}
 body {
   background-color: #fefefe;
   color: #222;
 }
-{{< /code >}}
+```
+
+[`publish`]: /methods/resource/publish/
+[`permalink`]: /methods/resource/permalink/
+[`relpermalink`]: /methods/resource/relpermalink/
index 17222784ed68aeb89e77860b317f0c90807c1954..6757a0b6f8845f51c9da54f3f297c1d2cbd698ac 100644 (file)
@@ -3,16 +3,11 @@ title: resources.Fingerprint
 description: Cryptographically hashes the content of the given resource.
 categories: []
 keywords: []
-action:
-  aliases: [fingerprint]
-  related:
-    - functions/resources/Minify
-    - functions/css/Sass
-    - functions/css/TailwindCSS
-    - functions/js/Build
-    - functions/js/Babel
-  returnType: resource.Resource
-  signatures: ['resources.Fingerprint [ALGORITHM] RESOURCE']
+params:
+  functions_and_methods:
+    aliases: [fingerprint]
+    returnType: resource.Resource
+    signatures: ['resources.Fingerprint [ALGORITHM] RESOURCE']
 ---
 
 ```go-html-template
index c13db35d6394524489e0d8a132beef7acfd92418..4cd04f609f95e846f06ef42087ee2ca6bb7434b1 100644 (file)
@@ -3,12 +3,11 @@ title: resources.FromString
 description: Returns a resource created from a string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/ExecuteAsTemplate
-  returnType: resource.Resource
-  signatures: [resources.FromString TARGETPATH STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: [resources.FromString TARGETPATH STRING]
 ---
 
 The `resources.FromString` function returns a resource created from a string, caching the result using the target path as its cache key.
index c6450febf42f6d2177d32deb9ce0a93fe90018ad..db91f0a9a8b2eda2dc833f2d612a948c5b9d3283 100644 (file)
@@ -3,16 +3,11 @@ title: resources.Get
 description: Returns a global resource from the given path, or nil if none found.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/ByType
-    - functions/resources/GetMatch
-    - functions/resources/GetRemote
-    - functions/resources/Match
-    - methods/page/Resources
-  returnType: resource.Resource
-  signatures: [resources.Get PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: [resources.Get PATH]
 ---
 
 ```go-html-template
@@ -21,10 +16,9 @@ action:
 {{ end }}
 ```
 
-{{% note %}}
-This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
-
-For page resources, use the [`Resources.Get`] method on a `Page` object.
+> [!note]
+This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
+>
+For page resources, use the [`Resources.Get`] method on a `Page` object.
 
 [`Resources.Get`]: /methods/page/resources/
-{{% /note %}}
index 7af2e7be87be454c379400f6651067d9b533e9b8..8f1b004fe697bdb244681f1fce85ab4cfcfa5737 100644 (file)
@@ -3,16 +3,11 @@ title: resources.GetMatch
 description: Returns the first global resource from paths matching the given glob pattern, or nil if none found.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/ByType
-    - functions/resources/Get
-    - functions/resources/GetRemote
-    - functions/resources/Match
-    - methods/page/Resources
-  returnType: resource.Resource
-  signatures: [resources.GetMatch PATTERN]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: [resources.GetMatch PATTERN]
 ---
 
 ```go-html-template
@@ -21,16 +16,13 @@ action:
 {{ end }}
 ```
 
-{{% note %}}
-This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
+> [!note]
+> This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
+>
+> For page resources, use the [`Resources.GetMatch`] method on a `Page` object.
 
-For page resources, use the [`Resources.GetMatch`] method on a `Page` object.
+Hugo determines a match using a case-insensitive [glob](g) pattern.
 
-[`Resources.GetMatch`]: /methods/page/resources/
-{{% /note %}}
-
-Hugo determines a match using a case-insensitive [glob pattern].
+{{% include "/_common/glob-patterns.md" %}}
 
-{{% include "functions/_common/glob-patterns.md" %}}
-
-[glob pattern]: https://github.com/gobwas/glob#example
+[`Resources.GetMatch`]: /methods/page/resources/
index 3b294e5a1dbf7ec517b1e94c220c30484d9e19da..c6f6742b316857f6adda1ec41f8c921aad0be741 100644 (file)
@@ -3,19 +3,11 @@ title: resources.GetRemote
 description: Returns a remote resource from the given URL, or nil if none found.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/data/GetCSV
-    - functions/data/GetJSON
-    - functions/resources/ByType
-    - functions/resources/Get
-    - functions/resources/GetMatch
-    - functions/resources/Match
-    - methods/page/Resources
-  returnType: resource.Resource
-  signatures: ['resources.GetRemote URL [OPTIONS]']
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['resources.GetRemote URL [OPTIONS]']
 ---
 
 {{< new-in 0.141.0 >}}
@@ -69,11 +61,10 @@ The `resources.GetRemote` function takes an optional map of options.
 
 ## Options examples
 
-{{% note %}}
-For brevity, the examples below do not include [error handling].
+> [!note]
+For brevity, the examples below do not include [error handling].
 
 [error handling]: #error-handling
-{{% /note %}}
 
 To include a header:
 
@@ -148,15 +139,12 @@ When retrieving remote data, use the [`transform.Unmarshal`] function to [unmars
 {{ end }}
 ```
 
-{{% note %}}
-When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`.
-
-In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead:
-
-`{{ $data = .Content | transform.Unmarshal }}`
-
-[Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
-{{% /note %}}
+> [!note]
+> When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`.
+>
+> In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead:
+>
+> `{{ $data = .Content | transform.Unmarshal }}`
 
 ## Error handling
 
@@ -164,9 +152,8 @@ Use the [`try`] statement to capture HTTP request errors. If you do not handle t
 
 [`try`]: /functions/go-template/try
 
-{{% note %}}
-Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil.
-{{% /note %}}
+> [!note]
+> Hugo does not classify an HTTP response with status code 404 as an error. In this case `resources.GetRemote` returns nil.
 
 ```go-html-template
 {{ $url := "https://broken-example.org/images/a.jpg" }}
@@ -206,9 +193,7 @@ The [`Data`] method on a resource returned by the `resources.GetRemote` function
 
 Resources returned from `resources.GetRemote` are cached to disk. See [configure file caches] for details.
 
-By default, Hugo derives the cache key from the arguments passed to the function, the URL and the options map, if any.
-
-Override the cache key by setting a `key` in the options map. Use this approach to have more control over how often Hugo fetches a remote resource.
+By default, Hugo derives the cache key from the arguments passed to the function. Override the cache key by setting a `key` in the options map. Use this approach to have more control over how often Hugo fetches a remote resource.
 
 ```go-html-template
 {{ $url := "https://example.org/images/a.jpg" }}
@@ -217,7 +202,7 @@ Override the cache key by setting a `key` in the options map. Use this approach
 {{ $resource := resources.GetRemote $url $opts }}
 ```
 
-[configure file caches]: /getting-started/configuration/#configure-file-caches
+[configure file caches]: /configuration/caches/
 
 ## Security
 
@@ -245,7 +230,7 @@ mediaTypes = ['^image/avif$','^application/vnd\.api\+json$']
 Note that the entry above is:
 
 - An _addition_ to the allowlist; it does not _replace_ the allowlist
-- An array of regular expressions
+- An array of [regular expressions](g)
 
 [allowlist]: https://en.wikipedia.org/wiki/Whitelist
 [Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
index 3e65555ba5b14db4ae1a6c5549afd5a8d0908186..6c7d83649f03b7e0fe43931a4df9999a69e0a250 100644 (file)
@@ -3,16 +3,11 @@ title: resources.Match
 description: Returns a collection of global resources from paths matching the given glob pattern, or nil if none found.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/resources/ByType
-    - functions/resources/Get
-    - functions/resources/GetMatch
-    - functions/resources/GetRemote
-    - methods/page/Resources
-  returnType: resource.Resources
-  signatures: [resources.Match PATTERN]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resources
+    signatures: [resources.Match PATTERN]
 ---
 
 ```go-html-template
@@ -21,16 +16,14 @@ action:
 {{ end }}
 ```
 
-{{% note %}}
-This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
-
-For page resources, use the [`Resources.Match`] method on a `Page` object.
-
-[`Resources.Match`]: /methods/page/resources/
-{{% /note %}}
+> [!note]
+> This function operates on global resources. A global resource is a file within the `assets` directory, or within any directory mounted to the `assets` directory.
+>
+> For page resources, use the [`Resources.Match`] method on a `Page` object.
 
 Hugo determines a match using a case-insensitive [glob pattern].
 
-{{% include "functions/_common/glob-patterns.md" %}}
+{{% include "/_common/glob-patterns.md" %}}
 
+[`Resources.Match`]: /methods/page/resources/
 [glob pattern]: https://github.com/gobwas/glob#example
index 25314fd6aaa759abc918b91bc605760d392232b7..183e6671ad7665551d83cca67a0eed16b66ee4e2 100644 (file)
@@ -3,16 +3,11 @@ title: resources.Minify
 description: Minifies the given resource.
 categories: []
 keywords: []
-action:
-  aliases: [minify]
-  related:
-    - functions/resources/Fingerprint
-    - functions/css/Sass
-    - functions/css/TailwindCSS
-    - functions/js/Build
-    - functions/js/Babel
-  returnType: resource.Resource
-  signatures: [resources.Minify RESOURCE]
+params:
+  functions_and_methods:
+    aliases: [minify]
+    returnType: resource.Resource
+    signatures: [resources.Minify RESOURCE]
 ---
 
 ```go-html-template
index 5d3f85a302ff6934588f4e86cfc03c3971dc813b..3ec0b84cf556565ffc91609b557d36b4de42e94b 100644 (file)
@@ -3,15 +3,16 @@ title: resources.PostCSS
 description: Processes the given resource with PostCSS using any PostCSS plugin.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: resource.Resource
-  signatures: ['resources.PostCSS [OPTIONS] RESOURCE']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['resources.PostCSS [OPTIONS] RESOURCE']
 expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0
 ---
 
-{{% deprecated-in 0.128.0 %}}
+{{< deprecated-in 0.128.0 >}}
 Use [`css.PostCSS`] instead.
 
 [`css.PostCSS`]: /functions/css/postcss/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index b157d5fd9922cfc3d8ac23a1cea98790b6a302cc..d7043769475af9c972f2b942c97fd286629c1a21 100644 (file)
@@ -3,14 +3,11 @@ title: resources.PostProcess
 description: Processes the given resource after the build.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/css/PostCSS
-    - functions/css/Sass
-  returnType: postpub.PostPublishedResource
-  signatures: [resources.PostProcess RESOURCE]
-toc: true
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: postpub.PostPublishedResource
+    signatures: [resources.PostProcess RESOURCE]
 ---
 
 The `resources.PostProcess` function delays resource transformation steps until the build is complete, primarily for tasks like removing unused CSS rules.
@@ -22,19 +19,11 @@ In this example, after the build is complete, Hugo will:
 1. Purge unused CSS using the [PurgeCSS] plugin for [PostCSS]
 2. Add vendor prefixes to CSS rules using the [Autoprefixer] plugin for PostCSS
 3. [Minify] the CSS
-4. [Fingerprint] the CSS 
-
-[autoprefixer]: https://github.com/postcss/autoprefixer
-[fingerprint]: /functions/resources/fingerprint/
-[minify]: /functions/resources/minify/
-[postcss]: /functions/css/postcss/
-[purgecss]: https://purgecss.com/plugins/postcss.html
+4. [Fingerprint] the CSS
 
 Step 1
 : Install [Node.js].
 
-[node.js]: https://nodejs.org/en/download
-
 Step 2
 : Install the required Node.js packages in the root of your project:
 
@@ -45,8 +34,6 @@ npm i -D postcss postcss-cli autoprefixer @fullhuman/postcss-purgecss
 Step 3
 : Enable creation of the `hugo_stats.json` file when building the site. If you are only using this for the production build, consider placing it below [`config/production`].
 
-[`config/production`]: /getting-started/configuration/#configuration-directory
-
 {{< code-toggle file=hugo >}}
 [build.buildStats]
 enable = true
@@ -54,12 +41,10 @@ enable = true
 
 See the [configure build] documentation for details and options.
 
-[configure build]: /getting-started/configuration/#configure-build
-
 Step 4
 : Create a PostCSS configuration file in the root of your project.
 
-{{< code file="postcss.config.js" copy=true >}}
+```js {file="postcss.config.js" copy=true}
 const autoprefixer = require('autoprefixer');
 const purgeCSSPlugin = require('@fullhuman/postcss-purgecss').default;
 
@@ -83,11 +68,10 @@ module.exports = {
     autoprefixer,
   ]
 };
-{{< /code >}}
+```
 
-{{% note %}}
-{{% include "functions/resources/_common/postcss-windows-warning.md" %}}
-{{% /note %}}
+> [!note]
+> If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example] and issue [#7333].
 
 Step 5
 : Place your CSS file within the `assets/css` directory.
@@ -132,7 +116,7 @@ HUGO_FILE_X
 - `postcss.config.js`
 - `tailwind.config.js`
 
-For each file, Hugo creates a corresponding environment variable named `HUGO_FILE_:filename:`, where `:filename:` is the uppercase version of the filename with periods replaced by underscores.  This allows you to access these files within your JavaScript, for example:
+For each file, Hugo creates a corresponding environment variable named `HUGO_FILE_:filename:`, where `:filename:` is the uppercase version of the filename with periods replaced by underscores. This allows you to access these files within your JavaScript, for example:
 
 ```js
 let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js';
@@ -144,10 +128,21 @@ Do not use `resources.PostProcess` when running Hugo's built-in development serv
 
 The `resources.PostProcess` function only works within templates that produce HTML files.
 
-You cannot manipulate the values returned from the resources methods. For example, the `strings.ToUpper` function in this example will not work as expected:
+You cannot manipulate the values returned from the resource's methods. For example, the `strings.ToUpper` function in this example will not work as expected:
 
 ```go-html-template
 {{ $css := resources.Get "css/main.css" }}
 {{ $css = $css | css.PostCSS | minify | fingerprint | resources.PostProcess }}
 {{ $css.RelPermalink | strings.ToUpper }}
 ```
+
+[#7333]: https://github.com/gohugoio/hugo/issues/7333
+[`config/production`]: /configuration/introduction/#configuration-directory
+[Autoprefixer]: https://github.com/postcss/autoprefixer
+[configure build]: /configuration/build/
+[Fingerprint]: /functions/resources/fingerprint/
+[Minify]: /functions/resources/minify/
+[Node.js]: https://nodejs.org/en
+[PostCSS]: https://postcss.org/
+[PurgeCSS]: https://github.com/FullHuman/purgecss
+[this example]: https://github.com/postcss/postcss-load-config#packagejson
index 54c34a6b0f6f1476e7e4c7d332a2b2202588c966..7be1b8d457a618a33bb584b605ca34acabbfa15a 100644 (file)
@@ -3,15 +3,16 @@ title: resources.ToCSS
 description: Transpiles Sass to CSS.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: resource.Resource
-  signatures: ['resources.ToCSS [OPTIONS] RESOURCE']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: resource.Resource
+    signatures: ['resources.ToCSS [OPTIONS] RESOURCE']
 expiryDate: 2026-06-24 # deprecated 2024-06-24 in v0.128.0
 ---
 
-{{% deprecated-in 0.128.0 %}}
+{{< deprecated-in 0.128.0 >}}
 Use [`css.Sass`] instead.
 
 [`css.Sass`]: /functions/css/sass/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
diff --git a/content/en/functions/resources/_common/_index.md b/content/en/functions/resources/_common/_index.md
deleted file mode 100644 (file)
index cb36fea..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
----
-_build:
-  list: never
-  publishResources: false
-  render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/resources/_common/postcss-windows-warning.md b/content/en/functions/resources/_common/postcss-windows-warning.md
deleted file mode 100644 (file)
index e2d9785..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example] and issue [#7333].
-
-[this example]: https://github.com/postcss/postcss-load-config#packagejson
-[#7333]: https://github.com/gohugoio/hugo/issues/7333
index 364b9448d4f3357b423613d34ff567300c1a2c06..030cafd42cadff861f4d6988d1ca793ebb671b2a 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Resource functions
 linkTitle: resources
-description: Template functions to work with resources.
+description: Use these functions to work with resources.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with resources.
index 5d67789b63265c92d2f16cdfdf4b8f1fcadf4d19..12ebbf8aab72df462a86214c32bc3847771aa224 100644 (file)
@@ -3,23 +3,17 @@ title: safe.CSS
 description: Declares the given string as a safe CSS string.
 categories: []
 keywords: []
-action:
-  aliases: [safeCSS]
-  related:
-    - functions/safe/HTML
-    - functions/safe/HTMLAttr
-    - functions/safe/JS
-    - functions/safe/JSStr
-    - functions/safe/URL
-  returnType: template.CSS
-  signatures: [safe.CSS INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeCSS]
+    returnType: template.CSS
+    signatures: [safe.CSS INPUT]
 aliases: [/functions/safecss]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
@@ -34,8 +28,6 @@ Use of this type presents a security risk: the encapsulated content should come
 
 See the [Go documentation] for details.
 
-[Go documentation]: https://pkg.go.dev/html/template#CSS
-
 ## Example
 
 Without a safe declaration:
@@ -51,9 +43,8 @@ Hugo renders the above to:
 <p style="ZgotmplZ">foo</p>
 ```
 
-{{% note %}}
-`ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime.
-{{% /note %}}
+> [!note]
+> `ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime.
 
 To declare the string as safe:
 
@@ -67,3 +58,5 @@ Hugo renders the above to:
 ```html
 <p style="color: red;">foo</p>
 ```
+
+[Go documentation]: https://pkg.go.dev/html/template#CSS
index ad1b3a68169f4e08bdf8e3850d9630e2cc1b79b2..25ffb33184a015d43919358083c38963a65482f6 100644 (file)
@@ -3,23 +3,17 @@ title: safe.HTML
 description: Declares the given string as a safeHTML string.
 categories: []
 keywords: []
-action:
-  aliases: [safeHTML]
-  related:
-    - functions/safe/CSS
-    - functions/safe/HTMLAttr
-    - functions/safe/JS
-    - functions/safe/JSStr
-    - functions/safe/URL
-  returnType: template.HTML
-  signatures: [safe.HTML INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeHTML]
+    returnType: template.HTML
+    signatures: [safe.HTML INPUT]
 aliases: [/functions/safehtml]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
index d01a3908aa30fa6a660ef94b2f35e4136c41cc19..7cfefdfb2dba771ed8510572292cdf7722b5917d 100644 (file)
@@ -3,28 +3,22 @@ title: safe.HTMLAttr
 description: Declares the given key-value pair as a safe HTML attribute.
 categories: []
 keywords: []
-action:
-  aliases: [safeHTMLAttr]
-  related:
-    - functions/safe/CSS
-    - functions/safe/HTML
-    - functions/safe/JS
-    - functions/safe/JSStr
-    - functions/safe/URL
-  returnType: template.HTMLAttr
-  signatures: [safe.HTMLAttr INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeHTMLAttr]
+    returnType: template.HTMLAttr
+    signatures: [safe.HTMLAttr INPUT]
 aliases: [/functions/safehtmlattr]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
 Use the `safe.HTMLAttr` function to encapsulate an HTML attribute from a trusted source.
+
 Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output.
 
 See the [Go documentation] for details.
index d0d3a227af714d030622bd1857b697cc18e624d7..0c4d9009d16986c7ddf1f1e9335e51945a1baab3 100644 (file)
@@ -3,23 +3,17 @@ title: safe.JS
 description: Declares the given string as a safe JavaScript expression.
 categories: []
 keywords: []
-action:
-  aliases: [safeJS]
-  related:
-    - functions/safe/CSS
-    - functions/safe/HTML
-    - functions/safe/HTMLAttr
-    - functions/safe/JSStr
-    - functions/safe/URL
-  returnType: template.JS
-  signatures: [safe.JS INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeJS]
+    returnType: template.JS
+    signatures: [safe.JS INPUT]
 aliases: [/functions/safejs]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
index e7e232d1be3c4f8c4d1e32d9c9d56e31a49b6774..81946a14cbc997f0cee18a4888becfef1c89d326 100644 (file)
@@ -3,23 +3,17 @@ title: safe.JSStr
 description: Declares the given string as a safe JavaScript string.
 categories: []
 keywords: []
-action:
-  aliases: [safeJSStr]
-  related:
-    - functions/safe/CSS
-    - functions/safe/HTML
-    - functions/safe/HTMLAttr
-    - functions/safe/JS
-    - functions/safe/URL
-  returnType: template.JSStr
-  signatures: [safe.JSStr INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeJSStr]
+    returnType: template.JSStr
+    signatures: [safe.JSStr INPUT]
 aliases: [/functions/safejsstr]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
index e4b3224dacbe5792bd20d0b8164453c3413de235..44bed8064f0baa665aab01d0720e47cd021e6149 100644 (file)
@@ -3,23 +3,17 @@ title: safe.URL
 description: Declares the given string as a safe URL or URL substring.
 categories: []
 keywords: []
-action:
-  aliases: [safeURL]
-  related:
-    - functions/safe/CSS
-    - functions/safe/HTML
-    - functions/safe/HTMLAttr
-    - functions/safe/JS
-    - functions/safe/JSStr
-  returnType: template.URL
-  signatures: [safe.URL INPUT]
-toc: true
+params:
+  functions_and_methods:
+    aliases: [safeURL]
+    returnType: template.URL
+    signatures: [safe.URL INPUT]
 aliases: [/functions/safeurl]
 ---
 
 ## Introduction
 
-{{% include "functions/_common/go-html-template-package.md" %}}
+{{% include "/_common/functions/go-html-template-package.md" %}}
 
 ## Usage
 
@@ -33,8 +27,6 @@ Use of this type presents a security risk: the encapsulated content should come
 
 See the [Go documentation] for details.
 
-[Go documentation]: https://pkg.go.dev/html/template#URL
-
 ## Example
 
 Without a safe declaration:
@@ -50,9 +42,8 @@ Hugo renders the above to:
 <a href="#ZgotmplZ">IRC</a>
 ```
 
-{{% note %}}
-`ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime.
-{{% /note %}}
+> [!note]
+> `ZgotmplZ` is a special value that indicates that unsafe content reached a CSS or URL context at runtime.
 
 To declare the string as safe:
 
@@ -66,3 +57,5 @@ Hugo renders the above to:
 ```html
 <a href="irc://irc.freenode.net/#golang">IRC</a>
 ```
+
+[Go documentation]: https://pkg.go.dev/html/template#URL
index f80a2cff45cc877cf6cd2f52e62b98de1a45cf00..8d5697b8dd503500787782bc4048698c495e4064 100644 (file)
@@ -1,14 +1,7 @@
 ---
 title: Safe functions
 linkTitle: safe
-description: Template functions to declare a value as safe in the context of Go's html/template package.
+description: Use these functions to declare a value as safe in the context of Go's html/template package.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to declare a value as safe in the context of Go's [html/template] package.
-
-[html/template]: https://pkg.go.dev/html/template
index 8024758ba50d386802dcebc756e9adee03cc441e..1ff2b7f475b4d69fbccb6d70876c130253f20518 100644 (file)
@@ -3,17 +3,11 @@ title: strings.Chomp
 description: Returns the given string, removing all trailing newline characters and carriage returns.
 categories: []
 keywords: []
-action:
-  aliases: [chomp]
-  related:
-    - functions/strings/Trim
-    - functions/strings/TrimSpace
-    - functions/strings/TrimLeft
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimRight
-    - functions/strings/TrimSuffix
-  returnType: any
-  signatures: [strings.Chomp STRING]
+params:
+  functions_and_methods:
+    aliases: [chomp]
+    returnType: any
+    signatures: [strings.Chomp STRING]
 aliases: [/functions/chomp]
 ---
 
index 0344b298182fcb55b5a4bbc6154ad6e150eedd59..e0e3b087c6a657da39bdd4aeb290be05e6aff45a 100644 (file)
@@ -3,16 +3,11 @@ title: strings.Contains
 description: Reports whether the given string contains the given substring.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/ContainsAny
-    - functions/strings/ContainsNonSpace
-    - functions/strings/HasPrefix
-    - functions/strings/HasSuffix
-    - functions/collections/In
-  returnType: bool
-  signatures: [strings.Contains STRING SUBSTRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [strings.Contains STRING SUBSTRING]
 aliases: [/functions/strings.contains]
 ---
 
index f331d09f789b12585373f77d7c4328160bd008d5..521ff34219ec07dca0b6d6ab92ac4e401ee706c5 100644 (file)
@@ -3,16 +3,11 @@ title: strings.ContainsAny
 description: Reports whether the given string contains any character within the given set.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Contains
-    - functions/strings/ContainsNonSpace
-    - functions/strings/HasPrefix
-    - functions/strings/HasSuffix
-    - functions/collections/In
-  returnType: bool
-  signatures: [strings.ContainsAny STRING SET]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [strings.ContainsAny STRING SET]
 aliases: [/functions/strings.containsany]
 ---
 
index eea86f396e08db0339811568102627d009ece682..7b8dcb7303bdb4e6c67ff2948a27f17051f42d7d 100644 (file)
@@ -3,16 +3,11 @@ title: strings.ContainsNonSpace
 description: Reports whether the given string contains any non-space characters as defined by Unicode.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Contains
-    - functions/strings/ContainsAny
-    - functions/strings/HasPrefix
-    - functions/strings/HasSuffix
-    - functions/collections/In
-  returnType: bool
-  signatures: [strings.ContainsNonSpace STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [strings.ContainsNonSpace STRING]
 aliases: [/functions/strings.containsnonspace]
 ---
 
index 43b5baeffc814dde3975cc8076aab2c9d3687a1e..76378b27d7bce900e0d76248e9acbc7c5f990727 100644 (file)
@@ -3,15 +3,11 @@ title: strings.Count
 description: Returns the number of non-overlapping instances of the given substring within the given string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/len
-    - functions/strings/CountRunes
-    - functions/strings/CountWords
-    - functions/strings/RuneCount
-  returnType: int
-  signatures: [strings.Count SUBSTR STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: int
+    signatures: [strings.Count SUBSTR STRING]
 aliases: [/functions/strings.count]
 ---
 
index 87d9da680a6796b89f9f5b9722f8a8143d378ecd..8ad6b00da627ad8a4578a7efc7ae7b4f57c96b16 100644 (file)
@@ -3,15 +3,11 @@ title: strings.CountRunes
 description: Returns the number of runes in the given string excluding whitespace.
 categories: []
 keywords: []
-action:
-  aliases: [countrunes]
-  related:
-    - functions/go-template/len
-    - functions/strings/Count
-    - functions/strings/CountWords
-    - functions/strings/RuneCount
-  returnType: int
-  signatures: [strings.CountRunes INPUT]
+params:
+  functions_and_methods:
+    aliases: [countrunes]
+    returnType: int
+    signatures: [strings.CountRunes INPUT]
 aliases: [/functions/countrunes]
 ---
 
index 3e4ec0465885e258f289bc7d2d5ae53cd389ea48..e50febf69eb9eda991fa7409e8a2ebaae07efe1b 100644 (file)
@@ -3,15 +3,11 @@ title: strings.CountWords
 description: Returns the number of words in the given string.
 categories: []
 keywords: []
-action:
-  aliases: [countwords]
-  related:
-    - functions/go-template/len
-    - functions/strings/Count
-    - functions/strings/CountRunes
-    - functions/strings/RuneCount
-  returnType: int
-  signatures: [strings.CountWords INPUT]
+params:
+  functions_and_methods:
+    aliases: [countwords]
+    returnType: int
+    signatures: [strings.CountWords INPUT]
 aliases: [/functions/countwords]
 ---
 
index 281b7676368e25fdf3fcb28a21442a28c3f47a5f..1426764a96961b0b807d22ae6337f9236b1fb447 100644 (file)
@@ -3,10 +3,10 @@ title: strings.Diff
 description: Returns an anchored diff of the two texts OLD and NEW in the unified diff format. If OLD and NEW are identical, returns an empty string.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [strings.Diff OLDNAME OLD NEWNAME NEW]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [strings.Diff OLDNAME OLD NEWNAME NEW]
 ---
 
 {{< new-in 0.125.0 />}}
index 3feb15bbdf413a86a77dcf06e83a60c32159431f..d039607fb879561a10b3b12f36c9f5efb5b0e9a8 100644 (file)
@@ -3,20 +3,17 @@ title: strings.FindRESubmatch
 description: Returns a slice of all successive matches of the regular expression. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions.
 categories: []
 keywords: []
-action:
-  aliases: [findRESubmatch]
-  related:
-    - functions/strings/FindRE
-    - functions/strings/Replace
-    - functions/strings/ReplaceRE
-  returnType: '[][]string'
-  signatures: ['strings.FindRESubmatch PATTERN INPUT [LIMIT]']
+params:
+  functions_and_methods:
+    aliases: [findRESubmatch]
+    returnType: '[][]string'
+    signatures: ['strings.FindRESubmatch PATTERN INPUT [LIMIT]']
 aliases: [/functions/findresubmatch]
 ---
 
 By default, `findRESubmatch` finds all matches. You can limit the number of matches with an optional LIMIT argument. A return value of nil indicates no match.
 
-{{% include "functions/_common/regular-expressions.md" %}}
+{{% include "/_common/functions/regular-expressions.md" %}}
 
 ## Demonstrative examples
 
@@ -85,6 +82,5 @@ https://example.org
 https://gohugo.io
 ```
 
-{{% note %}}
-You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
-{{% /note %}}
+> [!note]
+> You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
index 861f38a12941906521bdcaae6046e06e3a7bd4a0..45129ec913b5565cb51119af27d8918e59c4948b 100644 (file)
@@ -3,19 +3,16 @@ title: strings.FindRE
 description: Returns a slice of strings that match the regular expression.
 categories: []
 keywords: []
-action:
-  aliases: [findRE]
-  related:
-    - functions/strings/FindRESubmatch
-    - functions/strings/Replace
-    - functions/strings/ReplaceRE
-  returnType: '[]string'
-  signatures: ['strings.FindRE PATTERN INPUT [LIMIT]']
+params:
+  functions_and_methods:
+    aliases: [findRE]
+    returnType: '[]string'
+    signatures: ['strings.FindRE PATTERN INPUT [LIMIT]']
 aliases: [/functions/findre]
 ---
 By default, `findRE` finds all matches. You can limit the number of matches with an optional LIMIT argument.
 
-{{% include "functions/_common/regular-expressions.md" %}}
+{{% include "/_common/functions/regular-expressions.md" %}}
 
 This example returns a slice of all second level headings (`h2` elements) within the rendered `.Content`:
 
@@ -31,6 +28,5 @@ To limit the number of matches to one:
 {{ findRE `(?s)<h2.*?>.*?</h2>` .Content 1 }}
 ```
 
-{{% note %}}
-You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
-{{% /note %}}
+> [!note]
+> You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
index 8826b4f18515689e08601061472b4f3715229dfb..41bf1f70a3c241e2981452794c1d66697916ffd5 100644 (file)
@@ -3,14 +3,11 @@ title: strings.FirstUpper
 description: Returns the given string, capitalizing the first character.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Title
-    - functions/strings/ToLower
-    - functions/strings/ToUpper
-  returnType: string
-  signatures: [strings.FirstUpper STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.FirstUpper STRING]
 aliases: [/functions/strings.firstupper]
 ---
 
index 455de05861c2d7db8cb2c28de4096101456f1bc1..2babe85520bfd681d95d5bf4e0a298dabbf85afc 100644 (file)
@@ -3,16 +3,11 @@ title: strings.HasPrefix
 description: Reports whether the given string begins with the given prefix.
 categories: []
 keywords: []
-action:
-  aliases: [hasPrefix]
-  related:
-    - functions/strings/Contains
-    - functions/strings/ContainsAny
-    - functions/strings/ContainsNonSpace
-    - functions/strings/HasSuffix
-    - functions/collections/In
-  returnType: bool
-  signatures: [strings.HasPrefix STRING PREFIX]
+params:
+  functions_and_methods:
+    aliases: [hasPrefix]
+    returnType: bool
+    signatures: [strings.HasPrefix STRING PREFIX]
 aliases: [/functions/hasprefix,/functions/strings.hasprefix]
 ---
 
index 8fb12c52708b78d3ba3c977dd9e930ebf8a3477d..c6b5f4ded59cd491ca94bef5de9bac5228ce7a5c 100644 (file)
@@ -3,16 +3,11 @@ title: strings.HasSuffix
 description: Reports whether the given string ends with the given suffix.
 categories: []
 keywords: []
-action:
-  aliases: [hasSuffix]
-  related:
-    - functions/strings/Contains
-    - functions/strings/ContainsAny
-    - functions/strings/ContainsNonSpace
-    - functions/strings/HasPrefix
-    - functions/collections/In
-  returnType: bool
-  signatures: [strings.HasSuffix STRING SUFFIX]
+params:
+  functions_and_methods:
+    aliases: [hasSuffix]
+    returnType: bool
+    signatures: [strings.HasSuffix STRING SUFFIX]
 aliases: [/functions/hassuffix,/functions/strings/hassuffix]
 ---
 
index 530b0d14b3bfc953792e72a797f27d51262de473..b6027368ed80503796bdc8008d86e6f673c5a0a7 100644 (file)
@@ -3,11 +3,11 @@ title: strings.Repeat
 description: Returns a new string consisting of zero or more copies of another string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [strings.Repeat COUNT INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.Repeat COUNT INPUT]
 aliases: [/functions/strings.repeat]
 ---
 
index 9add6e12b354e98ed27a011849cc7b9c05c574fb..b449ea84d029af9b7a3df47118d79440583269f5 100644 (file)
@@ -3,14 +3,11 @@ title: strings.Replace
 description: Returns a copy of INPUT, replacing all occurrences of OLD with NEW.
 categories: []
 keywords: []
-action:
-  aliases: [replace]
-  related:
-    - functions/strings/FindRE
-    - functions/strings/FindRESubmatch
-    - functions/strings/ReplaceRE
-  returnType: string
-  signatures: ['strings.Replace INPUT OLD NEW [LIMIT]']
+params:
+  functions_and_methods:
+    aliases: [replace]
+    returnType: string
+    signatures: ['strings.Replace INPUT OLD NEW [LIMIT]']
 aliases: [/functions/replace]
 ---
 
index 1c32c34fb7303abcac52fa59cd9827e53656e661..dba4bd15a2b0972576c96bbf9aff5dfdd8a41bde 100644 (file)
@@ -3,18 +3,15 @@ title: strings.ReplaceRE
 description: Returns a copy of INPUT, replacing all occurrences of a regular expression with a replacement pattern.
 categories: []
 keywords: []
-action:
-  aliases: [replaceRE]
-  related:
-    - functions/strings/FindRE
-    - functions/strings/FindRESubmatch
-    - functions/strings/Replace
-  returnType: string
-  signatures: ['strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]']
+params:
+  functions_and_methods:
+    aliases: [replaceRE]
+    returnType: string
+    signatures: ['strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]']
 aliases: [/functions/replacere]
 ---
 
-{{% include "functions/_common/regular-expressions.md" %}}
+{{% include "/_common/functions/regular-expressions.md" %}}
 
 ```go-html-template
 {{ $s := "a-b--c---d" }}
@@ -35,9 +32,7 @@ Use `$1`, `$2`, etc. within the replacement string to insert the content of each
 {{ replaceRE "^https?://([^/]+).*" "$1" $s }} → gohugo.io
 ```
 
-{{% note %}}
-You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
-{{% /note %}}
+> [!note]
+> You can write and test your regular expression using [regex101.com]. Be sure to select the Go flavor before you begin.
 
-[RE2]: https://github.com/google/re2/wiki/Syntax
-[string literal]: https://go.dev/ref/spec#String_literals
+[regex101.com]: https://regex101.com/
index 86aab0c640c6c26b87088c5b51bf7cbf49eb5aa4..8c0e24342ee79610609febda7315e367494b1e7e 100644 (file)
@@ -3,15 +3,11 @@ title: strings.RuneCount
 description: Returns the number of runes in the given string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/go-template/len
-    - functions/strings/Count
-    - functions/strings/CountRunes
-    - functions/strings/CountWords
-  returnType: int
-  signatures: [strings.RuneCount INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: int
+    signatures: [strings.RuneCount INPUT]
 aliases: [/functions/strings.runecount]
 ---
 
index 377a5eb37219ca5f9c06d37293335cb03bf2eac5..69e4f6f335c2867d89a761ee6abd203db060fc26 100644 (file)
@@ -3,12 +3,11 @@ title: strings.SliceString
 description: Returns a substring of the given string, beginning with the start position and ending before the end position.
 categories: []
 keywords: []
-action:
-  aliases: [slicestr]
-  related:
-    - functions/strings/Substr
-  returnType: string
-  signatures: ['strings.SliceString STRING [START] [END]']
+params:
+  functions_and_methods:
+    aliases: [slicestr]
+    returnType: string
+    signatures: ['strings.SliceString STRING [START] [END]']
 aliases: [/functions/slicestr]
 ---
 
index e3e0ee13eba8c4996636e4db615de1973968b183..bcab1b4d72de5280edf1d1a10a5031dd4b144d47 100644 (file)
@@ -3,12 +3,11 @@ title: strings.Split
 description: Returns a slice of strings by splitting the given string by a delimiter.
 categories: []
 keywords: []
-action:
-  aliases: [split]
-  related:
-    - functions/collections/Delimit
-  returnType: string
-  signatures: [strings.Split STRING DELIM]
+params:
+  functions_and_methods:
+    aliases: [split]
+    returnType: '[]string'
+    signatures: [strings.Split STRING DELIM]
 aliases: [/functions/split]
 ---
 
@@ -19,8 +18,7 @@ Examples:
 {{ split "abc" "" }} → ["a", "b", "c"]
 ```
 
-{{% note %}}
-The `strings.Split` function essentially does the opposite of the [`collections.Delimit`] function. While `split` creates a slice from a string, `delimit` creates a string from a slice.
+> [!note]
+The `strings.Split` function essentially does the opposite of the [`collections.Delimit`] function. While `split` creates a slice from a string, `delimit` creates a string from a slice.
 
 [`collections.Delimit`]: /functions/collections/delimit/
-{{% /note %}}
index 19a029e28c64316123bcdf7e46e5e656a3cfe55c..a4c779f7dc8967f791ede21ccd4f003fd4967db7 100644 (file)
@@ -3,16 +3,15 @@ title: strings.Substr
 description: Returns a substring of the given string, beginning with the start position and ending after the given length.
 categories: []
 keywords: []
-action:
-  aliases: [substr]
-  related:
-    - functions/strings/SliceString
-  returnType: string
-  signatures: ['strings.Substr STRING [START] [LENGTH]']
+params:
+  functions_and_methods:
+    aliases: [substr]
+    returnType: string
+    signatures: ['strings.Substr STRING [START] [LENGTH]']
 aliases: [/functions/substr]
 ---
 
-The start position is zero-based, where `0` represents the first character of the string. If START is not specified, the substring will begin at position `0`. Specify a negative START position to extract characters from the end of the string. 
+The start position is zero-based, where `0` represents the first character of the string. If START is not specified, the substring will begin at position `0`. Specify a negative START position to extract characters from the end of the string.
 
 If LENGTH is not specified, the substring will include all characters from the START position to the end of the string. If negative, that number of characters will be omitted from the end of string.
 
index b7f1f9e5c7638dc08378ee978cd2f6c252a26f89..d1b4aca016996c7dece7aff8f447e1056ff8d383 100644 (file)
@@ -3,14 +3,11 @@ title: strings.Title
 description: Returns the given string, converting it to title case.
 categories: []
 keywords: []
-action:
-  aliases: [title]
-  related:
-    - functions/strings/FirstUpper
-    - functions/strings/ToLower
-    - functions/strings/ToUpper
-  returnType: string
-  signatures: [strings.Title STRING]
+params:
+  functions_and_methods:
+    aliases: [title]
+    returnType: string
+    signatures: [strings.Title STRING]
 aliases: [/functions/title]
 ---
 
@@ -29,4 +26,4 @@ The last option is useful if your theme uses the `title` function, and you would
 
 [Associated Press Stylebook]: https://www.apstylebook.com/
 [Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
-[site configuration]: /getting-started/configuration/#configure-title-case
+[site configuration]: /configuration/all/#title-case-style
index 3da047ae4b52289d321a1371af8c5a3b2c9645bd..c329b5e552cae1ba9fff2565596f827c1b732918 100644 (file)
@@ -3,14 +3,11 @@ title: strings.ToLower
 description: Returns the given string, converting all characters to lowercase.
 categories: []
 keywords: []
-action:
-  aliases: [lower]
-  related:
-    - functions/strings/FirstUpper
-    - functions/strings/Title
-    - functions/strings/ToUpper
-  returnType: string
-  signatures: [strings.ToLower INPUT]
+params:
+  functions_and_methods:
+    aliases: [lower]
+    returnType: string
+    signatures: [strings.ToLower INPUT]
 aliases: [/functions/lower]
 ---
 
index 617e1e68a2507f28b346410a5c3c9af62bf00f6a..acccb4124de206aa17735f448fce529a66fed326 100644 (file)
@@ -3,14 +3,11 @@ title: strings.ToUpper
 description: Returns the given string, converting all characters to uppercase.
 categories: []
 keywords: []
-action:
-  aliases: [upper]
-  related:
-    - functions/strings/FirstUpper
-    - functions/strings/Title
-    - functions/strings/ToLower
-  returnType: string
-  signatures: [strings.ToUpper INPUT]
+params:
+  functions_and_methods:
+    aliases: [upper]
+    returnType: string
+    signatures: [strings.ToUpper INPUT]
 aliases: [/functions/upper]
 ---
 
index a8c4cf92def47704cd9458d0b5d1ff9838a7f603..1afa0627fdf5a521e8683bef00eb0b4499d2b485 100644 (file)
@@ -3,17 +3,11 @@ title: strings.Trim
 description: Returns the given string, removing leading and trailing characters specified in the cutset.
 categories: []
 keywords: []
-action:
-  aliases: [trim]
-  related:
-    - functions/strings/Chomp
-    - functions/strings/TrimSpace
-    - functions/strings/TrimLeft
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimRight
-    - functions/strings/TrimSuffix
-  returnType: string
-  signatures: [strings.Trim INPUT CUTSET]
+params:
+  functions_and_methods:
+    aliases: [trim]
+    returnType: string
+    signatures: [strings.Trim INPUT CUTSET]
 aliases: [/functions/trim]
 ---
 
index d94aa05a3dfce329f9b9e2113ae09c8d4d0641ae..c5d6ba60ff9cf37913cbcca5914c3e1cd214b6aa 100644 (file)
@@ -3,17 +3,11 @@ title: strings.TrimLeft
 description: Returns the given string, removing leading characters specified in the cutset.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Chomp
-    - functions/strings/Trim
-    - functions/strings/TrimSpace
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimRight
-    - functions/strings/TrimSuffix
-  returnType: string
-  signatures: [strings.TrimLeft CUTSET STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.TrimLeft CUTSET STRING]
 aliases: [/functions/strings.trimleft]
 ---
 
index 331c52a03164ce442987e651a9d34f8758de1adc..b897d87779c303dbf4b31273010287233c38b587 100644 (file)
@@ -3,17 +3,11 @@ title: strings.TrimPrefix
 description: Returns the given string, removing the prefix from the beginning of the string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Chomp
-    - functions/strings/Trim
-    - functions/strings/TrimSpace
-    - functions/strings/TrimLeft
-    - functions/strings/TrimRight
-    - functions/strings/TrimSuffix
-  returnType: string
-  signatures: [strings.TrimPrefix PREFIX STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.TrimPrefix PREFIX STRING]
 aliases: [/functions/strings.trimprefix]
 ---
 
index f36597d3d201b29050e203ffdab8f891c592296f..05c2ed3246437b1d9757bf735df7a814be99f3b1 100644 (file)
@@ -3,17 +3,11 @@ title: strings.TrimRight
 description: Returns the given string, removing trailing characters specified in the cutset.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Chomp
-    - functions/strings/Trim
-    - functions/strings/TrimSpace
-    - functions/strings/TrimLeft
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimSuffix
-  returnType: string
-  signatures: [strings.TrimRight CUTSET STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.TrimRight CUTSET STRING]
 aliases: [/functions/strings.trimright]
 ---
 
index 7cb293674947eef121500bbef4634cd1ebe142f6..cb38b5ab1167007b4dac191b1aa6af7e4b520ae1 100644 (file)
@@ -3,16 +3,10 @@ title: strings.TrimSpace
 description: Returns the given string, removing leading and trailing whitespace as defined by Unicode.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/strings/Chomp
-    - functions/strings/Trim
-    - functions/strings/TrimLeft
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimRight
-    - functions/strings/TrimSuffix
-  returnType: string
-  signatures: [strings.TrimSpace INPUT]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [strings.TrimSpace INPUT]
 ---
 
 {{< new-in 0.136.3 />}}
index d612ae695f32093105ac9fa23043aa5c4db50faf..8028421057736b276a9138f98c63167c4fd27087 100644 (file)
@@ -3,17 +3,11 @@ title: strings.TrimSuffix
 description: Returns the given string, removing the suffix from the end of the string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/strings/Chomp
-    - functions/strings/Trim
-    - functions/strings/TrimSpace
-    - functions/strings/TrimLeft
-    - functions/strings/TrimPrefix
-    - functions/strings/TrimRight
-  returnType: string
-  signatures: [strings.TrimSuffix SUFFIX STRING]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [strings.TrimSuffix SUFFIX STRING]
 aliases: [/functions/strings.trimsuffix]
 ---
 
index 2e7693eb5958bf6848c5744f72b606e324b38977..c4198229e0978ae2aaf431303b8ed4d05b63a050 100644 (file)
@@ -3,11 +3,11 @@ title: strings.Truncate
 description: Returns the given string, truncating it to a maximum length without cutting words or leaving unclosed HTML tags.
 categories: []
 keywords: []
-action:
-  aliases: [truncate]
-  related: []
-  returnType: template.HTML
-  signatures: ['strings.Truncate SIZE [ELLIPSIS] INPUT']
+params:
+  functions_and_methods:
+    aliases: [truncate]
+    returnType: template.HTML
+    signatures: ['strings.Truncate SIZE [ELLIPSIS] INPUT']
 aliases: [/functions/truncate]
 ---
 
@@ -17,8 +17,7 @@ Since Go templates are HTML-aware, `truncate` will intelligently handle normal s
 {{ "<em>Keep my HTML</em>" | safeHTML | truncate 10 }} → <em>Keep my …</em>
 ```
 
-{{% note %}}
-If you have a raw string that contains HTML tags you want to remain treated as HTML, you will need to convert the string to HTML using the [`safeHTML`]function before sending the value to `truncate`. Otherwise, the HTML tags will be escaped when passed through the `truncate` function.
+> [!note]
+If you have a raw string that contains HTML tags you want to remain treated as HTML, you will need to convert the string to HTML using the [`safeHTML`]function before sending the value to `truncate`. Otherwise, the HTML tags will be escaped when passed through the `truncate` function.
 
 [`safeHTML`]: /functions/safe/html/
-{{% /note %}}
index 364522a3abf2c770a290d26108d81b81debdad4e..28f26f1708d99e63285453bcd1894aa796dae46d 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: String functions
 linkTitle: strings
-description: Template functions to work with strings.
+description: Use these functions to work with strings.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with strings.
index c43ef43bf984a6488437848c75336ba9cd10de6b..6a9ca56ae5b0edba83d96b9e8959f1f236febde5 100644 (file)
@@ -3,18 +3,20 @@ title: templates.Defer
 description: Defer execution of a template until after all sites and output formats have been rendered.
 categories: []
 keywords: []
-toc: true
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [templates.Defer OPTIONS]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [templates.Defer OPTIONS]
 aliases: [/functions/templates.defer]
 ---
 
 {{< new-in 0.128.0 />}}
 
-In some rare use cases, you may need to defer the execution of a template until after all sites and output formats have been rendered. One such example could be [TailwindCSS](/functions/css/tailwindcss/) using the output of [hugo_stats.json](/getting-started/configuration/#configure-build) to determine which classes and other HTML identifiers are being used in the final output:
+> [!note]
+> This feature is meant to be used in the main page layout files/templates, and has undefined behavior when used from shortcodes, partials or render hook templates. See [this issue](https://github.com/gohugoio/hugo/issues/13492#issuecomment-2734700391) for more info.
+
+In some rare use cases, you may need to defer the execution of a template until after all sites and output formats have been rendered. One such example could be [TailwindCSS](/functions/css/tailwindcss/) using the output of [hugo_stats.json](/configuration/build/) to determine which classes and other HTML identifiers are being used in the final output:
 
 ```go-html-template
 {{ with (templates.Defer (dict "key" "global")) }}
@@ -42,13 +44,10 @@ In some rare use cases, you may need to defer the execution of a template until
 {{ end }}
 ```
 
-{{% note %}}
-This function only works in combination with the `with` keyword.
-{{% /note %}}
-
-{{% note %}}
-Variables defined on the outside are not visible on the inside and vice versa. To pass in data, use the `data` [option](#options).
-{{% /note %}}
+> [!note]
+> This function only works in combination with the `with` keyword.
+>
+> Variables defined on the outside are not visible on the inside and vice versa. To pass in data, use the `data` [option](#options).
 
 For the above to work well when running the server (or `hugo -w`), you want to have a configuration similar to this:
 
@@ -75,7 +74,7 @@ The `templates.Defer` function takes a single argument, a map with the following
 key (`string`)
 : The key to use for the deferred template. This will, combined with a hash of the template content, be used as a cache key. If this is not set, Hugo will execute the deferred template on every render. This is not what you want for shared resources like CSS and JavaScript.
 
-data (`map`) 
+data (`map`)
 : Optional map to pass as data to the deferred template. This will be available in the deferred template as `.` or `$`.
 
 ```go-html-template
@@ -90,4 +89,4 @@ I18n Outside: {{ i18n "hello" }}
 {{ end }}
 ```
 
-The [Output Format](/templates/output-formats/), [Site](/methods/page/site/), and [language](/methods/site/language) will be the same, even if the execution is deferred. In the example above, this means that the `site.Language.Lang` and `.RelPermalink` will be the same on the inside and the outside of the deferred template. 
+The [output format](/configuration/output-formats/), [site](/methods/page/site/), and [language](/methods/site/language) will be the same, even if the execution is deferred. In the example above, this means that the `site.Language.Lang` and `.RelPermalink` will be the same on the inside and the outside of the deferred template.
index e576104884157734b5e463872f15acf5e29da3d8..79fc561c89e0c2634ab4ea811a1eb384e82d5ea2 100644 (file)
@@ -3,11 +3,11 @@ title: templates.Exists
 description: Reports whether a template file exists under the given path relative to the layouts directory.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: bool
-  signatures: [templates.Exists PATH]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [templates.Exists PATH]
 aliases: [/functions/templates.exists]
 ---
 
index 89da6c38ffff934a1092cde2b0d57dfcce611166..a385604eaf3efabdb829cf7434fb59ee8f9564e2 100644 (file)
@@ -1,13 +1,7 @@
 ---
 title: Template functions
 linkTitle: templates
-description:
+description: Use these functions to query the template system.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: templates-functions
-    parent: functions
 ---
-
-Use these functions to query the template system.
index 92040f924c049b4e8003e97382769baedb950b7a..760329a13cddf2707c63bdb6d67081d97348b6af 100644 (file)
@@ -3,17 +3,12 @@ title: time.AsTime
 description: Returns the given string representation of a date/time value as a time.Time value.
 categories: []
 keywords: []
-action:
-  aliases: [time]
-  related:
-    - functions/time/Duration
-    - functions/time/Format
-    - functions/time/Now
-    - functions/time/ParseDuration
-  returnType: time.Time
-  signatures: ['time.AsTime INPUT [TIMEZONE]']
+params:
+  functions_and_methods:
+    aliases: [time]
+    returnType: time.Time
+    signatures: ['time.AsTime INPUT [TIMEZONE]']
 aliases: [/functions/time]
-toc: true
 ---
 
 ## Overview
@@ -29,7 +24,7 @@ Hugo provides [functions] and [methods] to format, localize, parse, compare, and
 
 As shown above, the first argument must be a parsable string representation of a date/time value. For example:
 
-{{% include "functions/time/_common/parsable-date-time-strings.md" %}}
+{{% include "/_common/parsable-date-time-strings.md" %}}
 
 To override the default time zone, set the [`timeZone`] in your site configuration or provide a second argument to the `time.AsTime` function. For example:
 
@@ -48,6 +43,6 @@ The order of precedence for determining the time zone is:
 
 [IANA Time Zone database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
 [`time.Time`]: https://pkg.go.dev/time#Time
-[`timeZone`]: /getting-started/configuration/#timezone
+[`timeZone`]: /configuration/all/#timezone
 [functions]: /functions/time/
 [methods]: /methods/time/
index 09e5d6725cb4a6ff29177a47be8c0902a37d1467..bd6adfbfaa9a32341f3fdd08fd75f9e1c703134f 100644 (file)
@@ -1,17 +1,13 @@
 ---
 title: time.Duration
-description: Returns a time.Duration value using the given time unit and  number.
+description: Returns a time.Duration value using the given time unit and number.
 categories: []
 keywords: []
-action:
-  aliases: [duration]
-  related:
-    - functions/time/AsTime
-    - functions/time/Format
-    - functions/time/Now
-    - functions/time/ParseDuration
-  returnType: time.Duration
-  signatures: [time.Duration TIME_UNIT NUMBER]
+params:
+  functions_and_methods:
+    aliases: [duration]
+    returnType: time.Duration
+    signatures: [time.Duration TIME_UNIT NUMBER]
 aliases: [/functions/duration]
 ---
 
index cf7721376543b287769540d5be438d596c9fd60f..f1b0d6d8398b7e9d286fb7b9e2673c6dbb5a9525 100644 (file)
@@ -3,17 +3,12 @@ title: time.Format
 description: Returns the given date/time as a formatted and localized string.
 categories: []
 keywords: []
-action:
-  aliases: [dateFormat]
-  related:
-    - functions/time/AsTime
-    - functions/time/Duration
-    - functions/time/Now
-    - functions/time/ParseDuration
-  returnType: string
-  signatures: [time.Format LAYOUT INPUT]
+params:
+  functions_and_methods:
+    aliases: [dateFormat]
+    returnType: string
+    signatures: [time.Format LAYOUT INPUT]
 aliases: [/functions/dateformat]
-toc: true
 ---
 
 Use the `time.Format` function with `time.Time` values:
@@ -32,7 +27,7 @@ Or use `time.Format` with a parsable string representation of a date/time value:
 
 Examples of parsable string representations:
 
-{{% include "functions/time/_common/parsable-date-time-strings.md" %}}
+{{% include "/_common/parsable-date-time-strings.md" %}}
 
 To override the default time zone, set the [`timeZone`] in your site configuration. The order of precedence for determining the time zone is:
 
@@ -40,17 +35,17 @@ To override the default time zone, set the [`timeZone`] in your site configurati
 1. The time zone specified in your site configuration
 1. The `Etc/UTC` time zone
 
-[`timeZone`]: /getting-started/configuration/#timezone
+[`timeZone`]: /configuration/all/#timezone
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
 
 ## Localization
 
 Use the `time.Format` function to localize `time.Time` values for the current language and region.
 
-{{% include "functions/_common/locales.md" %}}
+{{% include "/_common/functions/locales.md" %}}
 
 Use the layout string as described above, or one of the tokens below. For example:
 
index 2994a97284be9b81a20ffba5a5c8a41a46f49794..9b6fa46925fcee82b3b37849d3a413dc5469ab1e 100644 (file)
@@ -3,15 +3,11 @@ title: time.Now
 description: Returns the current local time.
 categories: []
 keywords: []
-action:
-  aliases: [now]
-  related:
-    - functions/time/AsTime
-    - functions/time/Duration
-    - functions/time/Format
-    - functions/time/ParseDuration
-  returnType: time.Time
-  signatures: [time.Now]
+params:
+  functions_and_methods:
+    aliases: [now]
+    returnType: time.Time
+    signatures: [time.Now]
 aliases: [/functions/now]
 ---
 
index abb51636103557b1f281af8ad0446dafb3de285d..af5d73ad57b5a45f7269b0d7a92273717ef856ba 100644 (file)
@@ -3,15 +3,11 @@ title: time.ParseDuration
 description: Returns a time.Duration value by parsing the given duration string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/time/AsTime
-    - functions/time/Duration
-    - functions/time/Format
-    - functions/time/Now
-  returnType: time.Duration
-  signatures: [time.ParseDuration DURATION]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: time.Duration
+    signatures: [time.ParseDuration DURATION]
 aliases: [/functions/time.parseduration]
 ---
 
diff --git a/content/en/functions/time/_common/_index.md b/content/en/functions/time/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/time/_common/parsable-date-time-strings.md b/content/en/functions/time/_common/parsable-date-time-strings.md
deleted file mode 100644 (file)
index 9284276..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Format|Time zone
-:--|:--
-`2023-10-15T13:18:50-07:00`|`America/Los_Angeles`
-`2023-10-15T13:18:50-0700`|`America/Los_Angeles`
-`2023-10-15T13:18:50Z`|`Etc/UTC`
-`2023-10-15T13:18:50`|Default is `Etc/UTC`
-`2023-10-15`|Default is `Etc/UTC`
-`15 Oct 2023`|Default is `Etc/UTC`
-
-The last three examples are not fully qualified, and default to the `Etc/UTC` time zone.
index 7e0b82f917cb43b58f74adfda2b4c4316df90938..9c2ff21612776878d10d0dd8fd6d0dfb61d3fb83 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Time functions
 linkTitle: time
-description: Template functions to work with time values.
+description: Use these functions to work with time values.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with time values.
index 039cb12b74951c211bb92ab3111a73204646f785..c00445605e6fe53facf69fdd75387e7a2c2b5795 100644 (file)
@@ -3,13 +3,11 @@ title: transform.CanHighlight
 description: Reports whether the given code language is supported by the Chroma highlighter.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/transform/Highlight
-    - functions/transform/HighlightCodeBlock
-  returnType: bool
-  signatures: [transform.CanHighlight LANGUAGE]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: bool
+    signatures: [transform.CanHighlight LANGUAGE]
 ---
 
 ```go-html-template
index 5ca562db9ac1a8d4283357ac9256b3cf05764371..31c5dce7015f8c7432ee583526fb960526795cc3 100644 (file)
@@ -3,11 +3,11 @@ title: transform.Emojify
 description: Runs a string through the Emoji emoticons processor.
 categories: []
 keywords: []
-action:
-  aliases: [emojify]
-  related: []
-  returnType: template.HTML
-  signatures: [transform.Emojify INPUT]
+params:
+  functions_and_methods:
+    aliases: [emojify]
+    returnType: template.HTML
+    signatures: [transform.Emojify INPUT]
 aliases: [/functions/emojify]
 ---
 
@@ -15,7 +15,7 @@ aliases: [/functions/emojify]
 
 See the list of [emoji shortcodes] for available emoticons.
 
-The `emojify` function can be called in your templates but not directly in your content files by default. For emojis in content files, set `enableEmoji` to `true` in your site's [configuration]. Then you can write emoji shorthand directly into your content files;
+The `emojify` function can be called in your templates but not directly in your content files by default. For emojis in content files, set [`enableEmoji`] to `true` in your site's configuration. Then you can write emoji shorthand directly into your content files;
 
 ```text
 I :heart: Hugo!
@@ -23,7 +23,5 @@ I :heart: Hugo!
 
 I :heart: Hugo!
 
-[configuration]: /getting-started/configuration/
+[`enableEmoji`]: /configuration/all/#enableemoji
 [emoji shortcodes]: /quick-reference/emojis/
-[sc]: /templates/shortcode/
-[scsource]: https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes
index bb522769c5d923045d8532e9d82c27046b31a281..069fd92f2584442d4fe0ba4c57c7a4509877cc56 100644 (file)
@@ -3,12 +3,11 @@ title: transform.HTMLEscape
 description: Returns the given string, escaping special characters by replacing them with HTML entities.
 categories: []
 keywords: []
-action:
-  aliases: [htmlEscape]
-  related:
-    - functions/transform/HTMLUnescape
-  returnType: string
-  signatures: [transform.HTMLEscape INPUT]
+params:
+  functions_and_methods:
+    aliases: [htmlEscape]
+    returnType: string
+    signatures: [transform.HTMLEscape INPUT]
 aliases: [/functions/htmlescape]
 ---
 
index 1c88de6727aec12a3a1d12f90ad7f04201097098..563e63cf635a6d8d62dae066d25f976e1e2aa2c8 100644 (file)
@@ -3,12 +3,11 @@ title: transform.HTMLUnescape
 description: Returns the given string, replacing each HTML entity with its corresponding character.
 categories: []
 keywords: []
-action:
-  aliases: [htmlUnescape]
-  related:
-    - functions/transform/HTMLEscape
-  returnType: string
-  signatures: [transform.HTMLUnescape INPUT]
+params:
+  functions_and_methods:
+    aliases: [htmlUnescape]
+    returnType: string
+    signatures: [transform.HTMLUnescape INPUT]
 aliases: [/functions/htmlunescape]
 ---
 
index 5eaa53939ede8d6e7602689f713321ed12cc32db..5633f2256dc98324c35c81c97ee22b2f6a4d9067 100644 (file)
@@ -2,22 +2,19 @@
 title: transform.Highlight
 description: Renders code with a syntax highlighter.
 categories: []
-keywords: []
-action:
-  aliases: [highlight]
-  related:
-    - functions/transform/CanHighlight
-    - functions/transform/HighlightCodeBlock
-  returnType: template.HTML
-  signatures: ['transform.Highlight CODE LANG [OPTIONS]']
+keywords: [highlight]
+params:
+  functions_and_methods:
+    aliases: [highlight]
+    returnType: template.HTML
+    signatures: ['transform.Highlight CODE LANG [OPTIONS]']
 aliases: [/functions/highlight]
-toc: true
 ---
 
-The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [available styles].
+The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [highlighting styles].
 
 [chroma]: https://github.com/alecthomas/chroma
-[available styles]: https://xyproto.github.io/splash/docs/
+[highlighting styles]: /quick-reference/syntax-highlighting-styles/
 
 ## Arguments
 
@@ -30,10 +27,10 @@ LANG
 : (`string`) The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive.
 
 OPTIONS
-: (`map or string`) A map or space-separate key-value pairs wrapped in quotation marks. Set default values for each option in your [site configuration]. The key names are case-insensitive.
+: (`map or string`) A map or comma-separated key-value pairs wrapped in quotation marks. Set default values for each option in your [site configuration]. The key names are case-insensitive.
 
-[site configuration]: /getting-started/configuration-markup#highlight
-[supported languages]: /content-management/syntax-highlighting#list-of-chroma-highlighting-languages
+[site configuration]: /configuration/markup#highlight
+[supported languages]: /content-management/syntax-highlighting#languages
 
 ## Examples
 
@@ -53,4 +50,4 @@ OPTIONS
 
 ## Options
 
-{{% include "functions/_common/highlighting-options" %}}
+{{% include "_common/syntax-highlighting-options.md" %}}
index dc396bad070038e897addd3613071dc696d42de7..bbebf945947c9eca857df5d023bfca400f6149ed 100644 (file)
@@ -3,13 +3,11 @@ title: transform.HighlightCodeBlock
 description: Highlights code received in context within a code block render hook.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/transform/CanHighlight
-    - functions/transform/Highlight
-  returnType: highlight.HighlightResult 
-  signatures: ['transform.HighlightCodeBlock CONTEXT [OPTIONS]']
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: highlight.HighlightResult 
+    signatures: ['transform.HighlightCodeBlock CONTEXT [OPTIONS]']
 ---
 
 This function is only useful within a code block render hook.
index 7a84f43b744e80e9745c69fa6fffc872f60ebb48..c22de1efe8a3c8f2bcf69b8367ca9cf4068e3bf7 100644 (file)
@@ -3,13 +3,11 @@ title: transform.Markdownify
 description: Renders Markdown to HTML.
 categories: []
 keywords: []
-action:
-  aliases: [markdownify]
-  related:
-    - methods/page/RenderString
-    - methods/page/RenderShortcodes
-  returnType: template.HTML
-  signatures: [transform.Markdownify INPUT]
+params:
+  functions_and_methods:
+    aliases: [markdownify]
+    returnType: template.HTML
+    signatures: [transform.Markdownify INPUT]
 aliases: [/functions/markdownify]
 ---
 
@@ -21,11 +19,9 @@ If the resulting HTML is a single paragraph, Hugo removes the wrapping `p` tags
 
 To keep the wrapping `p` tags for a single paragraph, use the [`RenderString`] method on the `Page` object, setting the `display` option to `block`.
 
-[`RenderString`]: /methods/page/renderstring/
-
-{{% note %}}
-Although the `markdownify` function honors [Markdown render hooks] when rendering Markdown to HTML, use the `RenderString` method instead of `markdownify` if a render hook accesses `.Page` context. See issue [#9692] for details.
+> [!note]
+> Although the `markdownify` function honors [Markdown render hooks] when rendering Markdown to HTML, use the `RenderString` method instead of `markdownify` if a render hook accesses `.Page` context. See issue [#9692] for details.
 
-[Markdown render hooks]: /render-hooks/
 [#9692]: https://github.com/gohugoio/hugo/issues/9692
-{{% /note %}}
+[`RenderString`]: /methods/page/renderstring/
+[Markdown render hooks]: /render-hooks/
index 681d41f72e2e2d424ab1ecaa3cc1f06004f2399d..780cf461a765f8177be6f22908acf63fd73ac29b 100644 (file)
@@ -3,11 +3,11 @@ title: transform.Plainify
 description: Returns a string with all HTML tags removed.
 categories: []
 keywords: []
-action:
-  aliases: [plainify]
-  related: []
-  returnType: template.HTML
-  signatures: [transform.Plainify INPUT]
+params:
+  functions_and_methods:
+    aliases: [plainify]
+    returnType: template.HTML
+    signatures: [transform.Plainify INPUT]
 aliases: [/functions/plainify]
 ---
 
diff --git a/content/en/functions/transform/PortableText.md b/content/en/functions/transform/PortableText.md
new file mode 100644 (file)
index 0000000..7baba99
--- /dev/null
@@ -0,0 +1,213 @@
+---
+title: transform.PortableText
+description: Converts Portable Text to Markdown.
+categories: []
+keywords: []
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [transform.PortableText MAP]
+---
+
+{{< new-in "0.145.0" />}}
+
+[Portable Text](https://www.portabletext.org/) is a JSON structure that represent rich text content in the [Sanity](https://www.sanity.io/) CMS. In Hugo, this function is typically used in a [Content Adapter](https://gohugo.io/content-management/content-adapters/) that creates pages from Sanity data.
+
+## Types supported
+
+- `block` and `span`
+- `image`. Note that the image handling is currently very simple; we link to the `asset.url` using `asset.altText` as the image alt text and `asset.title` as the title. For more fine grained control you may want to process the images in a [image render hook](/render-hooks/images/).
+- `code` (see the [code-input](https://www.sanity.io/plugins/code-input) plugin). Code will be rendered as [fenced code blocks](/contribute/documentation/#fenced-code-blocks) with any file name provided passed on as a markdown attribute.
+
+> [!note]
+> Since the Portable Text gets converted to Markdown before it gets passed to Hugo, rendering of links, headings, images and code blocks can be controlled with [Render Hooks](https://gohugo.io/render-hooks/).
+
+## Example
+
+### Content Adapter
+
+```go-html-template {file="content/_content.gotmpl" copy=true}
+{{ $projectID := "mysanityprojectid" }}
+{{ $useCached := true }}
+{{ $api := "api" }}
+{{ if $useCached }}
+  {{/* See https://www.sanity.io/docs/api-cdn */}}
+  {{ $api = "apicdn" }}
+{{ end }}
+{{ $url := printf "https://%s.%s.sanity.io/v2021-06-07/data/query/production"  $projectID $api }}
+
+{{/* prettier-ignore-start */ -}}
+{{ $q :=  `*[_type == 'post']{
+  title, publishedAt, summary, slug, body[]{
+    ...,
+    _type == "image" => {
+      ...,
+      asset->{
+        _id,
+        path,
+        url,
+        altText,
+        title,
+        description,
+        metadata {
+          dimensions {
+            aspectRatio,
+            width,
+            height
+          }
+        }
+      }
+    }
+  },
+  }`
+}}
+{{/* prettier-ignore-end */ -}}
+{{ $body := dict "query" $q | jsonify }}
+{{ $opts := dict "method" "post" "body" $body }}
+{{ $r := resources.GetRemote $url $opts }}
+{{ $m := $r | transform.Unmarshal }}
+{{ $result := $m.result }}
+{{ range $result }}
+  {{ if not .slug }}
+    {{ continue }}
+  {{ end }}
+  {{ $markdown := transform.PortableText .body }}
+  {{ $content := dict
+    "mediaType" "text/markdown"
+    "value" $markdown
+  }}
+  {{ $params := dict
+    "portabletext" (.body | jsonify (dict "indent" " "))
+  }}
+  {{ $page := dict
+    "content" $content
+    "kind" "page"
+    "path" .slug.current
+    "title" .title
+    "date" (.publishedAt | time )
+    "summary" .summary
+    "params" $params
+  }}
+  {{ $.AddPage $page }}
+{{ end }}
+```
+
+### Sanity setup
+
+Below outlines a suitable Sanity studio setup for the above example.
+
+```ts {file="sanity.config.ts" copy=true}
+import {defineConfig} from 'sanity'
+import {structureTool} from 'sanity/structure'
+import {visionTool} from '@sanity/vision'
+import {schemaTypes} from './schemaTypes'
+import {media} from 'sanity-plugin-media'
+import {codeInput} from '@sanity/code-input'
+
+export default defineConfig({
+  name: 'default',
+  title: 'my-sanity-project',
+
+  projectId: 'mysanityprojectid',
+  dataset: 'production',
+
+  plugins: [structureTool(), visionTool(), media(),codeInput()],
+
+  schema: {
+    types: schemaTypes,
+  },
+})
+```
+
+Type/schema definition:
+
+```ts {file="schemaTypes/postType.ts" copy=true}
+import {defineField, defineType} from 'sanity'
+
+export const postType = defineType({
+  name: 'post',
+  title: 'Post',
+  type: 'document',
+  fields: [
+    defineField({
+      name: 'title',
+      type: 'string',
+      validation: (rule) => rule.required(),
+    }),
+    defineField({
+      name: 'summary',
+      type: 'string',
+      validation: (rule) => rule.required(),
+    }),
+    defineField({
+      name: 'slug',
+      type: 'slug',
+      options: {source: 'title'},
+      validation: (rule) => rule.required(),
+    }),
+    defineField({
+      name: 'publishedAt',
+      type: 'datetime',
+      initialValue: () => new Date().toISOString(),
+      validation: (rule) => rule.required(),
+    }),
+    defineField({
+      name: 'body',
+      type: 'array',
+      of: [
+        {
+          type: 'block',
+        },
+        {
+          type: 'image'
+        },
+        {
+          type: 'code',
+          options: {
+            language: 'css',
+            languageAlternatives: [
+              {title: 'HTML', value: 'html'},
+              {title: 'CSS', value: 'css'},
+            ],
+            withFilename: true,
+          },
+        },
+      ],
+    }),
+  ],
+})
+```
+
+Note that the above requires some additional plugins to be installed:
+
+```bash
+npm i sanity-plugin-media @sanity/code-input
+```
+
+```ts {file="schemaTypes/index.ts" copy=true}
+import {postType} from './postType'
+
+export const schemaTypes = [postType]
+```
+
+## Server setup
+
+Unfortunately, Sanity's API does not support [RFC 7234](https://tools.ietf.org/html/rfc7234) and their output changes even if the data has not. A recommended setup is therefore to use their cached `apicdn` endpoint (see above) and then set up a reasonable polling and file cache strategy in your Hugo configuration, e.g:
+
+{{< code-toggle file=hugo >}}
+[HTTPCache]
+  [[HTTPCache.polls]]
+    disable = false
+    low = '30s'
+    high = '3m'
+    [HTTPCache.polls.for]
+      includes = ['https://*.*.sanity.io/**']
+
+[caches.getresource]
+    dir    = ':cacheDir/:project'
+    maxAge = "5m"
+{{< /code-toggle >}}
+
+The polling above will be used when running the server/watch mode and rebuild when you push new content in Sanity.
+
+See [Caching in resources.GetRemote](/functions/resources/getremote/#caching) for more fine grained control.
index 24ef4381d49d69a12102676fa9d37c2e6123df1d..ecf7fc905d358765642beae8b7757c4c62387860 100644 (file)
@@ -3,23 +3,20 @@ title: transform.Remarshal
 description: Marshals a string of serialized data, or a map, into a string of serialized data in the specified format.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/encoding/Jsonify
-    - functions/transform/Unmarshal
-  returnType: string
-  signatures: [transform.Remarshal FORMAT INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [transform.Remarshal FORMAT INPUT]
 aliases: [/functions/transform.remarshal]
 ---
 
 The format must be one of `json`, `toml`, `yaml`, or `xml`. If the input is a string of serialized data, it must be valid JSON, TOML, YAML, or XML.
 
-{{% note %}}
-This function is primarily a helper for Hugo's documentation, used to convert configuration and front matter examples to JSON, TOML, and YAML.
-
-This is not a general purpose converter, and may change without notice if required for Hugo's documentation site.
-{{% /note %}}
+> [!note]
+> This function is primarily a helper for Hugo's documentation, used to convert configuration and front matter examples to JSON, TOML, and YAML.
+>
+> This is not a general purpose converter, and may change without notice if required for Hugo's documentation site.
 
 Example 1
 : Convert a string of TOML to JSON.
index 10cd256c5e20a18d4fac0647a7e6beae87b0c099..a9f12c54662c1edb577fc5f0dadba66029324fbb 100644 (file)
@@ -2,35 +2,27 @@
 title: transform.ToMath
 description: Renders mathematical equations and expressions written in the LaTeX markup language.
 categories: []
-keywords: [katex,latex,math,typesetting]
-action:
-  aliases: []
-  related:
-    - content-management/mathematics
-  returnType: types.Result[template.HTML]
-  signatures: ['transform.ToMath INPUT [OPTIONS]']
+keywords: []
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: types.Result[template.HTML]
+    signatures: ['transform.ToMath INPUT [OPTIONS]']
 aliases: [/functions/tomath]
-toc: true
 ---
 
 {{< new-in 0.132.0 />}}
 
 Hugo uses an embedded instance of the [KaTeX] display engine to render mathematical markup to HTML. You do not need to install the KaTeX display engine.
 
-[KaTeX]: https://katex.org/
-
 ```go-html-template
 {{ transform.ToMath "c = \\pm\\sqrt{a^2 + b^2}" }}
 ```
 
-{{% note %}}
-By default, Hugo renders mathematical markup to [MathML], and does not require any CSS to display the result.
-
-[MathML]: https://developer.mozilla.org/en-US/docs/Web/MathML
-
-To optimize rendering quality and accessibility, use the `htmlAndMathml` output option as described below. This approach requires an external stylesheet.
-
-{{% /note %}}
+> [!note]
+> By default, Hugo renders mathematical markup to [MathML], and does not require any CSS to display the result.
+>
+> To optimize rendering quality and accessibility, use the `htmlAndMathml` output option as described below. This approach requires an external stylesheet.
 
 ```go-html-template
 {{ $opts := dict "output" "htmlAndMathml" }}
@@ -41,18 +33,14 @@ To optimize rendering quality and accessibility, use the `htmlAndMathml` output
 
 Pass a map of options as the second argument to the `transform.ToMath` function. The options below are a subset of the KaTeX [rendering options].
 
-[rendering options]: https://katex.org/docs/options.html
-
 displayMode
-: (`bool`) If `true` render in display mode, else render in inline mode. Default is `false`.
+: (`bool`) Whether to render in display mode instead of inline mode. Default is `false`.
 
 errorColor
 : (`string`) The color of the error messages expressed as an RGB [hexadecimal color]. Default is `#cc0000`.
 
-[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
-
 fleqn
-: (`bool`) If `true` render flush left with a 2em left margin. Default is `false`.
+: (`bool`) Whether to render flush left with a 2em left margin. Default is `false`.
 
 macros
 : (`map`) A map of macros to be used in the math expression. Default is `{}`.
@@ -78,7 +66,7 @@ output
     <link href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" rel="stylesheet">
 
 throwOnError
-: (`bool`) If `true` throw a `ParseError` when KaTeX encounters an unsupported command or invalid LaTeX. Default is `true`.
+: (`bool`) Whether to throw a `ParseError` when KaTeX encounters an unsupported command or invalid LaTeX. Default is `true`.
 
 ## Error handling
 
@@ -94,12 +82,10 @@ The example below demonstrates error handing within a template.
 
 Instead of client-side JavaScript rendering of mathematical markup using MathJax or KaTeX, create a passthrough render hook which calls the `transform.ToMath` function.
 
-###### Step 1
+### Step 1
 
 Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
 
-[passthrough extension]: /getting-started/configuration-markup/#passthrough
-
 {{< code-toggle file=hugo copy=true >}}
 [markup.goldmark.extensions.passthrough]
 enable = true
@@ -109,48 +95,45 @@ block = [['\[', '\]'], ['$$', '$$']]
 inline = [['\(', '\)']]
 {{< /code-toggle >}}
 
-{{% note %}}
-The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration, you will need to double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
-{{% /note %}}
+> [!note]
+> The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration, you will need to double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
 
-###### Step 2
+### Step 2
 
 Create a [passthrough render hook] to capture and render the LaTeX markup.
 
-[passthrough render hook]: /render-hooks/passthrough/
-
-{{< code file=layouts/_default/_markup/render-passthrough.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-passthrough.html" copy=true}
 {{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }}
 {{- with try (transform.ToMath .Inner $opts) }}
   {{- with .Err }}
-    {{ errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
+    {{- errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
   {{- else }}
     {{- .Value }}
     {{- $.Page.Store.Set "hasMath" true }}
   {{- end }}
 {{- end -}}
-{{< /code >}}
+```
 
-###### Step 3
+### Step 3
 
 In your base template, conditionally include the KaTeX CSS within the head element.
 
-{{< code file=layouts/_default/baseof.html copy=true >}}
+```go-html-template {file="layouts/_default/baseof.html" copy=true}
 <head>
   {{ $noop := .WordCount }}
   {{ if .Page.Store.Get "hasMath" }}
     <link href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" rel="stylesheet">
   {{ end }}
 </head>
-{{< /code >}}
+```
 
 In the above, note the use of a [noop](g) statement to force content rendering before we check the value of `hasMath` with the `Store.Get` method.
 
-#### Step 4
+### Step 4
 
 Add some mathematical markup to your content, then test.
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 This is an inline \(a^*=x-b^*\) equation.
 
 These are block equations:
@@ -158,4 +141,24 @@ These are block equations:
 \[a^*=x-b^*\]
 
 $$a^*=x-b^*$$
-{{< /code >}}
+```
+
+## Chemistry
+
+{{< new-in 0.144.0 />}}
+
+You can also use the `transform.ToMath` function to render chemical equations, leveraging the `\ce` and `\pu` functions from the [mhchem] package.
+
+```text
+$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
+```
+
+$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
+
+[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
+[KaTeX]: https://katex.org/
+[MathML]: https://developer.mozilla.org/en-US/docs/Web/MathML
+[mhchem]: https://mhchem.github.io/MathJax-mhchem/
+[passthrough extension]: /configuration/markup/#passthrough
+[passthrough render hook]: /render-hooks/passthrough/
+[rendering options]: https://katex.org/docs/options.html
index e50fc0ee0babbad1bb3a438885d1406b024a7c3e..d159122f58c6ba38985d1b737a6f1e046a0a0369 100644 (file)
@@ -3,16 +3,11 @@ title: transform.Unmarshal
 description: Parses serialized data and returns a map or an array. Supports CSV, JSON, TOML, YAML, and XML.
 categories: []
 keywords: []
-action:
-  aliases: [unmarshal]
-  related:
-    - functions/transform/Remarshal
-    - functions/resources/Get
-    - functions/resources/GetRemote
-    - functions/encoding/Jsonify
-  returnType: any
-  signatures: ['transform.Unmarshal [OPTIONS] INPUT']
-toc: true
+params:
+  functions_and_methods:
+    aliases: [unmarshal]
+    returnType: any
+    signatures: ['transform.Unmarshal [OPTIONS] INPUT']
 aliases: [/functions/transform.unmarshal]
 ---
 
@@ -112,15 +107,12 @@ A remote resource is a file on a remote server, accessible via HTTP or HTTPS.
 {{ end }}
 ```
 
-{{% note %}}
-When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`.
-
-In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead:
-
-`{{ $data = .Content | transform.Unmarshal }}`
-
-[Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
-{{% /note %}}
+> [!note]
+> When retrieving remote data, a misconfigured server may send a response header with an incorrect [Content-Type]. For example, the server may set the Content-Type header to `application/octet-stream` instead of `application/json`.
+>
+> In these cases, pass the resource `Content` through the `transform.Unmarshal` function instead of passing the resource itself. For example, in the above, do this instead:
+>
+> `{{ $data = .Content | transform.Unmarshal }}`
 
 ## Options
 
@@ -132,8 +124,9 @@ delimiter
 comment
 : (`string`) The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored.
 
-lazyQuotes {{< new-in 0.122.0 />}}
-: (`bool`) If true, a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field. Default is `false`.
+lazyQuotes
+: {{< new-in 0.122.0 />}}
+: (`bool`) Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`.
 
 ```go-html-template
 {{ $csv := "a;b;c" | transform.Unmarshal (dict "delimiter" ";") }}
@@ -296,4 +289,5 @@ Hugo renders this to:
 ```
 
 [`index`]: /functions/collections/indexfunction/
+[Content-Type]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
 [page bundle]: /content-management/page-bundles/
index 291f0f622f08da0709adc5a5c662068637a943b2..9e6c77927f966e2966edb79d51c1d4e6934196e1 100644 (file)
@@ -3,11 +3,11 @@ title: transform.XMLEscape
 description: Returns the given string, removing disallowed characters then escaping the result to its XML equivalent.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: string
-  signatures: [transform.XMLEscape INPUT]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [transform.XMLEscape INPUT]
 ---
 
 {{< new-in 0.121.0 />}}
@@ -31,9 +31,9 @@ For example:
 
 When using `transform.XMLEscape` in a template rendered by Go's [html/template] package, declare the string to be safe HTML to avoid double escaping. For example, in an RSS template:
 
-{{< code file="layouts/_default/rss.xml" >}}
+```xml {file="layouts/_default/rss.xml"}
 <description>{{ .Summary | transform.XMLEscape | safeHTML }}</description>
-{{< /code >}}
+```
 
 [disallowed characters]: https://www.w3.org/TR/xml/#charsets
 [html entities]: https://developer.mozilla.org/en-us/docs/glossary/entity
index 70e286b2454192d4a8a66a26141cba04424d2a72..19c271b65d1f67ab38ddffdac2cd90453e191161 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: Transform functions
 linkTitle: transform
-description: Template functions to transform values from one format to another.
+description: Use these functions to transform values from one format to another.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to transform values from one format to another.
index 67e1781e7e2bd7f7998aaea2edbca439dbd5bd1b..da45ca22454dc3fc57301f984f3df8fdc168a0f9 100644 (file)
@@ -3,50 +3,56 @@ title: urls.AbsLangURL
 description: Returns an absolute URL with a language prefix, if any.
 categories: []
 keywords: []
-action:
-  aliases: [absLangURL]
-  related:
-    - functions/urls/AbsURL 
-    - functions/urls/RelLangURL
-    - functions/urls/RelURL
-  returnType: string
-  signatures: [urls.AbsLangURL INPUT]
+params:
+  functions_and_methods:
+    aliases: [absLangURL]
+    returnType: string
+    signatures: [urls.AbsLangURL INPUT]
 aliases: [/functions/abslangurl]
 ---
 
 Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on:
 
-- Whether the input begins with a slash
-- The `baseURL` in site configuration
+- Whether the input begins with a slash (`/`)
+- The `baseURL` in your site configuration
 - The language prefix, if any
 
-In examples that follow, the project is multilingual with content in both English (`en`) and Spanish (`es`). The returned values are from the English site.
+This is the site configuration for the examples that follow:
 
-### Input does not begin with a slash
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+[languages.en]
+weight = 1
+[languages.es]
+weight = 2
+{{< /code-toggle >}}
+
+## Input does not begin with a slash
 
 If the input does not begin with a slash, the path in the resulting URL will be relative to the `baseURL` in your site configuration.
 
-With `baseURL = https://example.org/`
+When rendering the `en` site with `baseURL = https://example.org/`
 
 ```go-html-template
-{{ absLangURL "" }}          → https://example.org/en/
-{{ absLangURL "articles" }}  → https://example.org/en/articles
-{{ absLangURL "style.css" }} → https://example.org/en/style.css
+{{ absLangURL "" }}           → https://example.org/en/
+{{ absLangURL "articles" }}   → https://example.org/en/articles
+{{ absLangURL "style.css" }}  → https://example.org/en/style.css
 ```
 
-With `baseURL = https://example.org/docs/`
+When rendering the `en` site with `baseURL = https://example.org/docs/`
 
 ```go-html-template
-{{ absLangURL "" }}          → https://example.org/docs/en/
-{{ absLangURL "articles" }}  → https://example.org/docs/en/articles
-{{ absLangURL "style.css" }} → https://example.org/docs/en/style.css
+{{ absLangURL "" }}           → https://example.org/docs/en/
+{{ absLangURL "articles" }}   → https://example.org/docs/en/articles
+{{ absLangURL "style.css" }}  → https://example.org/docs/en/style.css
 ```
 
-### Input begins with a slash
+## Input begins with a slash
 
 If the input begins with a slash, the path in the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration.
 
-With `baseURL = https://example.org/`
+When rendering the `en` site with `baseURL = https://example.org/`
 
 ```go-html-template
 {{ absLangURL "/" }}          → https://example.org/en/
@@ -54,10 +60,13 @@ With `baseURL = https://example.org/`
 {{ absLangURL "/style.css" }} → https://example.org/en/style.css
 ```
 
-With `baseURL = https://example.org/docs/`
+When rendering the `en` site with `baseURL = https://example.org/docs/`
 
 ```go-html-template
 {{ absLangURL "/" }}          → https://example.org/en/
 {{ absLangURL "/articles" }}  → https://example.org/en/articles
 {{ absLangURL "/style.css" }} → https://example.org/en/style.css
 ```
+
+> [!note]
+> As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash.
index 1120eac422bdcd99badf699544fc788d8e52a71c..72613cd0bfd2896550d1ed53397d31799aa516a3 100644 (file)
@@ -3,23 +3,20 @@ title: urls.AbsURL
 description: Returns an absolute URL.
 categories: []
 keywords: []
-action:
-  aliases: [absURL]
-  related:
-    - functions/urls/AbsLangURL
-    - functions/urls/RelLangURL
-    - functions/urls/RelURL
-  returnType: string
-  signatures: [urls.AbsURL INPUT]
+params:
+  functions_and_methods:
+    aliases: [absURL]
+    returnType: string
+    signatures: [urls.AbsURL INPUT]
 aliases: [/functions/absurl]
 ---
 
 With multilingual configurations, use the [`urls.AbsLangURL`] function instead. The URL returned by this function depends on:
 
-- Whether the input begins with a slash
-- The `baseURL` in site configuration
+- Whether the input begins with a slash (`/`)
+- The `baseURL` in your site configuration
 
-### Input does not begin with a slash
+## Input does not begin with a slash
 
 If the input does not begin with a slash, the path in the resulting URL will be relative to the `baseURL` in your site configuration.
 
@@ -39,7 +36,7 @@ With `baseURL = https://example.org/docs/`
 {{ absURL "style.css" }} → https://example.org/docs/style.css
 ```
 
-#### Input begins with a slash
+## Input begins with a slash
 
 If the input begins with a slash, the path in the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration.
 
@@ -59,4 +56,7 @@ With `baseURL = https://example.org/docs/`
 {{ absURL "/style.css" }} → https://example.org/style.css
 ```
 
+> [!note]
+> As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash.
+
 [`urls.AbsLangURL`]: /functions/urls/abslangurl/
index d8866ae059428f6cdaefd5b21c6716b26e8b6c62..d18bd9a4d5f649fc1f97be5f064e996b8d12fbb7 100644 (file)
@@ -3,16 +3,15 @@ title: urls.Anchorize
 description: Returns the given string, sanitized for usage in an HTML id attribute.
 categories: []
 keywords: []
-action:
-  aliases: [anchorize]
-  related:
-    - functions/urls/URLize
-  returnType: string
-  signatures: [urls.Anchorize INPUT]
+params:
+  functions_and_methods:
+    aliases: [anchorize]
+    returnType: string
+    signatures: [urls.Anchorize INPUT]
 aliases: [/functions/anchorize]
 ---
 
-{{% include "/functions/urls/_common/anchorize-vs-urlize.md" %}}
+{{% include "/_common/functions/urls/anchorize-vs-urlize.md" %}}
 
 ## Sanitizing logic
 
@@ -31,7 +30,7 @@ github
 : Compatible with GitHub. This is the default.
 
 github-ascii
-: Similar to the `github` setting, but removes non-ASCII characters. 
+: Similar to the `github` setting, but removes non-ASCII characters.
 
 blackfriday
 : Provided for backwards compatibility with Hugo v0.59.1 and earlier. This option will be removed in a future release.
index bdff5f4b26398558c1b9849fc38dd38a030d4f88..b9da7e437535b175a54db3ffe8ebeec4a5f2ecc7 100644 (file)
@@ -3,12 +3,11 @@ title: urls.JoinPath
 description: Joins the provided elements into a URL string and cleans the result of any ./ or ../ elements. If the argument list is empty, JoinPath returns an empty string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/path/Join
-  returnType: string
-  signatures: [urls.JoinPath ELEMENT...]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [urls.JoinPath ELEMENT...]
 aliases: [/functions/urls.joinpath]
 ---
 
index a64116254f4aca2ad04a0b42f8a467d112bc7b42..7def5fb1d52217c2eba2a1e9762f78111bd05c17 100644 (file)
@@ -3,11 +3,11 @@ title: urls.Parse
 description: Parses a URL into a URL structure.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: url.URL
-  signatures: [urls.Parse URL]
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: url.URL
+    signatures: [urls.Parse URL]
 aliases: [/functions/urls.parse]
 ---
 
@@ -26,6 +26,7 @@ The `urls.Parse` function parses a URL into a [URL structure](https://godoc.org/
 {{ $u.Hostname }} → example.org
 {{ $u.RequestURI }} → /foo?a=6&b=7
 {{ $u.Path }} → /foo
+{{ $u.RawQuery }} → a=6&b=7
 {{ $u.Query }} → map[a:[6] b:[7]]
 {{ $u.Query.a }} → [6]
 {{ $u.Query.Get "a" }} → 6
index d8fe6f26ccecb22c4653d2bb603f5ad9803235d4..92abed91a9f313a92039ff425b3f01a201c30941 100644 (file)
@@ -1,63 +1,46 @@
 ---
 title: urls.Ref
-description: Returns the absolute permalink to a page at the given path.
+description: Returns the absolute URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  aliases: [ref]
-  related:
-    - functions/urls/RelRef
-    - methods/page/Ref
-    - methods/page/RelRef
-  returnType: string
-  signatures:
-    - urls.Ref PAGE PATH
-    - urls.Ref PAGE OPTIONS
+params:
+  functions_and_methods:
+    aliases: [ref]
+    returnType: string
+    signatures:
+      - urls.Ref PAGE PATH
+      - urls.Ref PAGE OPTIONS
 aliases: [/functions/ref]
 ---
 
-The first argument is the context of the page from which to resolve relative paths, typically the current page.
+## Usage
 
-The second argument is a path to a page, with or without a file extension, with or without an anchor. A path without a leading `/` is first resolved relative to the given context, then to the remainder of the site. Alternatively, provide an [options map](#options) instead of a path.
+The `ref` function takes two arguments:
 
-```go-html-template
-{{ ref . "about" }}
-{{ ref . "about#anchor" }}
-{{ ref . "about.md" }}
-{{ ref . "about.md#anchor" }}
-{{ ref . "#anchor" }}
-{{ ref . "/blog/my-post" }}
-{{ ref . "/blog/my-post.md" }}
-```
+1. The context for resolving relative paths (typically the current page).
+1. Either the target page's path or an options map (see below).
 
 ## Options
 
-Instead of specifying a path, you can also provide an options map:
-
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
-
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
+## Examples
 
-To return the absolute permalink to another language version of a page:
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
-{{ ref . (dict "path" "about.md" "lang" "fr") }}
-```
+{{ ref . "/books/book-1" }} → https://example.org/en/books/book-1/
 
-To return the absolute permalink to another Output Format of a page:
+{{ $opts := dict "path" "/books/book-1" }}
+{{ ref . $opts }} → https://example.org/en/books/book-1/
 
-```go-html-template
-{{ ref . (dict "path" "about.md" "outputFormat" "rss") }}
+{{ $opts := dict "path" "/books/book-1" "lang" "de" }}
+{{ ref . $opts }} → https://example.org/de/books/book-1/
+
+{{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }}
+{{ ref . $opts }} → https://example.org/de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 883e7dda2e8df86dd3cf109366b4ed03d7915bfc..af8bff3d7a2b3c9f9e4e7aba255c396177c2b6c0 100644 (file)
@@ -3,52 +3,66 @@ title: urls.RelLangURL
 description: Returns a relative URL with a language prefix, if any.
 categories: []
 keywords: []
-action:
-  aliases: [relLangURL]
-  related:
-    - functions/urls/AbsLangURL
-    - functions/urls/AbsURL 
-    - functions/urls/RelURL
-  returnType: string
-  signatures: [urls.RelLangURL INPUT]
+params:
+  functions_and_methods:
+    aliases: [relLangURL]
+    returnType: string
+    signatures: [urls.RelLangURL INPUT]
 aliases: [/functions/rellangurl]
 ---
 
 Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on:
 
-- Whether the input begins with a slash
+- Whether the input begins with a slash (`/`)
 - The `baseURL` in your site configuration
 - The language prefix, if any
 
-In examples that follow, the project is multilingual with content in both English (`en`) and Spanish (`es`). The returned values are from the English site.
+This is the site configuration for the examples that follow:
 
-### Input does not begin with a slash
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+[languages.en]
+weight = 1
+[languages.es]
+weight = 2
+{{< /code-toggle >}}
+
+## Input does not begin with a slash
 
 If the input does not begin with a slash, the resulting URL will be relative to the `baseURL` in your site configuration.
 
-With `baseURL = https://example.org/`
+When rendering the `en` site with `baseURL = https://example.org/`
 
 ```go-html-template
-{{ relLangURL "" }}                        → /en/
-{{ relLangURL "articles" }}                → /en/articles
-{{ relLangURL "style.css" }}               → /en/style.css
-{{ relLangURL "https://example.org/foo" }} → /en/foo
+{{ relLangURL "" }}                         → /en/
+{{ relLangURL "articles" }}                 → /en/articles
+{{ relLangURL "style.css" }}                → /en/style.css
+{{ relLangURL "https://example.org" }}      → https://example.org
+{{ relLangURL "https://example.org/" }}     → /en
+{{ relLangURL "https://www.example.org" }}  → https://www.example.org
+{{ relLangURL "https://www.example.org/" }} → https://www.example.org/
 ```
 
-With `baseURL = https://example.org/docs/`
+When rendering the `en` site with `baseURL = https://example.org/docs/`
 
 ```go-html-template
-{{ relLangURL "" }}                             → /docs/en/
-{{ relLangURL "articles" }}                     → /docs/en/articles
-{{ relLangURL "style.css" }}                    → /docs/en/style.css
-{{ relLangURL "https://example.org/docs/foo" }} → /docs/en/foo
+{{ relLangURL "" }}                           → /docs/en/
+{{ relLangURL "articles" }}                   → /docs/en/articles
+{{ relLangURL "style.css" }}                  → /docs/en/style.css
+{{ relLangURL "https://example.org" }}        → https://example.org
+{{ relLangURL "https://example.org/" }}       → https://example.org/
+{{ relLangURL "https://example.org/docs" }}   → https://example.org/docs
+{{ relLangURL "https://example.org/docs/" }}  → /docs/en
+{{ relLangURL "https://www.example.org" }}    → https://www.example.org
+{{ relLangURL "https://www.example.org/" }}   → https://www.example.org/
 ```
 
-#### Input begins with a slash
+## Input begins with a slash
 
 If the input begins with a slash, the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration.
 
-With `baseURL = https://example.org/`
+When rendering the `en` site with `baseURL = https://example.org/`
 
 ```go-html-template
 {{ relLangURL "/" }}          → /en/
@@ -56,10 +70,13 @@ With `baseURL = https://example.org/`
 {{ relLangURL "/style.css" }} → /en/style.css
 ```
 
-With `baseURL = https://example.org/docs/`
+When rendering the `en` site with `baseURL = https://example.org/docs/`
 
 ```go-html-template
 {{ relLangURL "/" }}          → /en/
 {{ relLangURL "/articles" }}  → /en/articles
 {{ relLangURL "/style.css" }} → /en/style.css
 ```
+
+> [!note]
+> As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash.
index 74e1b5650ec36013110d645bd3ad0e4f13dd5f7c..aa7acf50b5b94210a2dce5458eae4fa9804759fe 100644 (file)
@@ -1,70 +1,46 @@
 ---
 title: urls.RelRef
-description: Returns the relative permalink to a page at the given path.
+description: Returns the relative URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  aliases: [relref]
-  related:
-    - functions/urls/Ref
-    - methods/page/Ref
-    - methods/page/RelRef
-  returnType: string
-  signatures:
-    - urls.RelRef PAGE PATH
-    - urls.RelRef PAGE OPTIONS
+params:
+  functions_and_methods:
+    aliases: [relref]
+    returnType: string
+    signatures:
+      - urls.RelRef PAGE PATH
+      - urls.RelRef PAGE OPTIONS
 aliases: [/functions/relref]
 ---
 
-The first argument is the context of the page from which to resolve relative paths, typically the current page.
+## Usage
 
-The second argument is a path to a page, with or without a file extension, with or without an anchor. A path without a leading `/` is first resolved relative to the given context, then to the remainder of the site. Alternatively, provide an [options map](#options) instead of a path.
-.
-```go-html-template
-{{ relref . "about" }}
-{{ relref . "about#anchor" }}
-{{ relref . "about.md" }}
-{{ relref . "about.md#anchor" }}
-{{ relref . "#anchor" }}
-{{ relref . "/blog/my-post" }}
-{{ relref . "/blog/my-post.md" }}
-```
+The `relref` function takes two arguments:
 
-The permalink returned is relative to the protocol+host portion of the baseURL specified in the site configuration. For example:
-
-Code|baseURL|Permalink
-:--|:--|:--
-`{{ relref . "/about" }}`|`https://example.org/`|`/about/`
-`{{ relref . "/about" }}`|`https://example.org/x/`|`/x/about/`
+1. The context for resolving relative paths (typically the current page).
+1. Either the target page's path or an options map (see below).
 
 ## Options
 
-Instead of specifying a path, you can also provide an options map:
-
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+## Examples
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
-
-To return the relative permalink to another language version of a page:
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
-{{ relref . (dict "path" "about.md" "lang" "fr") }}
-```
+{{ relref . "/books/book-1" }} → /en/books/book-1/
 
-To return the relative permalink to another Output Format of a page:
+{{ $opts := dict "path" "/books/book-1" }}
+{{ relref . $opts }} → /en/books/book-1/
 
-```go-html-template
-{{ relref . (dict "path" "about.md" "outputFormat" "rss") }}
+{{ $opts := dict "path" "/books/book-1" "lang" "de" }}
+{{ relref . $opts }} → /de/books/book-1/
+
+{{ $opts := dict "path" "/books/book-1" "lang" "de" "outputFormat" "json" }}
+{{ relref . $opts }} → /de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 18ac24d109f54f303e904d5ccdffcae9086d8494..0aef4043f079175d8e0908f7a4d287ed25372c20 100644 (file)
@@ -3,45 +3,50 @@ title: urls.RelURL
 description: Returns a relative URL.
 categories: []
 keywords: []
-action:
-  aliases: [relURL]
-  related:
-    - functions/urls/AbsLangURL
-    - functions/urls/AbsURL 
-    - functions/urls/RelLangURL
-  returnType: string
-  signatures: [urls.RelURL INPUT]
+params:
+  functions_and_methods:
+    aliases: [relURL]
+    returnType: string
+    signatures: [urls.RelURL INPUT]
 aliases: [/functions/relurl]
 ---
 
 With multilingual configurations, use the [`urls.RelLangURL`] function instead. The URL returned by this function depends on:
 
-- Whether the input begins with a slash
+- Whether the input begins with a slash (`/`)
 - The `baseURL` in your site configuration
 
-### Input does not begin with a slash
+## Input does not begin with a slash
 
 If the input does not begin with a slash, the resulting URL will be relative to the `baseURL` in your site configuration.
 
 With `baseURL = https://example.org/`
 
 ```go-html-template
-{{ relURL "" }}                        → /
-{{ relURL "articles" }}                → /articles
-{{ relURL "style.css" }}               → /style.css
-{{ relURL "https://example.org/foo" }} → /foo
+{{ relURL "" }}                         → /
+{{ relURL "articles" }}                 → /articles
+{{ relURL "style.css" }}                → /style.css
+{{ relURL "https://example.org" }}      → https://example.org
+{{ relURL "https://example.org/" }}     → /
+{{ relURL "https://www.example.org" }}  → https://www.example.org
+{{ relURL "https://www.example.org/" }} → https://www.example.org/
 ```
 
 With `baseURL = https://example.org/docs/`
 
 ```go-html-template
-{{ relURL "" }}                             → /docs/
-{{ relURL "articles" }}                     → /docs/articles
-{{ relURL "style.css" }}                    → /docs/style.css
-{{ relURL "https://example.org/docs/foo" }} → /docs/foo
+{{ relURL "" }}                           → /docs/
+{{ relURL "articles" }}                   → /docs/articles
+{{ relURL "style.css" }}                  → /docs/style.css
+{{ relURL "https://example.org" }}        → https://example.org
+{{ relURL "https://example.org/" }}       → https://example.org/
+{{ relURL "https://example.org/docs" }}   → https://example.org/docs
+{{ relURL "https://example.org/docs/" }}  → /docs
+{{ relURL "https://www.example.org" }}    → https://www.example.org
+{{ relURL "https://www.example.org/" }}   → https://www.example.org/
 ```
 
-#### Input begins with a slash
+## Input begins with a slash
 
 If the input begins with a slash, the resulting URL will be relative to the protocol+host of the `baseURL` in your site configuration.
 
@@ -61,4 +66,7 @@ With `baseURL = https://example.org/docs/`
 {{ relURL "/style.css" }} → /style.css
 ```
 
+> [!note]
+> As illustrated by the previous example, using a leading slash is rarely desirable and can lead to unexpected outcomes. In nearly all cases, omit the leading slash.
+
 [`urls.RelLangURL`]: /functions/urls/rellangurl/
index 12e5203c4a0d8f1a4891e61ef15ff4e36f2b9a16..b0cc812ec14935fa5f075e7b1e07f72fa308bb42 100644 (file)
@@ -3,16 +3,15 @@ title: urls.URLize
 description: Returns the given string, sanitized for usage in a URL.
 categories: []
 keywords: []
-action:
-  aliases: [urlize]
-  related:
-    - functions/urls/Anchorize
-  returnType: string
-  signatures: [urls.URLize INPUT]
+params:
+  functions_and_methods:
+    aliases: [urlize]
+    returnType: string
+    signatures: [urls.URLize INPUT]
 aliases: [/functions/urlize]
 ---
 
-{{% include "/functions/urls/_common/anchorize-vs-urlize.md" %}}
+{{% include "/_common/functions/urls/anchorize-vs-urlize.md" %}}
 
 ## Example
 
diff --git a/content/en/functions/urls/_common/_index.md b/content/en/functions/urls/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/functions/urls/_common/anchorize-vs-urlize.md b/content/en/functions/urls/_common/anchorize-vs-urlize.md
deleted file mode 100644 (file)
index 710a3c5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-The [`anchorize`] and [`urlize`] functions are similar: 
-
-[`anchorize`]: /functions/urls/anchorize/
-[`urlize`]: /functions/urls/urlize/
-
-- Use the `anchorize` function to generate an HTML `id` attribute value
-- Use the `urlize` function to sanitize a string for usage in a URL
-
-For example:
-
-```go-html-template
-{{ $s := "A B C" }}
-{{ $s | anchorize }} → a-b-c
-{{ $s | urlize }} → a-b-c
-
-{{ $s := "a b   c" }}
-{{ $s | anchorize }} → a-b---c
-{{ $s | urlize }} → a-b-c
-
-{{ $s := "< a, b, & c >" }}
-{{ $s | anchorize }} → -a-b--c-
-{{ $s | urlize }} → a-b-c
-
-{{ $s := "main.go" }}
-{{ $s | anchorize }} → maingo
-{{ $s | urlize }} → main.go
-
-{{ $s := "Hugö" }}
-{{ $s | anchorize }} → hugö
-{{ $s | urlize }} → hug%C3%B6
-```
index 5f16feeeb33f2e9289438684dcc475d38848868b..3a1962d7a930c8d8adb8ccf3df997b66af802bd3 100644 (file)
@@ -1,12 +1,7 @@
 ---
 title: URL functions
 linkTitle: urls
-description: Template functions to work with URLs.
+description: Use these functions to work with URLs.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: functions
 ---
-
-Use these functions to work with URLs.
index ca180d999cfb446dca646545751eaa9e2787252d..2e2f57127a438df99e4bd713f6ee7a0106acb411 100644 (file)
@@ -1,20 +1,8 @@
 ---
 title: Getting started
-
 description: How to get started with Hugo.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: getting-started-in-this-section
-    parent: getting-started
-    weight: 10
 weight: 10
 aliases: [/overview/introduction/]
 ---
-
-If this is your first time using Hugo and you've [already installed Hugo on your machine][installed], we recommend the [quick start]. You can also use [external learning resources] to learn Hugo.
-
-[installed]: /installation/
-[quick start]: /getting-started/quick-start/
-[external learning resources]: /getting-started/external-learning-resources/
diff --git a/content/en/getting-started/configuration-build.md b/content/en/getting-started/configuration-build.md
deleted file mode 100644 (file)
index 791d4bb..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Configure build
-description: Configure global build options.
-categories: [getting started,fundamentals]
-keywords: [build,buildStats,cache]
-menu:
-  docs:
-    parent: getting-started
-    weight: 70
-weight: 70
-slug: configuration-build
-toc: true
----
-
-The `build` configuration section contains global build-related configuration options.
-
-{{< code-toggle config=build />}}
-
-###### buildStats
-
-See [Configure buildStats](#configure-build-stats).
-
-###### cachebusters
-
-See [Configure Cache Busters](#configure-cache-busters).
-
-###### noJSConfigInAssets
-
-(`bool`) If `true`, turns off writing a `jsconfig.json` into your `assets` directory with mapping of imports from running [js.Build](/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written.
-
-###### useResourceCacheWhen
-
-(`string`) When to use the resource file cache, one of `never`, `fallback`, or `always`. Applicable when transpiling Sass to CSS. Default is `fallback`.
-
-## Configure cache busters
-
-The `build.cachebusters` configuration option was added to support development using Tailwind 3.x's JIT compiler where a `build` configuration may look like this:
-
-{{< code-toggle file=hugo >}}
-[build]
-  [build.buildStats]
-    enable = true
-  [[build.cachebusters]]
-    source = "assets/watching/hugo_stats\\.json"
-    target = "styles\\.css"
-  [[build.cachebusters]]
-    source = "(postcss|tailwind)\\.config\\.js"
-    target = "css"
-  [[build.cachebusters]]
-    source = "assets/.*\\.(js|ts|jsx|tsx)"
-    target = "js"
-  [[build.cachebusters]]
-    source = "assets/.*\\.(.*)$"
-    target = "$1"
-{{< /code-toggle >}}
-
-When `buildStats` {{< new-in 0.115.1 />}} is enabled, Hugo writes a `hugo_stats.json` file on each build with HTML classes etc. that's used in the rendered output. Changes to this file will trigger a rebuild of the `styles.css` file. You also need to add `hugo_stats.json` to Hugo's server watcher. See [Hugo Starter Tailwind Basic](https://github.com/bep/hugo-starter-tailwind-basic) for a running example.
-
-source
-: A regexp matching file(s) relative to one of the virtual component directories in Hugo, typically `assets/...`.
-
-target
-: A regexp matching the keys in the resource cache that should be expired when `source` changes. You can use the matching regexp groups from `source` in the expression, e.g. `$1`.
-
-## Configure build stats 
-
-{{< code-toggle config=build.buildStats />}}
-
-{{< new-in 0.115.1 />}}
-
-If `enable` is set to `true`, creates a `hugo_stats.json` file in the root of your project. This file contains arrays of the `class` attributes, `id` attributes, and tags of every HTML element within your published site. Use this file as data source when [removing unused CSS] from your site. This process is also known as pruning, purging, or tree shaking.
-
-[removing unused CSS]: /functions/resources/postprocess/
-
-Exclude `class` attributes, `id` attributes, or tags from `hugo_stats.json` with the `disableClasses`, `disableIDs`, and `disableTags` keys.
-
-{{% note %}}
-Given that CSS purging is typically limited to production builds, place the `buildStats` object below [`config/production`].
-
-[`config/production`]: /getting-started/configuration/#configuration-directory
-
-Built for speed, there may be "false positive" detections (e.g., HTML elements that are not HTML elements) while parsing the published site. These "false positives" are infrequent and inconsequential.
-{{% /note %}}
-
-Due to the nature of partial server builds, new HTML entities are added while the server is running, but old values will not be removed until you restart the server or run a regular `hugo` build.
diff --git a/content/en/getting-started/configuration-markup.md b/content/en/getting-started/configuration-markup.md
deleted file mode 100644 (file)
index ef885e4..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
----
-title: Configure markup
-description: Configure rendering of markup to HTML.
-categories: [getting started,fundamentals]
-keywords: [markup,markdown,goldmark,asciidoc,asciidoctor,highlighting]
-menu:
-  docs:
-    parent: getting-started
-    weight: 60
-weight: 60
-slug: configuration-markup
-toc: true
----
-
-## Default handler
-
-Hugo uses [Goldmark] to render Markdown to HTML.
-
-{{< code-toggle file=hugo >}}
-[markup]
-defaultMarkdownHandler = 'goldmark'
-{{< /code-toggle >}}
-
-Files with a `.md`, `.mdown`, or `.markdown` extension are processed as Markdown, provided that you have not specified a different [content format] using the `markup` field in front matter.
-
-To use a different renderer for Markdown files, specify one of `asciidocext`, `org`, `pandoc`, or `rst` in your site configuration.
-
-defaultMarkdownHandler|Description
-:--|:--
-`asciidocext`|[AsciiDoc]
-`goldmark`|[Goldmark]
-`org`|[Emacs Org Mode]
-`pandoc`|[Pandoc]
-`rst`|[reStructuredText]
-
-To use AsciiDoc, Pandoc, or reStructuredText you must install the relevant renderer and update your [security policy].
-
-{{% note %}}
-Unless you need a unique capability provided by one of the alternative Markdown handlers, we strongly recommend that you use the default setting. Goldmark is fast, well maintained, conforms to the [CommonMark] specification, and is compatible with [GitHub Flavored Markdown] (GFM).
-
-[commonmark]: https://spec.commonmark.org/0.30/
-[github flavored markdown]: https://github.github.com/gfm/
-{{% /note %}}
-
-[asciidoc]: https://asciidoc.org/
-[content format]: /content-management/formats/#formats
-[emacs org mode]: https://orgmode.org/
-[goldmark]: https://github.com/yuin/goldmark/
-[pandoc]: https://pandoc.org/
-[restructuredtext]: https://docutils.sourceforge.io/rst.html
-[security policy]: /about/security/#security-policy
-
-## Goldmark
-
-This is the default configuration for the Goldmark Markdown renderer:
-
-{{< code-toggle config=markup.goldmark />}}
-
-### Goldmark extensions
-
-The extensions below, excluding Extras and Passthrough, are enabled by default.
-
-Extension|Documentation|Enabled
-:--|:--|:-:
-cjk|[Goldmark Extensions: CJK]|:heavy_check_mark:
-definitionList|[PHP Markdown Extra: Definition lists]|:heavy_check_mark:
-extras|[Hugo Goldmark Extensions: Extras]|
-footnote|[PHP Markdown Extra: Footnotes]|:heavy_check_mark:
-linkify|[GitHub Flavored Markdown: Autolinks]|:heavy_check_mark:
-passthrough|[Hugo Goldmark Extensions: Passthrough]|
-strikethrough|[GitHub Flavored Markdown: Strikethrough]|:heavy_check_mark:
-table|[GitHub Flavored Markdown: Tables]|:heavy_check_mark:
-taskList|[GitHub Flavored Markdown: Task list items]|:heavy_check_mark:
-typographer|[Goldmark Extensions: Typographer]|:heavy_check_mark:
-
-[GitHub Flavored Markdown: Autolinks]: https://github.github.com/gfm/#autolinks-extension-
-[GitHub Flavored Markdown: Strikethrough]: https://github.github.com/gfm/#strikethrough-extension-
-[GitHub Flavored Markdown: Tables]: https://github.github.com/gfm/#tables-extension-
-[GitHub Flavored Markdown: Task list items]: https://github.github.com/gfm/#task-list-items-extension-
-[Goldmark Extensions: CJK]: https://github.com/yuin/goldmark?tab=readme-ov-file#cjk-extension
-[Goldmark Extensions: Typographer]: https://github.com/yuin/goldmark?tab=readme-ov-file#typographer-extension
-[Hugo Goldmark Extensions: Extras]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#extras-extension
-[Hugo Goldmark Extensions: Passthrough]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#passthrough-extension
-[PHP Markdown Extra: Definition lists]: https://michelf.ca/projects/php-markdown/extra/#def-list
-[PHP Markdown Extra: Footnotes]: https://michelf.ca/projects/php-markdown/extra/#footnotes
-
-#### Extras
-
-{{< new-in 0.126.0 />}}
-
-Enable [deleted text], [inserted text], [mark text], [subscript], and [superscript] elements in Markdown.
-
-Element|Markdown|Rendered
-:--|:--|:--
-Deleted text|`~~foo~~`|`<del>foo</del>`
-Inserted text|`++bar++`|`<ins>bar</ins>`
-Mark text|`==baz==`|`<mark>baz</mark>`
-Subscript|`H~2~O`|`H<sub>2</sub>O`
-Superscript|`1^st^`|`1<sup>st</sup>`
-
-[deleted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
-[inserted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
-[mark text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark
-[subscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub
-[superscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup
-
-To avoid a conflict when enabling the Hugo Goldmark Extras subscript extension, if you want to render subscript and strikethrough text concurrently you must:
-
-1. Disable the Goldmark strikethrough extension
-1. Enable the Hugo Goldmark Extras delete extension
-
-For example:
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.extensions]
-strikethrough = false
-
-[markup.goldmark.extensions.extras.delete]
-enable = true
-
-[markup.goldmark.extensions.extras.subscript]
-enable = true
-{{< /code-toggle >}}
-
-#### Passthrough
-
-{{< new-in 0.122.0 />}}
-
-Enable the passthrough extension to include mathematical equations and expressions in Markdown using LaTeX markup. See [mathematics in Markdown] for details.
-
-[mathematics in Markdown]: content-management/mathematics/
-
-#### Typographer
-
-The Typographer extension replaces certain character combinations with HTML entities as specified below:
-
-Markdown|Replaced by|Description
-:--|:--|:--
-`...`|`&hellip;`|horizontal ellipsis
-`'`|`&rsquo;`|apostrophe
-`--`|`&ndash;`|en dash
-`---`|`&mdash;`|em dash
-`«`|`&laquo;`|left angle quote
-`“`|`&ldquo;`|left double quote
-`‘`|`&lsquo;`|left single quote
-`»`|`&raquo;`|right angle quote
-`”`|`&rdquo;`|right double quote
-`’`|`&rsquo;`|right single quote
-
-### Goldmark settings explained
-
-Most of the Goldmark settings above are self-explanatory, but some require explanation.
-
-###### duplicateResourceFiles
-
-{{< new-in 0.123.0 />}}
-
-(`bool`) If `true`, shared page resources on multilingual single-host sites will be duplicated for each language. See [multilingual page resources] for details. Default is `false`.
-
-[multilingual page resources]: /content-management/page-resources/#multilingual
-
-{{% note %}}
-With multilingual single-host sites, setting this parameter to `false` will enable Hugo's [embedded link render hook] and [embedded image render hook]. This is the default configuration for multilingual single-host sites.
-
-[embedded image render hook]: /render-hooks/images/#default
-[embedded link render hook]: /render-hooks/links/#default
-{{% /note %}}
-
-###### parser.wrapStandAloneImageWithinParagraph
-
-(`bool`) If `true`, image elements without adjacent content will be wrapped within a `p` element when rendered. This is the default Markdown behavior. Set to `false` when using an [image render hook] to render standalone images as `figure` elements. Default is `true`.
-
-[image render hook]: /render-hooks/images/
-
-###### parser.autoHeadingIDType
-
-(`string`) The strategy used to automatically generate heading `id` attributes, one of `github`, `github-ascii` or `blackfriday`.
-
-- `github` produces GitHub-compatible `id` attributes
-- `github-ascii` drops any non-ASCII characters after accent normalization
-- `blackfriday` produces `id` attributes compatible with the Blackfriday Markdown renderer
-
-This is also the strategy used by the [anchorize](/functions/urls/anchorize) template function. Default is `github`.
-
-###### parser.attribute.block
-
-(`bool`) If `true`, enables [Markdown attributes] for block elements. Default is `false`.
-
-[Markdown attributes]: /content-management/markdown-attributes/
-
-###### parser.attribute.title
-
-(`bool`) If `true`, enables [Markdown attributes] for headings. Default is `true`.
-
-###### renderHooks.image.enableDefault
-
-{{< new-in 0.123.0 />}}
-
-(`bool`) If `true`, enables Hugo's [embedded image render hook]. Default is `false`.
-
-[embedded image render hook]: /render-hooks/images/#default
-
-{{% note %}}
-The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
-
-[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
-{{% /note %}}
-
-###### renderHooks.link.enableDefault
-
-{{< new-in 0.123.0 />}}
-
-(`bool`) If `true`, enables Hugo's [embedded link render hook]. Default is `false`.
-
-[embedded link render hook]: /render-hooks/links/#default
-
-{{% note %}}
-The embedded link render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
-
-[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
-{{% /note %}}
-
-###### renderer.hardWraps
-
-(`bool`) If `true`, Goldmark replaces newline characters within a paragraph with `br` elements. Default is `false`.
-
-###### renderer.unsafe
-
-(`bool`) If `true`, Goldmark renders raw HTML mixed within the Markdown. This is unsafe unless the content is under your control. Default is `false`.
-
-## AsciiDoc
-
-This is the default configuration for the AsciiDoc renderer:
-
-{{< code-toggle config=markup.asciidocExt />}}
-
-### AsciiDoc settings explained
-
-###### attributes
-
-(`map`) A map of key-value pairs, each a document attribute. See Asciidoctor’s [attributes].
-
-[attributes]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions
-
-###### backend
-
-(`string`) The backend output file format. Default is `html5`.
-
-###### extensions
-
-(`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`.
-
-{{% note %}}
-To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`.
-{{% /note %}}
-
-###### failureLevel
-
-(`string`) The minimum logging level that triggers a non-zero exit code (failure). Default is `fatal`.
-
-###### noHeaderOrFooter
-
-(`bool`) If `true`, outputs an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Default is `true`.
-
-###### preserveTOC
-
-(`bool`) If `true`, preserves the table of contents (TOC) rendered by Asciidoctor. By default, to make the TOC compatible with existing themes, Hugo removes the TOC rendered by Asciidoctor. To render the TOC, use the [`TableOfContents`] method on a `Page` object in your templates. Default is `false`.
-
-[`TableOfContents`]: /methods/page/tableofcontents/
-
-###### safeMode
-
-(`string`) The safe mode level, one of `unsafe`, `safe`, `server`, or `secure`. Default is `unsafe`.
-
-###### sectionNumbers
-
-(`bool`) If `true`, numbers each section title. Default is `false`.
-
-###### trace
-
-(`bool`) If `true`, include backtrace information on errors. Default is `false`.
-
-###### verbose
-
-(`bool`)If `true`, verbosely prints processing information and configuration file checks to stderr. Default is `false`.
-
-###### workingFolderCurrent
-
-(`bool`) If `true`, sets the working directory to be the same as that of the AsciiDoc file being processed, allowing [includes] to work with relative paths. Set to `true` to render diagrams with the [asciidoctor-diagram] extension. Default is `false`.
-
-[asciidoctor-diagram]: https://asciidoctor.org/docs/asciidoctor-diagram/
-[includes]: https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#includes
-
-### AsciiDoc configuration example
-
-{{< code-toggle file=hugo >}}
-[markup.asciidocExt]
-    extensions = ["asciidoctor-html5s", "asciidoctor-diagram"]
-    workingFolderCurrent = true
-    [markup.asciidocExt.attributes]
-        my-base-url = "https://example.com/"
-        my-attribute-name = "my value"
-{{< /code-toggle >}}
-
-### AsciiDoc syntax highlighting
-
-Follow the steps below to enable syntax highlighting.
-
-Step 1
-: Set the `source-highlighter` attribute in your site configuration. For example:
-
-{{< code-toggle file=hugo >}}
-[markup.asciidocExt.attributes]
-source-highlighter = 'rouge'
-{{< /code-toggle >}}
-
-Step 2
-: Generate the highlighter CSS. For example:
-
-```text
-rougify style monokai.sublime > assets/css/syntax.css
-```
-
-Step 3
-: In your base template add a link to the CSS file:
-
-{{< code file=layouts/_default/baseof.html >}}
-<head>
-  ...
-  {{ with resources.Get "css/syntax.css" }}
-    <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
-  {{ end }}
-  ...
-</head>
-{{< /code >}}
-
-Then add the code to be highlighted to your markup:
-
-```text
-[#hello,ruby]
-----
-require 'sinatra'
-
-get '/hi' do
-  "Hello World!"
-end
-----
-```
-
-### AsciiDoc troubleshooting
-
-Run `hugo --logLevel debug` to examine Hugo's call to the Asciidoctor executable:
-
-```txt
-INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ...
-```
-
-## Highlight
-
-This is the default `highlight` configuration. Note that some of these settings can be set per code block, see [Syntax Highlighting](/content-management/syntax-highlighting/).
-
-{{< code-toggle config=markup.highlight />}}
-
-For `style`, see these galleries:
-
-* [Short snippets](https://xyproto.github.io/splash/docs/all.html)
-* [Long snippets](https://xyproto.github.io/splash/docs/longer/all.html)
-
-For CSS, see [Generate Syntax Highlighter CSS](/content-management/syntax-highlighting/#generate-syntax-highlighter-css).
-
-## Table of contents
-
-This is the default configuration for the table of contents, applicable to Goldmark and Asciidoctor:
-
-{{< code-toggle config=markup.tableOfContents />}}
-
-###### startLevel
-
-(`int`) Heading levels less than this value will be excluded from the table of contents. For example, to exclude `h1` elements from the table of contents, set this value to `2`. Default is `2`.
-
-###### endLevel
-
-(`int`) Heading levels greater than this value will be excluded from the table of contents. For example, to exclude `h4`, `h5`, and `h6` elements from the table of contents, set this value to `3`. Default is `3`.
-
-###### ordered
-
-(`bool`) If `true`, generates an ordered list instead of an unordered list. Default is `false`.
diff --git a/content/en/getting-started/configuration.md b/content/en/getting-started/configuration.md
deleted file mode 100644 (file)
index 23376f6..0000000
+++ /dev/null
@@ -1,996 +0,0 @@
----
-title: Configure Hugo
-linkTitle: Configuration
-description: How to configure your Hugo site.
-categories: [getting started,fundamentals]
-keywords: [configuration,toml,yaml,json]
-menu:
-  docs:
-    parent: getting-started
-    weight: 50
-weight: 50
-toc: true
-aliases: [/overview/source-directory/,/overview/configuration/]
----
-
-## Configuration file
-
-Create a site configuration file in the root of your project directory, naming it `hugo.toml`, `hugo.yaml`, or `hugo.json`, with that order of precedence.
-
-```text
-my-project/
-└── hugo.toml
-```
-
-{{% note %}}
-With v0.109.0 and earlier the basename of the site configuration file was `config` instead of `hugo`. You can use either, but should transition to the new naming convention when practical.
-{{% /note %}}
-
-A simple example:
-
-{{< code-toggle file=hugo >}}
-baseURL = 'https://example.org/'
-languageCode = 'en-us'
-title = 'ABC Widgets, Inc.'
-[params]
-subtitle = 'The Best Widgets on Earth'
-[params.contact]
-email = 'info@example.org'
-phone = '+1 202-555-1212'
-{{< /code-toggle >}}
-
-To use a different configuration file when building your site, use the `--config` flag:
-
-```sh
-hugo --config other.toml
-```
-
-Combine two or more configuration files, with left-to-right precedence:
-
-```sh
-hugo --config a.toml,b.yaml,c.json
-```
-
-{{% note %}}
-See the specifications for each file format: [TOML], [YAML], and [JSON].
-
-[TOML]: https://toml.io/en/latest
-[YAML]: https://yaml.org/spec/
-[JSON]: https://datatracker.ietf.org/doc/html/rfc7159
-{{% /note %}}
-
-## Configuration directory
-
-Instead of a single site configuration file, split your configuration by [environment](g), root configuration key, and language. For example:
-
-```text
-my-project/
-└── config/
-    ├── _default/
-    │   ├── hugo.toml
-    │   ├── menus.en.toml
-    │   ├── menus.de.toml
-    │   └── params.toml
-    └── production/
-        └── params.toml
-```
-
-The root configuration keys are `build`, `caches`, `cascade`, `deployment`, `frontmatter`, `imaging`, `languages`, `markup`, `mediatypes`, `menus`, `minify`, `module`, `outputformats`, `outputs`, `params`, `permalinks`, `privacy`, `related`, `security`, `segments`, `server`, `services`, `sitemap`, and `taxonomies`.
-
-### Omit the root key
-
-When splitting the configuration by root key, omit the root key in the given file. For example, these are equivalent:
-
-{{< code-toggle file=hugo >}}
-[params]
-foo = 'bar'
-{{< /code-toggle >}}
-
-{{< code-toggle file=params >}}
-foo = 'bar'
-{{< /code-toggle >}}
-
-### Recursive parsing
-
-Hugo parses the `config` directory recursively, allowing you to organize the files into subdirectories. For example:
-
-```text
-my-project/
-└── config/
-    └── _default/
-        ├── navigation/
-        │   ├── menus.de.toml
-        │   └── menus.en.toml
-        └── hugo.toml
-```
-
-### Example
-
-```text
-my-project/
-└── config/
-    ├── _default/
-    │   ├── hugo.toml
-    │   ├── menus.en.toml
-    │   ├── menus.de.toml
-    │   └── params.toml
-    ├── production/
-    │   ├── hugo.toml
-    │   └── params.toml
-    └── staging/
-        ├── hugo.toml
-        └── params.toml
-```
-
-Considering the structure above, when running `hugo --environment staging`, Hugo will use every setting from `config/_default` and merge `staging`'s on top of those.
-
-Let's take an example to understand this better. Let's say you are using Google Analytics for your website. This requires you to specify a [Google tag ID] in your site configuration:
-
-[Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en
-
-{{< code-toggle file=hugo copy=false >}}
-[services.googleAnalytics]
-ID = 'G-XXXXXXXXX'
-{{< /code-toggle >}}
-
-Now consider the following scenario:
-
-1. You don't want to load the analytics code when running `hugo server`.
-1. You want to use different Google tag IDs for your production and staging environments. For example:
-
-    - `G-PPPPPPPPP` for production
-    - `G-SSSSSSSSS` for staging
-
-To satisfy these requirements, configure your site as follows:
-
-1. `config/_default/hugo.toml`
-
-    Exclude the `services.googleAnalytics` section. This will prevent loading of the analytics code when you run `hugo server`.
-
-    By default, Hugo sets its `environment` to `development` when running `hugo server`. In the absence of a `config/development` directory, Hugo uses the `config/_default` directory.
-
-1. `config/production/hugo.toml`
-
-    Include this section only:
-
-    {{< code-toggle file=hugo copy=false >}}
-    [services.googleAnalytics]
-    ID = 'G-PPPPPPPPP'
-    {{< /code-toggle >}}
-
-    You do not need to include other parameters in this file. Include only those parameters that are specific to your production environment. Hugo will merge these parameters with the default configuration.
-
-    By default, Hugo sets its `environment` to `production` when running `hugo`. The analytics code will use the `G-PPPPPPPPP` tag ID.
-
-1. `config/staging/hugo.toml`
-
-    Include this section only:
-
-    {{< code-toggle file=hugo copy=false >}}
-    [services.googleAnalytics]
-    ID = 'G-SSSSSSSSS'
-    {{< /code-toggle >}}
-
-    You do not need to include other parameters in this file. Include only those parameters that are specific to your staging environment. Hugo will merge these parameters with the default configuration.
-
-    To build your staging site, run `hugo --environment staging`. The analytics code will use the `G-SSSSSSSSS` tag ID.
-
-## Merge configuration from themes
-
-The configuration value for `_merge` can be one of:
-
-none
-: No merge.
-
-shallow
-: Only add values for new keys.
-
-deep
-: Add values for new keys, merge existing.
-
-Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set.
-
-{{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}}
-
-## All configuration settings
-
-###### archetypeDir
-
-(`string`) The directory where Hugo finds archetype files (content templates). Default is `archetypes`. {{% module-mounts-note %}}
-
-###### assetDir
-
-(`string`) The directory where Hugo finds asset files used in [Hugo Pipes](/hugo-pipes/). Default is `assets`. {{% module-mounts-note %}}
-
-###### baseURL
-
-(`string`) The absolute URL (protocol, host, path, and trailing slash) of your published site (e.g., `https://www.example.org/docs/`).
-
-###### build
-
-See [Configure Build](#configure-build).
-
-###### buildDrafts
-
-(`bool`) Include drafts when building. Default is `false`.
-
-###### buildExpired
-
-(`bool`) Include content already expired. Default is `false`.
-
-###### buildFuture
-
-(`bool`) Include content with a future publication date. Default is `false`.
-
-###### caches
-
-See [Configure File Caches](#configure-file-caches).
-
-###### canonifyURLs
-
-(`bool`) See&nbsp;[details](/content-management/urls/#canonical-urls) before enabling this feature. Default is `false`.
-
-###### capitalizeListTitles
-
-{{< new-in 0.123.3 />}}
-
-(`bool`) Whether to capitalize automatic list titles. Applicable to section, taxonomy, and term pages. Default is `true`. You can change the capitalization style in your site configuration to one of `ap`, `chicago`, `go`, `firstupper`, or `none`. See&nbsp;[details].
-
-[details]: /getting-started/configuration/#configure-title-case
-
-###### cascade
-
-Pass down default configuration values (front matter) to pages in the content tree. The options in site config is the same as in page front matter, see [Front Matter Cascade](/content-management/front-matter#cascade).
-
-{{% note %}}
-For a website in a single language, define the `[[cascade]]` in [Front Matter](/content-management/front-matter#cascade). For a multilingual website, define the `[[cascade]]` in [Site Config](/getting-started/configuration/#cascade).
-
-To remain consistent and prevent unexpected behavior, do not mix these strategies.
-{{% /note %}}
-
-###### cleanDestinationDir
-
-(`bool`) When building, removes files from destination not found in static directories. Default is `false`.
-
-###### contentDir
-
-(`string`) The directory from where Hugo reads content files.  Default is `content`. {{% module-mounts-note %}}
-
-###### copyright
-
-(`string`) Copyright notice for your site, typically displayed in the footer.
-
-###### dataDir
-
-(`string`) The directory from where Hugo reads data files. Default is `data`. {{% module-mounts-note %}}
-
-###### defaultOutputFormat
-(`string`) The default output format for the site. If unspecified, the first available format in the defined order (by weight, then alphabetically) will be used.
-
-###### defaultContentLanguage
-
-(`string`) Content without language indicator will default to this language. Default is `en`.
-
-###### defaultContentLanguageInSubdir
-
-(`bool`) Render the default content language in subdir, e.g. `content/en/`. The site root `/` will then redirect to `/en/`. Default is `false`.
-
-###### disableAliases
-
-(`bool`) Will disable generation of alias redirects. Note that even if `disableAliases` is set, the aliases themselves are preserved on the page. The motivation with this is to be able to generate 301 redirects in an `.htaccess`, a Netlify `_redirects` file or similar using a custom output format. Default is `false`.
-
-###### disableDefaultLanguageRedirect
-
-{{< new-in 0.140.0 />}}
-
-(`bool`) Disables generation of redirect to the default language when DefaultContentLanguageInSubdir is `true`. Default is `false`.
-
-###### disableHugoGeneratorInject
-
-(`bool`) Hugo will, by default, inject a generator meta tag in the HTML head on the _home page only_. You can turn it off, but we would really appreciate if you don't, as this is a good way to watch Hugo's popularity on the rise. Default is `false`.
-
-###### disableKinds
-
-(`[]string`) Disable rendering of the specified page [kinds](g), any of `404`, `home`, `page`, `robotstxt`, `rss`, `section`, `sitemap`, `taxonomy`, or `term`.
-
-###### disableLanguages
-
-See [disable a language](/content-management/multilingual/#disable-a-language).
-
-###### disableLiveReload
-
-(`bool`) Disable automatic live reloading of browser window. Default is `false`.
-
-###### disablePathToLower
-
-(`bool`) Do not convert the url/path to lowercase. Default is `false`.
-
-###### enableEmoji
-
-(`bool`) Enable Emoji emoticons support for page content; see the [emoji shortcode quick reference guide](/quick-reference/emojis/). Default is `false`.
-
-###### enableGitInfo
-
-(`bool`) Enable `.GitInfo` object for each page (if the Hugo site is versioned by Git). This will then update the `Lastmod` parameter for each page using the last git commit date for that content file. Default is `false`.
-
-###### enableMissingTranslationPlaceholders
-
-(`bool`) Show a placeholder instead of the default value or an empty string if a translation is missing. Default is `false`.
-
-###### enableRobotsTXT
-
-(`bool`) Enable generation of `robots.txt` file. Default is `false`.
-
-###### environment
-
-(`string`) Build environment. Default is `production` when running `hugo` and `development` when running `hugo server`. See [Configuration directory](https://gohugo.io/getting-started/configuration/#configuration-directory).
-###### frontmatter
-
-See [Front matter Configuration](#configure-front-matter).
-
-###### hasCJKLanguage
-
-(`bool`) If true, auto-detect Chinese/Japanese/Korean Languages in the content. This will make `.Summary` and `.WordCount` behave correctly for CJK languages. Default is `false`.
-
-###### ignoreCache
-
-(`bool`) Ignore the cache directory. Default is `false`.
-
-###### ignoreLogs
-(`[]string`) A slice of message identifiers corresponding to warnings and errors you wish to suppress. See [`erroridf`] and [`warnidf`].
-
-[`erroridf`]: /functions/fmt/erroridf/
-[`warnidf`]: /functions/fmt/warnidf/
-
-###### ignoreVendorPaths
-
-(`string`) Ignore vendored modules that match the given [Glob] pattern within the `_vendor` directory.
-
-[Glob]: https://github.com/gobwas/glob?tab=readme-ov-file#example]
-
-###### imaging
-
-See [image processing configuration](/content-management/image-processing/#imaging-configuration).
-
-###### languageCode
-
-(`string`) A language tag as defined by [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). This value is used to populate:
-
-- The `<language>` element in the embedded [RSS template]({{% eturl rss %}})
-- The `lang` attribute of the `<html>` element in the embedded [alias template]({{% eturl alias %}})
-- The `og:locale` `meta` element in the embedded [Open Graph template]({{% eturl opengraph %}})
-
-When present in the root of the configuration, this value is ignored if one or more language keys exists. Please specify this value independently for each language key.
-
-###### languages
-
-See [Configure Languages](/content-management/multilingual/#configure-languages).
-
-###### layoutDir
-
-(`string`) The directory that contains templates. Default is `layouts`.
-
-###### markup
-
-See [Configure Markup](/getting-started/configuration-markup).
-
-###### mediaTypes
-
-See [Configure Media Types](/templates/output-formats/#media-types).
-
-###### menus
-
-See [Menus](/content-management/menus/#define-in-site-configuration).
-
-###### minify
-
-See [Configure Minify](#configure-minify).
-
-###### module
-
-Module configuration see [module configuration](/hugo-modules/configuration/).
-
-###### newContentEditor
-
-(`string`) The editor to use when creating new content.
-
-###### noBuildLock
-
-(`bool`) Don't create `.hugo_build.lock` file. Default is `false`.
-
-###### noChmod
-
-(`bool`) Don't sync permission mode of files. Default is `false`.
-
-###### noTimes
-
-(`bool`) Don't sync modification time of files. Default is `false`.
-
-###### outputFormats
-
-See [custom output formats].
-
-###### page
-
-See [configure page](#configure-page).
-
-###### pagination
-
-See [configure pagination](/templates/pagination/#configuration).
-
-###### panicOnWarning
-
-(`bool`) Whether to panic on first WARNING. Default is `false`.
-
-###### permalinks
-
-See [Content Management](/content-management/urls/#permalinks).
-
-###### pluralizeListTitles
-
-(`bool`) Whether to pluralize automatic list titles. Applicable to section pages. Default is `true`.
-
-###### printI18nWarnings
-
-(`bool`) Whether to log WARNINGs for each missing translation. Default is `false`.
-
-###### printPathWarnings
-
-(`bool`) Whether to log WARNINGs when Hugo publishes two or more files to the same path. Default is `false`.
-
-###### printUnusedTemplates
-
-(`bool`) Whether to log WARNINGs for each unused template. Default is `false`.
-
-###### publishDir
-
-(`string`) The directory where Hugo will write the final static site (the HTML files etc.). Default is `public`.
-
-###### refLinksErrorLevel
-
-(`string`) When using `ref` or `relref` to resolve page links and a link cannot be resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).  Default is `ERROR`.
-
-###### refLinksNotFoundURL
-
-(`string`) URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
-
-###### related
-
-See [Related Content](/content-management/related/#configure-related-content).
-
-###### relativeURLs
-
-(`bool`) See&nbsp;[details](/content-management/urls/#relative-urls) before enabling this feature. Default is `false`.
-
-###### removePathAccents
-
-(`bool`) Removes [non-spacing marks](https://www.compart.com/en/unicode/category/Mn) from [composite characters](https://en.wikipedia.org/wiki/Precomposed_character) in content paths. Default is `false`.
-
-```text
-content/post/hügó.md → https://example.org/post/hugo/
-```
-
-###### renderSegments
-
-{{< new-in 0.124.0 />}}
-
-(`[]string`) A list of segments to render. If not set, everything will be rendered. This is more commonly set in a CLI flag, e.g. `hugo --renderSegments segment1,segment2`. The segment names must match the names in the [segments](#configure-segments) configuration.
-
-###### sectionPagesMenu
-
-See [Menus](/content-management/menus/#define-automatically).
-
-###### security
-
-See [Security Policy](/about/security/#security-policy).
-
-###### segments
-
-See [Segments](#configure-segments).
-
-###### sitemap
-
-Default [sitemap configuration](/templates/sitemap/#configuration).
-
-###### summaryLength
-
-(`int`) Applicable to [automatic summaries], the minimum number of words to render when calling the [`Summary`] method on a `Page` object. In this case the `Summary` method returns the content, truncated to the paragraph closest to the `summaryLength`.
-
-[automatic summaries]: /content-management/summaries/#automatic-summary
-[`Summary`]: /methods/page/summary/
-
-###### taxonomies
-
-See [Configure Taxonomies](/content-management/taxonomies#configure-taxonomies).
-
-###### templateMetrics
-
-(`bool`) Whether to print template execution metrics to the console. Default is `false`. See [Template metrics](/troubleshooting/performance/#template-metrics).
-
-###### templateMetricsHints
-
-(`bool`) Whether to print template execution improvement hints to the console. Applicable when `templateMetrics` is `true`. Default is `false`. See [Template metrics](/troubleshooting/performance/#template-metrics).
-
-###### theme
-
-See [module configuration](/hugo-modules/configuration/#module-configuration-imports) for how to import a theme.
-
-###### themesDir
-
-(`string`) The directory where Hugo reads the themes from. Default is `themes`.
-
-###### timeout
-
-(`string`) Timeout for generating page contents, specified as a [duration](https://pkg.go.dev/time#Duration) or in seconds. *Note:*&nbsp;this is used to bail out of recursive content generation. You might need to raise this limit if your pages are slow to generate (e.g., because they require large image processing or depend on remote contents). Default is `30s`.
-
-###### timeZone
-
-(`string`) The time zone used to parse dates without time zone offsets, including front matter date fields and values passed to the [`time.AsTime`] and [`time.Format`] template functions. The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone Database]. For example, `America/Los_Angeles` and `Europe/Oslo` are valid time zones.
-
-[`time.AsTime`]: /functions/time/astime/
-[`time.Format`]: /functions/time/format/
-[IANA Time Zone Database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
-
-###### title
-
-(`string`) Site title.
-
-###### titleCaseStyle
-
-(`string`) Default is `ap`. See [Configure Title Case](#configure-title-case).
-
-###### uglyURLs
-
-(`bool` or `map`) Whether to generate uglyURLs. Default is `false`. See&nbsp;[details](/content-management/urls/#appearance).
-
-###### watch
-
-(`bool`) Watch filesystem for changes and recreate as needed. Default is `false`.
-
-{{% note %}}
-If you are developing your site on a \*nix machine, here is a handy shortcut for finding a configuration option from the command line:
-```txt
-cd ~/sites/yourhugosite
-hugo config | grep emoji
-```
-
-which shows output like
-
-```txt
-enableemoji: true
-```
-{{% /note %}}
-
-## Configure page
-
-{{< new-in 0.133.0 />}}
-
-These methods on a `Page` object navigate to the next or previous page within a page collection, relative to the current page:
-
-- [Next](/methods/page/next/)
-- [NextInSection](/methods/page/nextinsection/)
-- [Prev](/methods/page/prev/)
-- [PrevInSection](/methods/page/previnsection/)
-
-Hugo determines the _next_ and _previous_ page by sorting a page collection according to this sorting hierarchy:
-
-Field|Precedence|Sort direction
-:--|:--|:--
-[`weight`]|1|descending
-[`date`]|2|descending
-[`linkTitle`]|3|descending
-[`path`]|4|descending
-
-[`date`]: /methods/page/date/
-[`weight`]: /methods/page/weight/
-[`linkTitle`]: /methods/page/linktitle/
-[`path`]: /methods/page/path/
-
-The sort direction in the table above corresponds to these default site configuration values:
-
-{{< code-toggle config=page />}}
-
-To sort all fields in ascending order:
-
-{{< code-toggle file=hugo >}}
-[page]
-  nextPrevInSectionSortOrder = 'asc'
-  nextPrevSortOrder = 'asc'
-{{< /code-toggle >}}
-
-{{% note %}}
-These settings do not apply to the [`Next`] or [`Prev`] methods on a `Pages` object.
-
-[`Next`]: /methods/pages/next
-[`Prev`]: /methods/pages/next
-{{% /note %}}
-
-## Configure build
-
-See [Configure Build](/getting-started/configuration-build/).
-
-## Configure server
-
-This is only relevant when running `hugo server`, and it allows to set HTTP headers during development, which allows you to test out your Content Security Policy and similar. The configuration format matches [Netlify's](https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file) with slightly more powerful [Glob matching](https://github.com/gobwas/glob):
-
-{{< code-toggle file=hugo >}}
-[server]
-[[server.headers]]
-for = "/**"
-
-[server.headers.values]
-X-Frame-Options = "DENY"
-X-XSS-Protection = "1; mode=block"
-X-Content-Type-Options = "nosniff"
-Referrer-Policy = "strict-origin-when-cross-origin"
-Content-Security-Policy = "script-src localhost:1313"
-{{< /code-toggle >}}
-
-Since this is "development only", it may make sense to put it below the `development` environment:
-
-{{< code-toggle file=config/development/server >}}
-[[headers]]
-for = "/**"
-
-[headers.values]
-X-Frame-Options = "DENY"
-X-XSS-Protection = "1; mode=block"
-X-Content-Type-Options = "nosniff"
-Referrer-Policy = "strict-origin-when-cross-origin"
-Content-Security-Policy = "script-src localhost:1313"
-{{< /code-toggle >}}
-
-You can also specify simple redirects rules for the server. The syntax is again similar to Netlify's.
-
-Note that a `status` code of 200 will trigger a [URL rewrite](https://docs.netlify.com/routing/redirects/rewrites-proxies/), which is what you want in SPA situations, e.g:
-
-{{< code-toggle file=config/development/server >}}
-[[redirects]]
-from = "/myspa/**"
-to = "/myspa/"
-status = 200
-force = false
-{{< /code-toggle >}}
-
-Setting `force=true` will make a redirect even if there is existing content in the path. Note that before Hugo 0.76 `force` was the default behavior, but this is inline with how Netlify does it.
-
-## 404 server error page {#_404-server-error-page}
-
-Hugo will, by default, render all 404 errors when running `hugo server` with the `404.html` template. Note that if you have already added one or more redirects to your [server configuration](#configure-server), you need to add the 404 redirect explicitly, e.g:
-
-{{< code-toggle file=config/development/server >}}
-[[redirects]]
-from   = "/**"
-to     = "/404.html"
-status = 404
-{{< /code-toggle >}}
-
-With a multilingual site, define the redirect for the default content language last:
-
-{{< code-toggle file=config/development/server >}}
-defaultContentLanguage = 'en'
-defaultContentLanguageInSubdir = false
-[[redirects]]
-from = '/fr/**'
-to = '/fr/404.html'
-status = 404
-
-[[redirects]] # Default language must be last.
-from = '/**'
-to = '/404.html'
-status = 404
-{{< /code-toggle >}}
-
-If you are serving the default content language from a subdirectory:
-
-{{< code-toggle file=config/development/server >}}
-defaultContentLanguage = 'en'
-defaultContentLanguageInSubdir = true
-[[redirects]]
-from = '/fr/**'
-to = '/fr/404.html'
-status = 404
-
-[[redirects]] # Default language must be last.
-from = '/**'
-to = '/en/404.html'
-status = 404
-{{< /code-toggle >}}
-
-## Configure title case
-
-By default, Hugo follows the capitalization rules published in the [Associated Press Stylebook] when creating automatic section titles, and when transforming strings with the [`strings.Title`] function.
-
-Change this behavior by setting `titleCaseStyle` in your site configuration to any of the values below:
-
-ap
-: Use the capitalization rules published in the [Associated Press Stylebook].
-
-chicago
-: Use the capitalization rules published in the [Chicago Manual of Style].
-
-go
-: Capitalize the first letter of every word.
-
-firstupper
-: Capitalize the first letter of the first word.
-
-none
-: Disable transformation of automatic section titles, and disable the transformation performed by the `strings.Title` function. This is useful if you would prefer to manually capitalize section titles as needed, and to bypass opinionated theme usage of the `strings.Title` function.
-
-[`strings.Title`]: /functions/strings/title/
-[Associated Press Stylebook]: https://www.apstylebook.com/
-[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
-[site configuration]: /getting-started/configuration/#configure-title-case
-
-## Configuration environment variables
-
-DART_SASS_BINARY
-: (`string`) The absolute path to the Dart Sass executable. By default, Hugo searches for the executable in each of the paths in the `PATH` environment variable.
-
-HUGO_ENVIRONMENT
-: (`string`) Overrides the default [environment](g), typically one of `development`, `staging`, or `production`.
-
-HUGO_FILE_LOG_FORMAT
-: (`string`) A format string for the file path, line number, and column number displayed when reporting errors, or when calling the `Position` method from a shortcode or Markdown render hook. Valid tokens are `:file`, `:line`, and `:col`. Default is `:file::line::col`.
-
-{{< new-in 0.123.0 />}}
-
-HUGO_MEMORYLIMIT
-: (`int`) The maximum amount of system memory, in gigabytes, that Hugo can use while rendering your site. Default is 25% of total system memory.
-
-HUGO_NUMWORKERMULTIPLIER
-: (`int`) The number of workers used in parallel processing. Default is the number of logical CPUs.
-
-## Configure with environment variables
-
-Configuration key-values can be defined through operating system environment variables.
-
-For example, the following command will effectively set a website's title on Unix-like systems:
-
-```txt
-$ env HUGO_TITLE="Some Title" hugo
-```
-
-This is really useful if you use a service such as Netlify to deploy your site. Look at the Hugo docs [Netlify configuration file](https://github.com/gohugoio/hugoDocs/blob/master/netlify.toml) for an example.
-
-{{% note %}}
-Names must be prefixed with `HUGO_` and the configuration key must be set in uppercase when setting operating system environment variables.
-
-To set configuration parameters, prefix the name with `HUGO_PARAMS_`
-{{% /note %}}
-
-If you are using snake_cased variable names, the above will not work. Hugo determines the delimiter to use by the first character after `HUGO`. This allows you to define environment variables on the form `HUGOxPARAMSxAPI_KEY=abcdefgh`, using any [allowed](https://stackoverflow.com/questions/2821043/allowed-characters-in-linux-environment-variable-names#:~:text=So%20names%20may%20contain%20any,not%20begin%20with%20a%20digit.) delimiter.
-
-## Ignore content and data files when rendering
-
-{{% note %}}
-This works, but we recommend you use the newer and more powerful [includeFiles and excludeFiles](/hugo-modules/configuration/#module-configuration-mounts) mount options.
-{{% /note %}}
-
-To exclude specific files from the `content`, `data`, and `i18n` directories when rendering your site, set `ignoreFiles` to one or more regular expressions to match against the absolute file path.
-
-To ignore files ending with `.foo` or `.boo`:
-
-{{< code-toggle file=hugo >}}
-ignoreFiles = ['\.foo$', '\.boo$']
-{{< /code-toggle >}}
-
-To ignore a file using the absolute file path:
-
-{{< code-toggle file=hugo >}}
-ignoreFiles = ['^/home/user/project/content/test\.md$']
-{{< /code-toggle >}}
-
-## Configure front matter
-
-### Configure dates
-
-Dates are important in Hugo, and you can configure how Hugo assigns dates to your content pages. You do this by adding a `frontmatter` section to your `hugo.toml`.
-
-The default configuration is:
-
-{{< code-toggle config=frontmatter />}}
-
-If you, as an example, have a non-standard date parameter in some of your content, you can override the setting for `date`:
-
-{{< code-toggle file=hugo >}}
-[frontmatter]
-date = ["myDate", ":default"]
-{{< /code-toggle >}}
-
-The `:default` is a shortcut to the default settings. The above will set `.Date` to the date value in `myDate` if present, if not we will look in `date`,`publishDate`, `lastmod` and pick the first valid date.
-
-In the list to the right, values starting with ":" are date handlers with a special meaning (see below). The others are just names of date parameters (case insensitive) in your front matter configuration. Also note that Hugo have some built-in aliases to the above: `lastmod` => `modified`, `publishDate` => `pubdate`, `published` and `expiryDate` => `unpublishdate`. With that, as an example, using `pubDate` as a date in front matter, will, by default, be assigned to `.PublishDate`.
-
-The special date handlers are:
-
-`:fileModTime`
-: Fetches the date from the content file's last modification timestamp.
-
-An example:
-
-{{< code-toggle file=hugo >}}
-[frontmatter]
-lastmod = ["lastmod", ":fileModTime", ":default"]
-{{< /code-toggle >}}
-
-The above will try first to extract the value for `.Lastmod` starting with the `lastmod` front matter parameter, then the content file's modification timestamp. The last, `:default` should not be needed here, but Hugo will finally look for a valid date in `:git`, `date` and then `publishDate`.
-
-`:filename`
-: Fetches the date from the content file's file name. For example, `2018-02-22-mypage.md` will extract the date `2018-02-22`. Also, if `slug` is not set, `mypage` will be used as the value for `.Slug`.
-
-An example:
-
-{{< code-toggle file=hugo >}}
-[frontmatter]
-date  = [":filename", ":default"]
-{{< /code-toggle >}}
-
-The above will try first to extract the value for `.Date` from the file name, then it will look in front matter parameters `date`, `publishDate` and lastly `lastmod`.
-
-`:git`
-: This is the Git author date for the last revision of this content file. This will only be set if `--enableGitInfo` is set or `enableGitInfo = true` is set in site configuration.
-
-## Configure minify
-
-See the [tdewolff/minify] project page for details.
-
-[tdewolff/minify]: https://github.com/tdewolff/minify
-
-Default configuration:
-
-{{< code-toggle config=minify />}}
-
-## Configure file caches
-
-Since Hugo 0.52 you can configure more than just the `cacheDir`. This is the default configuration:
-
-{{< code-toggle config=caches />}}
-
-You can override any of these cache settings in your own `hugo.toml`.
-
-### The keywords explained
-
-cacheDir
-: (`string`) See [Configure cacheDir](#configure-cachedir).
-
-project
-: (`string`) The base directory name of the current Hugo project. This means that, in its default setting, every project will have separated file caches, which means that when you do `hugo --gc` you will not touch files related to other Hugo projects running on the same PC.
-
-resourceDir
-: (`string`) This is the value of the `resourceDir` configuration option.
-
-maxAge
-: (`string`) This is the duration before a cache entry will be evicted, -1 means forever and 0 effectively turns that particular cache off. Uses Go's `time.Duration`, so valid values are `"10s"` (10 seconds), `"10m"` (10 minutes) and `"10h"` (10 hours).
-
-dir
-: (`string`) The absolute path to where the files for this cache will be stored. Allowed starting placeholders are `:cacheDir` and `:resourceDir` (see above).
-
-## Configure cacheDir
-
-This is the directory where Hugo by default will store its file caches. See [Configure File Caches](#configure-file-caches).
-
-This can be set using the `cacheDir` config option or via the OS environment variable `HUGO_CACHEDIR`.
-
-If this is not set, Hugo will use, in order of preference:
-
-1. If running on Netlify: `/opt/build/cache/hugo_cache/`. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other CI vendors, please read their documentation. For an CircleCI example, see [this configuration](https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml).
-1. In a `hugo_cache` directory below the OS user cache directory as defined by Go's [os.UserCacheDir](https://pkg.go.dev/os#UserCacheDir). On Unix systems, this is `$XDG_CACHE_HOME` as specified by [basedir-spec-latest](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) if non-empty, else `$HOME/.cache`. On MacOS, this is `$HOME/Library/Caches`. On Windows, this is`%LocalAppData%`. On Plan 9, this is `$home/lib/cache`. {{< new-in 0.116.0 />}}
-1. In a  `hugo_cache_$USER` directory below the OS temp dir.
-
-If you want to know the current value of `cacheDir`, you can run `hugo config`, e.g: `hugo config | grep cachedir`.
-
-[`.Site.Params`]: /method/site/params/
-[directory structure]: /getting-started/directory-structure/
-[lookup order]: /templates/lookup-order/
-[custom output formats]: /templates/output-formats/
-[templates]: /templates/
-[static-files]: /content-management/static-files/
-
-## Configure HTTP cache
-
-{{< new-in 0.127.0 />}}
-
-Note that this configuration is currently only relevant when using the [resources.GetRemote] function.
-
-The caching in Hugo is layered:
-
-```goat {.w-40}
- .-----------.
-|  dynacache  |
- '-----+-----'
-       |
-       v
- .----------.
-| HTTP cache |
- '-----+----'
-       |
-       v
- .----------.
-| file cache |
- '-----+----'
-```
-
-Dynacache
-: A in memory LRU cache that gets evicted on changes, [Cache Buster](/getting-started/configuration-build/#configure-cache-busters) matches and in low memory situations.
-
-HTTP Cache
-: Enables HTTP cache behavior (RFC 9111) for remote resources. This works best for resources with properly set up HTTP cache headers. The HTTP cache uses the [file cache] to store and serve cached resources.
-
-File Cache
-: See [file cache].
-
-The default HTTP cache disables everything:
-
-{{< code-toggle config=HTTPCache />}}
-
-caching
-: Enabled RFC 9111 cache behavior _for_ a configured set of resources. Stale resources will be refreshed from the [file cache] even if their configured TTL isn't reached.
-
-polling
-: Enables polling _for_ a set of resources. Note that you can enable polling for resources even if HTTP caching is disabled. This setting is only used when in watch mode (e.g. `hugo server`). When a changed resource is detected, that change triggers a rebuild of pages using that resource.
-
-[resources.GetRemote]: /functions/resources/getremote/
-[file cache]: #configure-file-caches
-
-## Configure segments
-
-{{< new-in 0.124.0 />}}
-
-{{% note %}}
-The `segments` configuration is currently only used to configure partitioned rendering.
-This feature is only about what gets rendered when, Hugo's entire object graph (sites and pages) is
-always available.
-{{% /note %}}
-
-* Each segment consists of zero or more `exclude` filters and zero or more `include` filters.
-* Each filter consists of one or more field Glob matchers.
-* Each filter in a section (`exclude` or `include`) is ORed together, each matcher in a filter is ANDed together.
-
-The fields that can be used in the filters are:
-
-path
-: The logical page [path].
-
-lang
-: The [page language].
-
-kind
-: The [kind](g) of the page.
-
-output
-: The [output format](g) of the page.
-
-It is recommended to put coarse grained filters (e.g. for language and output format) in the excludes section, e.g.:
-
-{{< code-toggle file=hugo >}}
-[segments.segment1]
-  [[segments.segment1.excludes]]
-    lang = "n*"
-  [[segments.segment1.excludes]]
-    lang   = "en"
-    output = "rss"
-  [[segments.segment1.includes]]
-    kind = "{home,term,taxonomy}"
-  [[segments.segment1.includes]]
-    path = "{/docs,/docs/**}"
-{{< /code-toggle >}}
-
-With the above you can render only the pages in `segment1` by configuring the [renderSegments](#rendersegments) or setting the `--renderSegments` flag:
-
-```bash
-hugo --renderSegments segment1
-```
-
-Multiple segments can be configured, and the `--renderSegments` flag can take a comma separated list of segments.
-
-Some use cases for this feature:
-
-* Splitting builds of big sites.
-* Enable faster builds during development by only rendering a subset of the site.
-* Partial rebuilds, e.g. render the home page and the "news section" every hour, render the entire site once a week.
-* Render only e.g. the JSON output format to push to e.g. a search index.
-  
-[path]: /methods/page/path/
-[page language]: /methods/page/language/
index ce1df600fe8c8e88a9084a9fb4fc0dad741c8426..3feecd1359b94ee5e416a1cc7fa61ea7f5e612a4 100644 (file)
@@ -1,17 +1,14 @@
 ---
 title: Directory structure
-description: Each Hugo project is a directory, with subdirectories that contribute to the content, structure, behavior, and presentation of your site.
-categories: [getting started,fundamentals]
-keywords: [source, organization, directories]
-menu:
-  docs:
-    parent: getting-started
-    weight: 40
-weight: 40
-toc: true
+description: An overview of Hugo's directory structure.
+categories: []
+keywords: []
+weight: 30
 aliases: [/overview/source-directory/]
 ---
 
+Each Hugo project is a directory, with subdirectories that contribute to the content, structure, behavior, and presentation of your site.
+
 ## Site skeleton
 
 Hugo generates a project skeleton when you create a new site. For example, this command:
@@ -78,49 +75,38 @@ my-site/
 
 Each of the subdirectories contributes to the content, structure, behavior, or presentation of your site.
 
-###### archetypes
-
-The `archetypes` directory contains templates for new content. See&nbsp;[details](/content-management/archetypes/).
-
-###### assets
-
-The `assets` directory contains global resources typically passed through an asset pipeline. This includes resources such as images, CSS, Sass, JavaScript, and TypeScript. See&nbsp;[details](/hugo-pipes/introduction/).
-
-###### config
-
-The `config` directory contains your site configuration, possibly split into multiple subdirectories and files. For projects with minimal configuration or projects that do not need to behave differently in different environments, a single configuration file named `hugo.toml` in the root of the project is sufficient. See&nbsp;[details](/getting-started/configuration/#configuration-directory).
-
-###### content
+archetypes
+: The `archetypes` directory contains templates for new content. See&nbsp;[details](/content-management/archetypes/).
 
-The `content` directory contains the markup files (typically Markdown) and page resources that comprise the content of your site. See&nbsp;[details](/content-management/organization/).
+assets
+: The `assets` directory contains global resources typically passed through an asset pipeline. This includes resources such as images, CSS, Sass, JavaScript, and TypeScript. See&nbsp;[details](/hugo-pipes/introduction/).
 
-###### data
+config
+: The `config` directory contains your site configuration, possibly split into multiple subdirectories and files. For projects with minimal configuration or projects that do not need to behave differently in different environments, a single configuration file named `hugo.toml` in the root of the project is sufficient. See&nbsp;[details](/configuration/introduction/#configuration-directory).
 
-The `data` directory contains data files (JSON, TOML, YAML, or XML) that augment content, configuration, localization, and navigation. See&nbsp;[details](/content-management/data-sources/).
+content
+: The `content` directory contains the markup files (typically Markdown) and page resources that comprise the content of your site. See&nbsp;[details](/content-management/organization/).
 
-###### i18n
+data
+: The `data` directory contains data files (JSON, TOML, YAML, or XML) that augment content, configuration, localization, and navigation. See&nbsp;[details](/content-management/data-sources/).
 
-The `i18n` directory contains translation tables for multilingual sites. See&nbsp;[details](/content-management/multilingual/).
+i18n
+: The `i18n` directory contains translation tables for multilingual sites. See&nbsp;[details](/content-management/multilingual/).
 
-###### layouts
+layouts
+: The `layouts` directory contains templates to transform content, data, and resources into a complete website. See&nbsp;[details](/templates/).
 
-The `layouts` directory contains templates to transform content, data, and resources into a complete website. See&nbsp;[details](/templates/).
+public
+: The `public` directory contains the published website, generated when you run the `hugo` or `hugo server` commands. Hugo recreates this directory and its content as needed. See&nbsp;[details](/getting-started/usage/#build-your-site).
 
-###### public
+resources
+: The `resources` directory contains cached output from Hugo's asset pipelines, generated when you run the `hugo` or `hugo server` commands. By default this cache directory includes CSS and images. Hugo recreates this directory and its content as needed.
 
-The `public` directory contains the published website, generated when you run the `hugo` or `hugo server` commands. Hugo recreates this directory and its content as needed. See&nbsp;[details](/getting-started/usage/#build-your-site).
+static
+: The `static` directory contains files that will be copied to the `public` directory when you build your site. For example: `favicon.ico`, `robots.txt`, and files that verify site ownership. Before the introduction of [page bundles](g) and [asset pipelines](/hugo-pipes/introduction/), the `static` directory was also used for images, CSS, and JavaScript.
 
-###### resources
-
-The `resources` directory contains cached output from Hugo's asset pipelines, generated when you run the `hugo` or `hugo server` commands. By default this cache directory includes CSS and images. Hugo recreates this directory and its content as needed.
-
-###### static
-
-The `static` directory contains files that will be copied to the `public` directory when you build your site. For example: `favicon.ico`, `robots.txt`, and files that verify site ownership. Before the introduction of [page bundles](g) and [asset pipelines](/hugo-pipes/introduction/), the `static` directory was also used for images, CSS, and JavaScript.
-
-###### themes
-
-The `themes` directory contains one or more [themes](g), each in its own subdirectory.
+themes
+: The `themes` directory contains one or more [themes](g), each in its own subdirectory.
 
 ## Union file system
 
@@ -158,11 +144,10 @@ source = '/home/user/shared-content'
 target = 'content'
 {{< /code-toggle >}}
 
-{{% note %}}
-When you overlay one directory on top of another, you must mount both directories.
-
-Hugo does not follow symbolic links. If you need the functionality provided by symbolic links, use Hugo's union file system instead.
-{{% /note %}}
+> [!note]
+> When you overlay one directory on top of another, you must mount both directories.
+>
+> Hugo does not follow symbolic links. If you need the functionality provided by symbolic links, use Hugo's union file system instead.
 
 After mounting, the union file system has this structure:
 
@@ -185,11 +170,10 @@ home/
         └── hugo.toml
 ```
 
-{{% note %}}
-When two or more files have the same path, the order of precedence follows the order of the mounts. For example, if the shared content directory contains `books/book-1.md`, it will be ignored because the project's `content` directory was mounted first.
-{{% /note %}}
+> [!note]
+> When two or more files have the same path, the order of precedence follows the order of the mounts. For example, if the shared content directory contains `books/book-1.md`, it will be ignored because the project's `content` directory was mounted first.
 
-You can mount directories to `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, and `static`. See&nbsp;[details](/hugo-modules/configuration/#module-configuration-mounts).
+You can mount directories to `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, and `static`. See&nbsp;[details](/configuration/module/#mounts).
 
 You can also mount directories from Git repositories using Hugo Modules. See&nbsp;[details](/hugo-modules/).
 
index 80805d4a62e94b78f4bffcba5682d5d859c02885..7838b6810d989aad2f06dac42af6f751e18a608e 100644 (file)
@@ -2,19 +2,14 @@
 title: External learning resources
 linkTitle: External resources
 description: Use these third-party resources to learn Hugo.
-categories: [getting started]
-keywords: [books, tutorials, learning, usage]
-menu:
-  docs:
-    parent: getting-started
-    weight: 90
-weight: 90
-toc: true
+categories: []
+keywords: []
+weight: 40
 ---
 
 ## Books
 
-### Hugo In Action
+### Hugo in Action
 
 Hugo in Action is a step-by-step guide to using Hugo to create static websites. Working with a complete example website and source code samples, you'll learn how to build and host a low-maintenance, high-performance site that will wow your users and stay stable without relying on a third-party server.
 
@@ -28,7 +23,7 @@ ISBN: 9781617297007
 
 ### Build Websites with Hugo
 
-In this book, you'll use Hugo to build a personal portfolio site that you can use to showcase your skills and thoughts to the world. You'll build the basic skeleton, develop a custom theme, and use content templates to generate new pages quickly. You'll use internal and external data sources to embed content into your site, and render some of your content in JSON and RSS. You'll add a blog section with posts and integrate Disqus with your site, and then make your site searchable.
+In this book, you'll use Hugo to build a personal portfolio site that you can use to showcase your skills and thoughts to the world. You'll build the basic skeleton, develop a custom theme, and use content templates to generate new pages quickly. You'll use internal and external data sources to embed content into your site and render some of your content in JSON and RSS. You'll add a blog section with posts and integrate Disqus with your site, and then make your site searchable.
 
 [{{< img src="build-websites-with-hugo.png" alt="Book cover: Build Websites with Hugo" filter="process" filterArgs="resize x350 webp">}}](https://pragprog.com/titles/bhhugo/build-websites-with-hugo/)
 
@@ -42,7 +37,7 @@ ISBN: 9781680507263
 
 ### Hugo Beginner Tutorial Series
 
-Welcome to this introduction to Hugo tutorial. The goal of this series is to take you from a lion cub with basic web design knowledge to creating your first Hugo website. In this series you’ll learn how to set up a Hugo site, the basics of usingHugo layouts, partials, and templating, set up a blog, and finally use data files. By the end of this series you’ll have the foundational knowledge to build your own Hugo sites.
+Welcome to this introduction to Hugo tutorial. This series aims to take you from a lion cub with basic web design knowledge to creating your first Hugo website. In this series, you'll learn how to set up a Hugo site, the basics of using Hugo layouts, partials, and templating, set up a blog, and finally, use data files. By the end of this series, you'll have the foundational knowledge to build your own Hugo sites.
 
 1. [Getting set up in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/)
 1. [Layouts in Hugo](https://cloudcannon.com/tutorials/hugo-beginner-tutorial/layouts-in-hugo/)
@@ -55,9 +50,9 @@ Creator: Mike Neumegen\
 Affiliation: [CloudCannon](https://cloudcannon.com/)\
 Creation date: April 2022
 
-#### Hugo Static Site Generator
+### Hugo Static Site Generator
 
-This course covers the basics of using the Hugo static site generator. Work your way through the articles and we'll teach you everything you need to know to create a professional and scalable website or blog!
+This course covers the basics of using the Hugo static site generator. Work your way through the articles, and we'll teach you everything you need to know to create a professional and scalable website or blog!
 
 1. [Introduction](https://www.giraffeacademy.com/static-site-generators/hugo/)
 1. [Windows Installation](https://www.giraffeacademy.com/static-site-generators/hugo/installing-hugo-on-windows/)
index cb22e0121df99f9b43ee1ffc3c2557e27c514d6d..dfb78f42e8e05278f58548303db31e6701926fc2 100644 (file)
@@ -1,16 +1,12 @@
 ---
 title: Quick start
-description: Learn to create a Hugo site in minutes.
-categories: [getting started]
-keywords: [quick start,usage]
-menu:
-  docs:
-    parent: getting-started
-    weight: 20
-weight: 20
-toc: true
+description: Create a Hugo site in minutes.
+categories: []
+keywords: []
+params:
+  minVersion: v0.128.0
+weight: 10
 aliases: [/quickstart/,/overview/quickstart/]
-minVersion: v0.128.0
 ---
 
 In this tutorial you will:
@@ -33,18 +29,14 @@ You must also be comfortable working from the command line.
 
 ### Commands
 
-{{% note %}}
-**If you are a Windows user:**
-
-- Do not use the Command Prompt
-- Do not use Windows PowerShell
-- Run these commands from [PowerShell] or a Linux terminal such as WSL or Git Bash
-
-PowerShell and Windows PowerShell [are different applications].
-
-[PowerShell]: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows
-[are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3
-{{% /note %}}
+> [!note]
+> **If you are a Windows user:**
+>
+> - Do not use the Command Prompt
+> - Do not use Windows PowerShell
+> - Run these commands from [PowerShell] or a Linux terminal such as WSL or Git > Bash
+>
+> PowerShell and Windows PowerShell [are different applications].
 
 Verify that you have installed Hugo {{% param "minVersion" %}} or later.
 
@@ -127,8 +119,6 @@ Notice the `draft` value in the [front matter] is `true`. By default, Hugo does
 
 Add some [Markdown] to the body of the post, but do not change the `draft` value.
 
-[markdown]: https://commonmark.org/help/
-
 ```text
 +++
 title = 'My First Post'
@@ -142,7 +132,7 @@ This is **bold** text, and this is *emphasized* text.
 Visit the [Hugo](https://gohugo.io) website!
 ```
 
-Save the file, then start Hugos development server to view the site. You can run either of the following commands to include draft content.
+Save the file, then start Hugo's development server to view the site. You can run either of the following commands to include draft content.
 
 ```text
 hugo server --buildDrafts
@@ -153,12 +143,8 @@ View your site at the URL displayed in your terminal. Keep the development serve
 
 When satisfied with your new content, set the front matter `draft` parameter to `false`.
 
-{{% note %}}
-Hugo's rendering engine conforms to the CommonMark [specification] for Markdown. The CommonMark organization provides a useful [live testing tool] powered by the reference implementation.
-
-[live testing tool]: https://spec.commonmark.org/dingus/
-[specification]: https://spec.commonmark.org/
-{{% /note %}}
+> [!note]
+> Hugo's rendering engine conforms to the CommonMark [specification] for Markdown. The CommonMark organization provides a useful [live testing tool] powered by the reference implementation.
 
 ## Configure the site
 
@@ -183,15 +169,10 @@ Start Hugo's development server to see your changes, remembering to include draf
 hugo server -D
 ```
 
-{{% note %}}
-Most theme authors provide configuration guidelines and options. Make sure to visit your theme's repository or documentation site for details.
-
-[The New Dynamic], authors of the Ananke theme, provide [documentation] for configuration and usage. They also provide a [demonstration site].
-
-[demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/
-[documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme
-[The New Dynamic]: https://www.thenewdynamic.com/
-{{% /note %}}
+> [!note]
+> Most theme authors provide configuration guidelines and options. Make sure to visit your theme's repository or documentation site for details.
+>
+> [The New Dynamic], authors of the Ananke theme, provide [documentation] for configuration and usage. They also provide a [demonstration site].
 
 ## Publish the site
 
@@ -205,7 +186,7 @@ When you publish your site, you typically do _not_ want to include [draft, futur
 hugo
 ```
 
-To learn how to _deploy_ your site, see the [hosting and deployment] section.
+To learn how to _deploy_ your site, see the [host and deploy] section.
 
 ## Ask for help
 
@@ -216,17 +197,22 @@ Hugo's [forum] is an active community of users and developers who answer questio
 For other resources to help you learn Hugo, including books and video tutorials, see the [external learning resources](/getting-started/external-learning-resources/) page.
 
 [Ananke]: https://github.com/theNewDynamic/gohugo-theme-ananke
+[are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3
+[demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/
 [directory structure]: /getting-started/directory-structure/
+[documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme
 [draft, future, and expired content]: /getting-started/usage/#draft-future-and-expired-content
 [draft, future, or expired content]: /getting-started/usage/#draft-future-and-expired-content
-[external learning resources]:/getting-started/external-learning-resources/
-[forum]: https://discourse.gohugo.io/
 [forum]: https://discourse.gohugo.io/
 [front matter]: /content-management/front-matter/
 [Git submodule]: https://git-scm.com/book/en/v2/Git-Tools-Submodules
-[hosting and deployment]: /hosting-and-deployment/
+[host and deploy]: /host-and-deploy/
 [Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
 [Install Hugo]: /installation/
-[Requesting Help]: https://discourse.gohugo.io/t/requesting-help/9132
-[Requesting Help]: https://discourse.gohugo.io/t/requesting-help/9132
-[site configuration]: /getting-started/configuration/
+[live testing tool]: https://spec.commonmark.org/dingus/
+[Markdown]: https://daringfireball.net/projects/markdown
+[PowerShell]: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows
+[requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
+[site configuration]: /configuration/
+[specification]: https://spec.commonmark.org/
+[The New Dynamic]: https://www.thenewdynamic.com/
index 3380b0ff2d9dda868fcaec892b15e30fb10a1fc0..d6bc42550e5f945024b481bf7e0f979c25e8197f 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Basic usage
-description: Hugo's command line interface (CLI) is fully featured but simple to use, even for those with limited experience working from the command line.
-categories: [getting started]
-keywords: [usage,livereload,command,flags]
-menu:
-  docs:
-    parent: getting-started
-    weight: 30
-weight: 30
-toc: true
+description: Use the command-line interface (CLI) to perform basic tasks.
+categories: []
+keywords: []
+weight: 20
 aliases: [/overview/usage/,/extras/livereload/,/doc/usage/,/usage/]
 ---
 
@@ -50,11 +45,10 @@ hugo
 
 The [`hugo`] command builds your site, publishing the files to the `public` directory. To publish your site to a different directory, use the [`--destination`] flag or set [`publishDir`] in your site configuration.
 
-{{% note %}}
-Hugo does not clear the `public` directory before building your site. Existing files are overwritten, but not deleted. This behavior is intentional to prevent the inadvertent removal of files that you may have added to the `public` directory after the build.
-
-Depending on your needs, you may wish to manually clear the contents of the `public` directory before every build.
-{{% /note %}}
+> [!note]
+> Hugo does not clear the `public` directory before building your site. Existing files are overwritten, but not deleted. This behavior is intentional to prevent the inadvertent removal of files that you may have added to the `public` directory after the build.
+>
+> Depending on your needs, you may wish to manually clear the contents of the `public` directory before every build.
 
 ## Draft, future, and expired content
 
@@ -67,12 +61,8 @@ Hugo allows you to set `draft`, `date`, `publishDate`, and `expiryDate` in the [
 
 {{< new-in 0.123.0 />}}
 
-{{% note %}}
-Hugo publishes descendants of draft, future, and expired [node](g) pages. To prevent publication of these descendants, use the [`cascade`] front matter field to cascade [build options] to the descendant pages.
-
-[build options]: /content-management/build-options/
-[`cascade`]: /content-management/front-matter/#cascade-field
-{{% /note %}}
+> [!note]
+> Hugo publishes descendants of draft, future, and expired [node](g) pages. To prevent publication of these descendants, use the [`cascade`] front matter field to cascade [build options] to the descendant pages.
 
 You can override the default behavior when running `hugo` or `hugo server` with command line flags:
 
@@ -84,11 +74,10 @@ hugo --buildFuture    # or -F
 
 Although you can also set these values in your site configuration, it can lead to unwanted results unless all content authors are aware of, and understand, the settings.
 
-{{% note %}}
-As noted above, Hugo does not clear the `public` directory before building your site. Depending on the _current_ evaluation of the four conditions above, after the build your `public` directory may contain extraneous files from a previous build.
-
-A common practice is to manually clear the contents of the `public` directory before each build to remove draft, expired, and future content.
-{{% /note %}}
+> [!note]
+> As noted above, Hugo does not clear the `public` directory before building your site. Depending on the _current_ evaluation of the four conditions above, after the build your `public` directory may contain extraneous files from a previous build.
+>
+> A common practice is to manually clear the contents of the `public` directory before each build to remove draft, expired, and future content.
 
 ## Develop and test your site
 
@@ -122,9 +111,8 @@ hugo server --navigateToChanged
 
 ## Deploy your site
 
-{{% note %}}
-As noted above, Hugo does not clear the `public` directory before building your site. Manually clear the contents of the `public` directory before each build to remove draft, expired, and future content.
-{{% /note %}}
+> [!note]
+> As noted above, Hugo does not clear the `public` directory before building your site. Manually clear the contents of the `public` directory before each build to remove draft, expired, and future content.
 
 When you are ready to deploy your site, run:
 
@@ -154,25 +142,25 @@ public/
 
 In a simple hosting environment, where you typically `ftp`, `rsync`, or `scp` your files to the root of a virtual host, the contents of the `public` directory are all that you need.
 
-Most of our users deploy their sites using a CI/CD workflow, where a push[^1] to their GitHub or GitLab repository triggers a build and deployment. Popular providers include [AWS Amplify], [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify].
+Most of our users deploy their sites using a [CI/CD](g) workflow, where a push[^1] to their GitHub or GitLab repository triggers a build and deployment. Popular providers include [AWS Amplify], [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify].
 
-Learn more in the [hosting and deployment] section.
+Learn more in the [host and deploy] section.
 
 [^1]: The Git repository contains the entire project directory, typically excluding the `public` directory because the site is built _after_ the push.
 
 [`--destination`]: /commands/hugo/#options
+[`cascade`]: /content-management/front-matter/#cascade
 [`hugo server`]: /commands/hugo_server/
 [`hugo`]: /commands/hugo/
-[`publishDir`]: /getting-started/configuration/#publishdir
+[`publishDir`]: /configuration/all/#publishdir
 [AWS Amplify]: https://aws.amazon.com/amplify/
+[build options]: /content-management/build-options/
 [CloudCannon]: https://cloudcannon.com/
 [Cloudflare Pages]: https://pages.cloudflare.com/
-[commands]: /commands/
 [front matter]: /content-management/front-matter/
 [GitHub Pages]: https://pages.github.com/
 [GitLab Pages]: https://docs.gitlab.com/ee/user/project/pages/
-[hosting and deployment]: /hosting-and-deployment/
-[hosting]: /hosting-and-deployment/
+[host and deploy]: /host-and-deploy/
 [installing]: /installation/
 [LiveReload]: https://github.com/livereload/livereload-js
 [Netlify]: https://www.netlify.com/
diff --git a/content/en/host-and-deploy/_index.md b/content/en/host-and-deploy/_index.md
new file mode 100644 (file)
index 0000000..627f12c
--- /dev/null
@@ -0,0 +1,8 @@
+---
+title: Host and deploy
+description: Services and tools to host and deploy your site.
+categories: []
+keywords: []
+weight: 10
+aliases: [/hosting-and-deployment/]
+---
diff --git a/content/en/host-and-deploy/deploy-with-hugo-deploy.md b/content/en/host-and-deploy/deploy-with-hugo-deploy.md
new file mode 100644 (file)
index 0000000..8feeccb
--- /dev/null
@@ -0,0 +1,97 @@
+---
+title: Deploy with hugo
+description: Deploy your site with the hugo CLI.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hugo-deploy/]
+---
+
+Use the `hugo deploy` command to deploy your site Amazon S3, Azure Blob Storage, or Google Cloud Storage.
+
+> [!note]
+> This feature requires the Hugo extended/deploy edition. See the [installation] section for details.
+
+## Assumptions
+
+1. You have completed the [Quick Start] or have a Hugo website you are ready to deploy and share with the world.
+1. You have an account with the service provider ([AWS], [Azure], or [Google Cloud]) that you want to deploy to.
+1. You have authenticated.
+    - AWS: [Install the CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) and run [`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+    - Azure: [Install the CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) and run [`az login`](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli).
+    - Google Cloud: [Install the CLI](https://cloud.google.com/sdk) and run [`gcloud auth login`](https://cloud.google.com/sdk/gcloud/reference/auth/login).
+
+    Each service supports various authentication methods, including environment variables. See&nbsp;[details](https://gocloud.dev/howto/blob/#services).
+
+1. You have created a bucket to deploy to. If you want your site to be
+  public, be sure to configure the bucket to be publicly readable as a static website.
+    - AWS: [create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) and [host a static website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)
+    - Azure: [create a storage container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) and [host a static website](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website)
+
+    - Google Cloud: [create a bucket](https://cloud.google.com/storage/docs/creating-buckets) and [host a static website](https://cloud.google.com/storage/docs/hosting-static-website)
+
+## Configuration
+
+Create a deployment target in your [site configuration]. The only required parameters are [`name`] and [`url`]:
+
+{{< code-toggle file=hugo >}}
+[deployment]
+  [[deployment.targets]]
+    name = 'production'
+    url = 's3://my_bucket?region=us-west-1'
+{{< /code-toggle >}}
+
+## Deploy
+
+To deploy to a target:
+
+```bash
+hugo deploy [--target=<target name>]
+```
+
+This command syncs the contents of your local `public` directory (the default publish directory) with the destination bucket. If no target is specified, Hugo deploys to the first configured target.
+
+For more command-line options, see `hugo help deploy` or the [CLI documentation].
+
+### File list creation
+
+`hugo deploy` creates local and remote file lists by traversing the local publish directory and the remote bucket. Inclusion and exclusion are determined by the deployment target's [configuration]:
+
+- `include`: All files are skipped by default except those that match the pattern.
+- `exclude`: Files matching the pattern are skipped.
+
+> [!note]
+> During local file list creation, Hugo skips `.DS_Store` files and hidden directories (those starting with a period, like `.git`), except for the [`.well-known`] directory, which is traversed if present.
+
+### File list comparison
+
+Hugo compares the local and remote file lists to identify necessary changes. It first compares file names. If both exist, it compares sizes and MD5 checksums. Any difference triggers a re-upload, and remote files not present locally are deleted.
+
+> [!note]
+> Excluded remote files (due to `include`/`exclude` configuration) won't be deleted.
+
+The `--force` flag forces all files to be re-uploaded, even if Hugo detects no local/remote differences.
+
+The `--confirm` or `--dryRun` flags cause Hugo to display the detected differences and then pause or stop.
+
+### Synchronization
+
+Hugo applies the changes to the remote bucket: uploading missing or changed files and deleting remote files not present locally. Uploaded file headers are configured remotely based on the matchers configuration.
+
+> [!note]
+> To prevent accidental data loss, Hugo will not delete more than 256 remote files by default. Use the `--maxDeletes` flag to override this limit.
+
+## Advanced configuration
+
+See [configure deployment](/configuration/deployment/).
+
+[`.well-known`]: https://en.wikipedia.org/wiki/Well-known_URI
+[`name`]: /configuration/deployment/#name
+[`url`]: /configuration/deployment/#url
+[AWS]: https://aws.amazon.com
+[Azure]: https://azure.microsoft.com
+[CLI documentation]: /commands/hugo_deploy/
+[configuration]: /configuration/deployment/#targets-1
+[Google Cloud]: https://cloud.google.com/
+[installation]: /installation/
+[Quick Start]: /getting-started/quick-start/
+[site configuration]: /configuration/deployment/
diff --git a/content/en/host-and-deploy/deploy-with-rclone.md b/content/en/host-and-deploy/deploy-with-rclone.md
new file mode 100644 (file)
index 0000000..8f641bc
--- /dev/null
@@ -0,0 +1,43 @@
+---
+title: Deploy with rclone
+description: Deploy your site with the rclone CLI.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/deployment-with-rclone/]
+---
+
+## Assumptions
+
+- A web host running a web server. This could be a shared hosting environment or a VPS.
+- Access to your web host with any of the [protocols supported by rclone](https://rclone.org/#providers), such as SFTP.
+- A functional static website built with Hugo
+- Deploying from an [Rclone](https://rclone.org) compatible operating system
+- You have [installed Rclone](https://rclone.org/install/).
+
+**NB**: You can remove ``--interactive`` in the commands below once you are comfortable with rclone, if you wish. Also, ``--gc`` and ``--minify`` are optional in the ``hugo`` commands below.
+
+## Getting started
+
+The spoiler is that you can even deploy your entire website from any compatible OS with no configuration. Using SFTP for example:
+
+```txt
+hugo --gc --minify
+rclone sync --interactive --sftp-host sftp.example.com --sftp-user www-data --sftp-ask-password public/ :sftp:www/
+```
+
+## Configure Rclone for even easier usage
+
+The easiest way is simply to run `rclone config`.
+
+The [Rclone docs](https://rclone.org/docs/) provide [an example of configuring Rclone to use SFTP](https://rclone.org/sftp/).
+
+For the next commands, we will assume you configured a remote you named ``hugo-www``
+
+The above 'spoiler' commands could become:
+
+```txt
+hugo --gc --minify
+rclone sync --interactive public/ hugo-www:www/
+```
+
+After you issue the above commands (and respond to any prompts), check your website and you will see that it is deployed.
diff --git a/content/en/host-and-deploy/deploy-with-rsync.md b/content/en/host-and-deploy/deploy-with-rsync.md
new file mode 100644 (file)
index 0000000..d073107
--- /dev/null
@@ -0,0 +1,135 @@
+---
+title: Deploy with rsync
+description: Deploy your site with the rsync CLI.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/deployment-with-rsync/]
+---
+
+## Assumptions
+
+- A web host running a web server. This could be a shared hosting environment or a VPS.
+- Access to your web host with SSH
+- A functional static website built with Hugo
+
+The spoiler is that you can deploy your entire website with a command that looks like the following:
+
+```txt
+hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
+```
+
+As you will see, we'll put this command in a shell script file, which makes building and deployment as easy as executing `./deploy`.
+
+## Copy Your SSH Key to your host
+
+To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section.
+
+First, install the ssh client. On Debian distributions, use the following command:
+
+```sh {file="install-openssh.sh"}
+sudo apt-get install openssh-client
+```
+
+Then generate your ssh key. First, create the `.ssh` directory in your home directory if it doesn't exist:
+
+```txt
+~$ cd && mkdir .ssh & cd .ssh
+```
+
+Next, execute this command to generate a new keypair called `rsa_id`:
+
+```txt
+~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id
+```
+
+You'll be prompted for a passphrase, which is an extra layer of protection. Enter the passphrase you'd like to use, and then enter it again when prompted, or leave it blank if you don't want to have a passphrase. Not using a passphrase will let you transfer files non-interactively, as you won't be prompted for a password when you log in, but it is slightly less secure.
+
+To make logging in easier, add a definition for your web host to the file  `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transferring files:
+
+```txt
+~/.ssh/$ cat >> config <<EOF
+Host HOST
+     Hostname HOST
+     Port 22
+     User USER
+     IdentityFile ~/.ssh/rsa_id
+EOF
+```
+
+Then copy your ssh public key to the remote server with the `ssh-copy-id` command:
+
+```txt
+~/.ssh/$ ssh-copy-id -i rsa_id.pub USER@HOST.com
+```
+
+Now you can easily connect to the remote server:
+
+```txt
+~$ ssh user@host
+Enter passphrase for key '/home/mylogin/.ssh/rsa_id':
+```
+
+Now that you can log in with your SSH key, let's create a script to automate deployment of your Hugo site.
+
+## Shell script
+
+Create a new script called `deploy` the root of your Hugo tree:
+
+```txt
+~/websites/topologix.fr$ editor deploy
+```
+
+Add the following content. Replace the `USER`, `HOST`, and `DIR` values with your own values:
+
+```sh
+#!/bin/sh
+USER=my-user
+HOST=my-server.com
+DIR=my/directory/to/topologix.fr/   # the directory where your website files should go
+
+hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR} # this will delete everything on the server that's not in the local public directory 
+
+exit 0
+```
+
+Note that `DIR` is the relative path from the remote user's home. If you have to specify a full path (for instance `/var/www/mysite/`) you must change `~/${DIR}` to `${DIR}` inside the command-line. For most cases you should not have to.
+
+Save and close, and make the `deploy` file executable:
+
+```txt
+~/websites/topologix.fr$ chmod +x deploy
+```
+
+Now you only have to enter the following command to deploy and update your website:
+
+```txt
+~/websites/topologix.fr$ ./deploy
+```
+
+Your site builds and deploys:
+
+```txt
+Started building sites ...
+Built site for language en:
+0 draft content
+0 future content
+0 expired content
+5 pages created
+0 non-page files copied
+0 paginator pages created
+0 tags created
+0 categories created
+total in 56 ms
+sending incremental file list
+404.html
+index.html
+index.xml
+sitemap.xml
+posts/
+posts/index.html
+
+sent 9,550 bytes  received 1,708 bytes  7,505.33 bytes/sec
+total size is 966,557  speedup is 85.86
+```
+
+You can incorporate other processing tasks into this deployment script as well.
diff --git a/content/en/host-and-deploy/host-on-21yunbox.md b/content/en/host-and-deploy/host-on-21yunbox.md
new file mode 100644 (file)
index 0000000..9ef684f
--- /dev/null
@@ -0,0 +1,52 @@
+---
+title: Host on 21YunBox
+description: Host your site on 21YunBox.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-21yunbox/]
+---
+
+[21YunBox](https://www.21cloudbox.com/) is a fully-managed cloud platform dedicated to make web deployment easy within the Chinese Great Firewall where you can host static sites, backend APIs, databases, cron jobs, and all your other apps in one place. It provides blazing fast Chinese CDN, continuous deployment, one-click HTTPS and [other services like managed databases and backend web services](https://www.21cloudbox.com/docs/), providing an avenue to launch web projects in China.
+
+21YunBox includes the following features:
+
+- Continuous, automatic builds & deploys from GitHub and Gitee
+- Automatic SSL certificates through [Let's Encrypt](https://letsencrypt.org)
+- Instant cache invalidation with a blazing fast, Chinese CDN
+- Unlimited [custom domains](https://www.21cloudbox.com/dns-configuration.html)
+- Automatic [Brotli compression](https://en.wikipedia.org/wiki/Brotli) for faster sites
+- Native HTTP/2 support
+- Automatic HTTP → HTTPS redirects
+- Custom URL redirects and rewrites
+
+## Prerequisites
+
+This guide assumes you already have a Hugo project to deploy. If you need a project, use the [Quick Start](/getting-started/quick-start/) to get started or fork 21YunBox's [Hugo Example](https://gitee.com/eryiyunbox-examples/hello-hugo) before continuing.
+
+## Setup
+
+You can set up a Hugo site on 21YunBox in two quick steps:
+
+1. Create a new web service on 21YunBox, and give 21YunBox permission to access your GitHub or Gitee repo.
+1. Use the following values during creation:<!-- do not insert blank line -->
+  |    Field          | Value                                            |
+  | ----------------- | ------------------------------------------------ |
+  | Environment       | `Static Site`                                    |
+  | Build Command     | `hugo --gc --minify` (or your own build command) |
+  | Publish Directory | `./public` (or your own output directory)        |
+
+That's it! Your site will be live on your 21YunBox URL (which looks like `yoursite.21yunbox.com`) as soon as the build is done.
+
+## Continuous deploys
+
+Now that 21YunBox is connected to your repo, it will automatically build and publish your site any time you push to GitHub.
+
+Every deploy automatically and instantly invalidates the CDN cache, so your users can always access the latest content on your site.
+
+## Custom domains
+
+Add your own domains to your site easily using 21YunBox's [custom domains](https://www.21cloudbox.com/dns-configuration.html) guide.
+
+## Support
+
+Click [here](https://www.21cloudbox.com/contact.html) to contact with 21YunBox' experts if you need help.
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-05.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-05.png
new file mode 100644 (file)
index 0000000..bb98d97
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-05.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-06.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-06.png
new file mode 100644 (file)
index 0000000..2e9b96e
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-06.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-07.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-07.png
new file mode 100644 (file)
index 0000000..b326015
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-07.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-08.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-08.png
new file mode 100644 (file)
index 0000000..55e80e7
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-08.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-09.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-09.png
new file mode 100644 (file)
index 0000000..b422e3a
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-09.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-11.png b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-11.png
new file mode 100644 (file)
index 0000000..e147edf
Binary files /dev/null and b/content/en/host-and-deploy/host-on-aws-amplify/amplify-step-11.png differ
diff --git a/content/en/host-and-deploy/host-on-aws-amplify/index.md b/content/en/host-and-deploy/host-on-aws-amplify/index.md
new file mode 100644 (file)
index 0000000..aadb891
--- /dev/null
@@ -0,0 +1,160 @@
+---
+title: Host on AWS Amplify
+description: Host your site on AWS Amplify.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-aws-amplify/]
+---
+
+## Prerequisites
+
+Please complete the following tasks before continuing:
+
+1. [Create an AWS account]
+1. [Install Git]
+1. [Create a Hugo site] and test it locally with `hugo server`
+1. Commit the changes to your local repository
+1. Push the local repository to your [GitHub], [GitLab], or [Bitbucket] account
+
+[Bitbucket]: https://bitbucket.org/product
+[Create a Hugo site]: /getting-started/quick-start/
+[Create an AWS account]: https://aws.amazon.com/resources/create-account/
+[GitHub]: https://github.com
+[GitLab]: https://about.gitlab.com/
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+
+## Procedure
+
+This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket.
+
+### Step 1
+
+Create a file named `amplify.yml` in the root of your project.
+
+```sh
+touch amplify.yml
+```
+
+### Step 2
+
+Copy and paste the YAML below into the file you created. Change the application versions and time zone as needed.
+
+```yaml {file="amplify.yml" copy=true}
+version: 1
+env:
+  variables:
+    # Application versions
+    DART_SASS_VERSION: 1.85.0
+    GO_VERSION: 1.23.3
+    HUGO_VERSION: 0.144.2
+    # Time zone
+    TZ: America/Los_Angeles
+    # Cache
+    HUGO_CACHEDIR: ${PWD}/.hugo
+    NPM_CONFIG_CACHE: ${PWD}/.npm
+frontend:
+  phases:
+    preBuild:
+      commands:
+        # Install Dart Sass
+        - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+        - sudo tar -C /usr/local/bin -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+        - rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+        - export PATH=/usr/local/bin/dart-sass:$PATH
+
+        # Install Go
+        - curl -LJO https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
+        - sudo tar -C /usr/local -xf go${GO_VERSION}.linux-amd64.tar.gz
+        - rm go${GO_VERSION}.linux-amd64.tar.gz
+        - export PATH=/usr/local/go/bin:$PATH
+
+        # Install Hugo
+        - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
+        - sudo tar -C /usr/local/bin -xf hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
+        - rm hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
+        - export PATH=/usr/local/bin:$PATH
+
+        # Check installed versions
+        - go version
+        - hugo version
+        - node -v
+        - npm -v
+        - sass --embedded --version
+
+        # Install Node.JS dependencies
+        - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci --prefer-offline || true"
+
+        # https://github.com/gohugoio/hugo/issues/9810
+        - git config --add core.quotepath false
+    build:
+      commands:
+        - hugo --gc --minify
+  artifacts:
+    baseDirectory: public
+    files:
+      - '**/*'
+  cache:
+    paths:
+      - ${HUGO_CACHEDIR}/**/*
+      - ${NPM_CONFIG_CACHE}/**/*
+```
+
+### Step 3
+
+Commit and push the change to your GitHub repository.
+
+```sh
+git add -A
+git commit -m "Create amplify.yml"
+git push
+```
+
+### Step 4
+
+Log in to your AWS account, navigate to the [Amplify Console], then press the  **Deploy an app** button.
+
+[Amplify Console]: https://console.aws.amazon.com/amplify/apps
+
+### Step 5
+
+Choose a source code provider, then press the **Next** button.
+
+  ![screen capture](amplify-step-05.png)
+
+### Step 6
+
+Authorize AWS Amplify to access your GitHub account.
+
+  ![screen capture](amplify-step-06.png)
+
+### Step 7
+
+Select your personal account or relevant organization.
+
+  ![screen capture](amplify-step-07.png)
+
+### Step 8
+
+Authorize access to one or more repositories.
+
+  ![screen capture](amplify-step-08.png)
+
+### Step 9
+
+Select a repository and branch, then press the **Next** button.
+
+  ![screen capture](amplify-step-09.png)
+
+### Step 10
+
+On the "App settings" page, scroll to the bottom then press the **Next** button. Amplify reads the `amplify.yml` file you created in Steps 1-3 instead of using the values on this page.
+
+### Step 11
+
+On the "Review" page, scroll to the bottom then press the **Save and deploy** button.
+
+### Step 12
+
+When your site has finished deploying, press the **Visit deployed URL** button to view your published site.
+
+  ![screen capture](amplify-step-11.png)
diff --git a/content/en/host-and-deploy/host-on-azure-static-web-apps.md b/content/en/host-and-deploy/host-on-azure-static-web-apps.md
new file mode 100644 (file)
index 0000000..68fe145
--- /dev/null
@@ -0,0 +1,11 @@
+---
+title: Host on Azure Static Web Apps
+description: Host your site on Azure Static Web Apps.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-azure-static-web-apps/]
+---
+
+You can create and deploy a Hugo web application to Azure Static Web Apps. The final result is a new Azure Static Web App with associated GitHub Actions that give you control over how the app is built and published. You'll learn how to create a Hugo app, set up an Azure Static Web App and deploy the Hugo app to Azure.
+
+Here's the tutorial on how to [Publish a Hugo site to Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/publish-hugo).
diff --git a/content/en/host-and-deploy/host-on-cloudflare-pages.md b/content/en/host-and-deploy/host-on-cloudflare-pages.md
new file mode 100644 (file)
index 0000000..1c36272
--- /dev/null
@@ -0,0 +1,11 @@
+---
+title: Host on Cloudflare Pages
+description: Host your site on Cloudflare Pages.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-cloudflare-pages/]
+---
+
+[Cloudflare Pages](https://developers.cloudflare.com/pages/) are super fast, always up-to-date, and deployed directly from your [Git provider](https://developers.cloudflare.com/pages/get-started/#connect-your-git-provider-to-pages).
+
+Cloudflare Pages docs have a detailed tutorial on [how to deploy a Hugo site](https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/).
diff --git a/content/en/host-and-deploy/host-on-codeberg-pages.md b/content/en/host-and-deploy/host-on-codeberg-pages.md
new file mode 100644 (file)
index 0000000..cd137c4
--- /dev/null
@@ -0,0 +1,82 @@
+---
+title: Host on Codeberg Pages
+description: Host your site on Codeberg Pages.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-codeberg/]
+---
+
+## Assumptions
+
+- Working familiarity with [Git] for version control
+- Completion of the Hugo [Quick Start]
+- A [Codeberg account]
+- A Hugo website on your local machine that you are ready to publish
+
+[Codeberg account]: https://codeberg.org/user/login/
+[Git]: https://git-scm.com/
+[Quick Start]: /getting-started/quick-start/
+
+Any and all mentions of `<YourUsername>` refer to your actual Codeberg username and must be substituted accordingly. Likewise, `<YourWebsite>` represents your actual website name.
+
+## BaseURL
+
+The [`baseURL`] in your site configuration must reflect the full URL provided by Codeberg Pages if using the default address (e.g. `https://<YourUsername>.codeberg.page/`). If you want to use another domain, follow the instructions in the [custom domain section] of the official documentation.
+
+[`baseURL`]: /configuration/all/#baseurl
+[custom domain section]: https://docs.codeberg.org/codeberg-pages/using-custom-domain/
+
+For more details regarding the URL of your deployed website, refer to Codeberg Pages' [quickstart instructions].
+
+[quickstart instructions]: https://codeberg.page/
+
+## Manual deployment
+
+Create a public repository on your Codeberg account titled `pages` or create a branch of the same name in an existing public repository. Finally, push the contents of Hugo's output directory (by default, `public`) to it. Here's an example:
+
+```sh
+# build the website
+hugo
+
+# access the output directory
+cd public
+
+# initialize new git repository
+git init
+
+# commit and push code to main branch
+git add .
+git commit -m "Initial commit"
+git remote add origin https://codeberg.org/<YourUsername>/pages.git
+git push -u origin main
+```
+
+## Automated deployment
+
+In order to automatically deploy your Hugo website, you need to have or [request] access to Codeberg's CI, as well as add a `.woodpecker.yaml` file in the root of your project. A template and additional instructions are available in the official [examples repository].
+
+[request]: https://codeberg.org/Codeberg-e.V./requests/issues/new?template=ISSUE_TEMPLATE%2fWoodpecker-CI.yaml
+[examples repository]: https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo/.woodpecker.yaml
+
+In this case, you must create a public repository on Codeberg (e.g. `<YourWebsite>`) and push your local project to it. Here's an example:
+
+```sh
+# initialize new git repository
+git init
+
+# add /public directory to our .gitignore file
+echo "/public" >> .gitignore
+
+# commit and push code to main branch
+git add .
+git commit -m "Initial commit"
+git remote add origin https://codeberg.org/<YourUsername>/<YourWebsite>.git
+git push -u origin main
+```
+
+Your project will then be built and deployed by Codeberg's CI.
+
+## Other resources
+
+- [Codeberg Pages](https://codeberg.page/)
+- [Codeberg Pages official documentation](https://docs.codeberg.org/codeberg-pages/)
diff --git a/content/en/host-and-deploy/host-on-firebase.md b/content/en/host-and-deploy/host-on-firebase.md
new file mode 100644 (file)
index 0000000..267c8d1
--- /dev/null
@@ -0,0 +1,106 @@
+---
+title: Host on Firebase
+description: Host your site on Firebase.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-firebase/]
+---
+
+## Assumptions
+
+1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.)
+1. You have completed the [Quick Start] or have a completed Hugo website ready for deployment.
+
+## Initial setup
+
+Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js):
+
+```sh
+npm install -g firebase-tools
+```
+
+Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account.
+
+```sh
+firebase login
+```
+
+In the root of your Hugo project, initialize the Firebase project with the `firebase init` command:
+
+```sh
+firebase init
+```
+
+From here:
+
+1. Choose Hosting in the feature question
+1. Choose the project you just set up
+1. Accept the default for your database rules file
+1. Accept the default for the publish directory, which is `public`
+1. Choose "No" in the question if you are deploying a single-page app
+
+## Using Firebase & GitHub CI/CD
+
+In new versions of Firebase, some other questions apply:
+
+6. Set up automatic builds and deploys with GitHub?
+
+Here you will be redirected to login in your GitHub account to get permissions. Confirm.
+
+7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
+
+Include the repository you will use in the format above (Account/Repo)
+Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings.
+
+8. Set up the workflow to run a build script before every deploy?
+
+Here is your opportunity to include some commands before you run the deploy.
+
+9. Set up automatic deployment to your site's live channel when a PR is merged?
+
+You can let in the default option (main)
+
+After that Firebase has been set in your project with [CI/CD](g). After that run:
+
+```sh
+hugo && firebase deploy
+```
+
+With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from: https://github.com/your-account/your-repo/actions
+
+Don't forget to update your static pages before push!
+
+## Manual deploy
+
+To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time:
+
+```sh
+hugo && firebase deploy
+```
+
+## CI setup (other tools)
+
+You can generate a deploy token using
+
+```sh
+firebase login:ci
+```
+
+You can also set up your CI and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`.
+
+> [!note]
+> This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others.
+
+You can then add a step in your build to do the deployment using the token:
+
+```sh
+firebase deploy --token $FIREBASE_DEPLOY_TOKEN
+```
+
+## Reference links
+
+- [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands)
+
+[console]: https://console.firebase.google.com/
+[Quick Start]: /getting-started/quick-start/
+[signup]: https://console.firebase.google.com/
diff --git a/content/en/host-and-deploy/host-on-github-pages/gh-pages-1.png b/content/en/host-and-deploy/host-on-github-pages/gh-pages-1.png
new file mode 100644 (file)
index 0000000..29912f2
Binary files /dev/null and b/content/en/host-and-deploy/host-on-github-pages/gh-pages-1.png differ
diff --git a/content/en/host-and-deploy/host-on-github-pages/gh-pages-2.png b/content/en/host-and-deploy/host-on-github-pages/gh-pages-2.png
new file mode 100644 (file)
index 0000000..0050d33
Binary files /dev/null and b/content/en/host-and-deploy/host-on-github-pages/gh-pages-2.png differ
diff --git a/content/en/host-and-deploy/host-on-github-pages/gh-pages-3.png b/content/en/host-and-deploy/host-on-github-pages/gh-pages-3.png
new file mode 100644 (file)
index 0000000..d2904ca
Binary files /dev/null and b/content/en/host-and-deploy/host-on-github-pages/gh-pages-3.png differ
diff --git a/content/en/host-and-deploy/host-on-github-pages/gh-pages-4.png b/content/en/host-and-deploy/host-on-github-pages/gh-pages-4.png
new file mode 100644 (file)
index 0000000..7577446
Binary files /dev/null and b/content/en/host-and-deploy/host-on-github-pages/gh-pages-4.png differ
diff --git a/content/en/host-and-deploy/host-on-github-pages/gh-pages-5.png b/content/en/host-and-deploy/host-on-github-pages/gh-pages-5.png
new file mode 100644 (file)
index 0000000..efe2612
Binary files /dev/null and b/content/en/host-and-deploy/host-on-github-pages/gh-pages-5.png differ
diff --git a/content/en/host-and-deploy/host-on-github-pages/index.md b/content/en/host-and-deploy/host-on-github-pages/index.md
new file mode 100644 (file)
index 0000000..4c00fbc
--- /dev/null
@@ -0,0 +1,230 @@
+---
+title: Host on GitHub Pages
+description: Host your site on GitHub Pages.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-github/]
+---
+
+## Prerequisites
+
+Please complete the following tasks before continuing:
+
+1. [Create a GitHub account]
+1. [Install Git]
+1. [Create a Hugo site] and test it locally with `hugo server`.
+
+## Types of sites
+
+There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com.
+
+> [!note]
+> See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming.
+
+## Procedure
+
+### Step 1
+
+Create a GitHub repository.
+
+### Step 2
+
+Push your local repository to GitHub.
+
+### Step 3
+
+Visit your GitHub repository. From the main menu choose **Settings**&nbsp;>&nbsp;**Pages**. In the center of your screen you will see this:
+
+![screen capture](gh-pages-1.png)
+{style="max-width: 280px"}
+
+### Step 4
+
+Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button.
+
+![screen capture](gh-pages-2.png)
+{style="max-width: 280px"}
+
+### Step 5
+
+In your site configuration, change the location of the image cache to the [`cacheDir`] as shown below:
+
+{{< code-toggle file=hugo >}}
+[caches.images]
+dir = ":cacheDir/images"
+{{< /code-toggle >}}
+
+See [configure file caches] for more information.
+
+### Step 6
+
+Create a file named `hugo.yaml` in a directory named `.github/workflows`.
+
+```text
+mkdir -p .github/workflows
+touch .github/workflows/hugo.yaml
+```
+
+### Step 7
+
+> [!note]
+> The workflow below ensures Hugo's `cacheDir` is persistent, preserving modules, processed images, and [`resources.GetRemote`] data between builds.
+
+Copy and paste the YAML below into the file you created. Change the branch name and Hugo version as needed.
+
+```yaml {file=".github/workflows/hugo.yaml" copy=true}
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+  # Runs on pushes targeting the default branch
+  push:
+    branches:
+      - main
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+  contents: read
+  pages: write
+  id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+  group: "pages"
+  cancel-in-progress: false
+
+# Default to bash
+defaults:
+  run:
+    shell: bash
+
+jobs:
+  # Build job
+  build:
+    runs-on: ubuntu-latest
+    env:
+      HUGO_VERSION: 0.145.0
+      HUGO_ENVIRONMENT: production
+      TZ: America/Los_Angeles
+    steps:
+      - name: Install Hugo CLI
+        run: |
+          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+      - name: Install Dart Sass
+        run: sudo snap install dart-sass
+      - name: Checkout
+        uses: actions/checkout@v4
+        with:
+          submodules: recursive
+          fetch-depth: 0
+      - name: Setup Pages
+        id: pages
+        uses: actions/configure-pages@v5
+      - name: Install Node.js dependencies
+        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+      - name: Cache Restore
+        id: cache-restore
+        uses: actions/cache/restore@v4
+        with:
+          path: |
+            ${{ runner.temp }}/hugo_cache
+          key: hugo-${{ github.run_id }}
+          restore-keys:
+            hugo-
+      - name: Build with Hugo
+        run: |
+          hugo \
+            --gc \
+            --minify \
+            --baseURL "${{ steps.pages.outputs.base_url }}/" \
+            --cacheDir "${{ runner.temp }}/hugo_cache"
+      - name: Cache Save
+        id: cache-save
+        uses: actions/cache/save@v4
+        with:
+          path: |
+            ${{ runner.temp }}/hugo_cache
+          key: ${{ steps.cache-restore.outputs.cache-primary-key }}
+      - name: Upload artifact
+        uses: actions/upload-pages-artifact@v3
+        with:
+          path: ./public
+
+  # Deployment job
+  deploy:
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+    runs-on: ubuntu-latest
+    needs: build
+    steps:
+      - name: Deploy to GitHub Pages
+        id: deployment
+        uses: actions/deploy-pages@v4
+```
+
+### Step 8
+
+Commit and push the change to your GitHub repository.
+
+```sh
+git add -A
+git commit -m "Create hugo.yaml"
+git push
+```
+
+### Step 9
+
+From GitHub's main menu, choose **Actions**. You will see something like this:
+
+![screen capture](gh-pages-3.png)
+{style="max-width: 350px"}
+
+### Step 10
+
+When GitHub has finished building and deploying your site, the color of the status indicator will change to green.
+
+![screen capture](gh-pages-4.png)
+{style="max-width: 350px"}
+
+### Step 11
+
+Click on the commit message as shown above. You will see this:
+
+![screen capture](gh-pages-5.png)
+{style="max-width: 611px"}
+
+Under the deploy step, you will see a link to your live site.
+
+In the future, whenever you push a change from your local repository, GitHub will rebuild your site and deploy the changes.
+
+## Customize the workflow
+
+The example workflow above includes this step, which typically takes 10&#8209;15 seconds:
+
+```yaml
+- name: Install Dart Sass
+  run: sudo snap install dart-sass
+```
+
+You may remove this step if your site, themes, and modules do not transpile Sass to CSS using the [Dart Sass] transpiler.
+
+## Other resources
+
+- [Learn more about GitHub Actions](https://docs.github.com/en/actions)
+- [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows)
+- [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
+
+[Create a GitHub account]: https://github.com/signup
+[Create a Hugo site]: /getting-started/quick-start/
+[Dart Sass]: /functions/css/sass/#dart-sass
+[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[`cacheDir`]: /configuration/all/#cachedir
+[`resources.GetRemote`]: /functions/resources/getremote/
+[configure file caches]: /configuration/caches/
diff --git a/content/en/host-and-deploy/host-on-gitlab-pages.md b/content/en/host-and-deploy/host-on-gitlab-pages.md
new file mode 100644 (file)
index 0000000..4b308cc
--- /dev/null
@@ -0,0 +1,96 @@
+---
+title: Host on GitLab Pages
+description: Host your site on GitLab Pages.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-gitlab/]
+---
+
+## Assumptions
+
+- Working familiarity with Git for version control
+- Completion of the Hugo [Quick Start]
+- A [GitLab account](https://gitlab.com/users/sign_in)
+- A Hugo website on your local machine that you are ready to publish
+
+## BaseURL
+
+The `baseURL` in your [site configuration](/configuration/) must reflect the full URL of your GitLab pages repository if you are using the default GitLab Pages URL (e.g., `https://<YourUsername>.gitlab.io/<your-hugo-site>/`) and not a custom domain.
+
+## Configure GitLab CI/CD
+
+Define your [CI/CD](g) jobs by creating a `.gitlab-ci.yml` file in the root of your project.
+
+```yaml {file=".gitlab-ci.yml" copy=true}
+variables:
+  DART_SASS_VERSION: 1.85.0
+  GIT_DEPTH: 0
+  GIT_STRATEGY: clone
+  GIT_SUBMODULE_STRATEGY: recursive
+  HUGO_VERSION: 0.144.2
+  NODE_VERSION: 23.x
+  TZ: America/Los_Angeles
+image:
+  name: golang:1.23.4-bookworm
+
+pages:
+  script:
+    # Install brotli
+    - apt-get update
+    - apt-get install -y brotli
+    # Install Dart Sass
+    - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+    - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+    - cp -r dart-sass/ /usr/local/bin
+    - rm -rf dart-sass*
+    - export PATH=/usr/local/bin/dart-sass:$PATH
+    # Install Hugo
+    - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+    - apt-get install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+    - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+    # Install Node.js
+    - curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash -
+    - apt-get install -y nodejs
+    # Install Node.js dependencies
+    - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+    # Build
+    - hugo --gc --minify --baseURL ${CI_PAGES_URL}
+    # Compress
+    - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec gzip -f -k {} \;
+    - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec brotli -f -k {} \;
+  artifacts:
+    paths:
+      - public
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+```
+
+## Push your Hugo website to GitLab
+
+Next, create a new repository on GitLab. It is *not* necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control.
+
+```sh
+# initialize new git repository
+git init
+
+# add /public directory to our .gitignore file
+echo "/public" >> .gitignore
+
+# commit and push code to master branch
+git add .
+git commit -m "Initial commit"
+git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git
+git push -u origin master
+```
+
+## Wait for your page to build
+
+That's it! You can now follow the CI agent building your page at `https://gitlab.com/<YourUsername>/<your-hugo-site>/pipelines`.
+
+After the build has passed, your new website is available at `https://<YourUsername>.gitlab.io/<your-hugo-site>/`.
+
+## Next steps
+
+GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
+
+[Quick Start]: /getting-started/quick-start/
diff --git a/content/en/host-and-deploy/host-on-keycdn/index.md b/content/en/host-and-deploy/host-on-keycdn/index.md
new file mode 100644 (file)
index 0000000..828e250
--- /dev/null
@@ -0,0 +1,86 @@
+---
+title: Host on KeyCDN
+description: Host your site on KeyCDN.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-keycdn/]
+---
+
+[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
+
+## Assumptions
+
+- You already have a Hugo page configured
+- You have a GitLab account
+- You have a KeyCDN account
+
+## Create a KeyCDN Pull Zone
+
+The first step will be to log in to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL.
+
+![Screenshot of KeyCDN's pull zone creation page](keycdn-pull-zone.png)
+
+While the origin location doesn't exist yet, you will need to use your new Zone URL address (or [Zone Alias](https://www.keycdn.com/support/create-a-zone-alias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project.
+
+Ensure that you use your Zone URL or Zone alias as the `BASEURL` variable in the example below. This will be the user-visible website address.
+
+## Configure Your .gitlab-ci.yml File
+
+Your `.gitlab-ci.yml` file should look similar to the example below. Be sure to modify any variables that are specific to your setup.
+
+```yml
+image: alpine:latest
+
+variables:
+    BASEURL: "https://cipull-7bb7.kxcdn.com/"
+    HUGO_VERSION: "0.26"
+    HUGO_CHECKSUM: "67e4ba5ec2a02c8164b6846e30a17cc765b0165a5b183d5e480149baf54e1a50"
+    KEYCDN_ZONE_ID: "75544"
+
+before_script:
+    - apk update
+    - apk add curl
+
+pages:
+    stage: deploy
+    script:
+    - apk add git
+    - git submodule update --init
+    - curl -sSL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
+    - echo "${HUGO_CHECKSUM}  /tmp/hugo.tar.gz" | sha256sum -c
+    - tar xf /tmp/hugo.tar.gz hugo -C /tmp/ && cp /tmp/hugo /usr/bin
+    - hugo --baseURL ${BASEURL}
+    - curl "https://api.keycdn.com/zones/purge/${KEYCDN_ZONE_ID}.json" -u "${KEYCDN_API_KEY}:"
+    artifacts:
+    paths:
+    - public
+    only:
+    - master
+```
+
+Using this integration method, you will have to specify the Zone ID and your [KeyCDN API](https://www.keycdn.com/api) key as secret variables. To do this, navigate to the top-left menu bar in GitLab and select Projects. Then, select your project and click on the Settings page. Finally, select Pipelines from the sub-menu and scroll down to the Secret Variable section.
+
+The Secret Variable for your Zone ID should look similar to:
+
+![Screenshot of setting the Zone ID secret variable](secret-zone-id.png)
+
+While the Secret Variable for your API Key will look similar to:
+
+![Screenshot of setting the API Key secret variable](secret-api-key.png)
+
+While not strictly required, providing your Zone ID and API key is recommended for purging your zone. Without them, the CDN may continue serving outdated versions of your assets for an extended period.
+
+## Push your changes to GitLab
+
+Now it's time to push the newly created repository to GitLab:
+
+```sh
+git remote add origin git@gitlab.com:youruser/ci-example.git
+git push -u origin master
+```
+
+You can watch the progress and CI job output in your GitLab project under “Pipelines”.
+
+After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone---don't worry about that) and then by heading to whatever Zone alias / Zone URL you defined.
+
+To learn more about Hugo hosting options with KeyCDN, check out the complete [Hugo hosting with KeyCDN integration guide](https://www.keycdn.com/support/hugo-hosting/).
diff --git a/content/en/host-and-deploy/host-on-keycdn/keycdn-pull-zone.png b/content/en/host-and-deploy/host-on-keycdn/keycdn-pull-zone.png
new file mode 100644 (file)
index 0000000..7cde4a6
Binary files /dev/null and b/content/en/host-and-deploy/host-on-keycdn/keycdn-pull-zone.png differ
diff --git a/content/en/host-and-deploy/host-on-keycdn/secret-api-key.png b/content/en/host-and-deploy/host-on-keycdn/secret-api-key.png
new file mode 100644 (file)
index 0000000..ad99341
Binary files /dev/null and b/content/en/host-and-deploy/host-on-keycdn/secret-api-key.png differ
diff --git a/content/en/host-and-deploy/host-on-keycdn/secret-zone-id.png b/content/en/host-and-deploy/host-on-keycdn/secret-zone-id.png
new file mode 100644 (file)
index 0000000..2e5cf5f
Binary files /dev/null and b/content/en/host-and-deploy/host-on-keycdn/secret-zone-id.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/index.md b/content/en/host-and-deploy/host-on-netlify/index.md
new file mode 100644 (file)
index 0000000..f360133
--- /dev/null
@@ -0,0 +1,143 @@
+---
+title: Host on Netlify
+description: Host your site on Netlify.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-netlify/]
+---
+
+## Prerequisites
+
+Please complete the following tasks before continuing:
+
+1. [Create a Netlify account]
+1. [Install Git]
+1. [Create a Hugo site] and test it locally with `hugo server`
+1. Commit the changes to your local repository
+1. Push the local repository to your [GitHub], [GitLab], or [Bitbucket] account
+
+[Bitbucket]: https://bitbucket.org/product
+[Create a Hugo site]: /getting-started/quick-start/
+[Create a Netlify account]: https://app.netlify.com/signup
+[GitHub]: https://github.com
+[GitLab]: https://about.gitlab.com/
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+
+## Procedure
+
+This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket.
+
+### Step 1
+
+Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu.
+
+### Step 2
+
+Select your deployment method.
+
+  ![screen capture](netlify-step-02.png)
+
+### Step 3
+
+Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button.
+
+![screen capture](netlify-step-03.png)
+
+### Step 4
+
+Press the **Configure Netlify on GitHub** button.
+
+![screen capture](netlify-step-04.png)
+
+### Step 5
+
+Install the Netlify app by selecting your GitHub account.
+
+![screen capture](netlify-step-05.png)
+
+### Step 6
+
+Press the **Install** button.
+
+![screen capture](netlify-step-06.png)
+
+### Step 7
+
+Click on the site's repository from the list.
+
+![screen capture](netlify-step-07.png)
+
+### Step 8
+
+Set the site name and branch from which to deploy.
+
+![screen capture](netlify-step-08.png)
+
+### Step 9
+
+Define the build settings, press the **Add environment variables** button, then press the **New variable** button.
+
+![screen capture](netlify-step-09.png)
+
+### Step 10
+
+Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version].
+
+[latest version]: https://github.com/gohugoio/hugo/releases/latest
+
+![screen capture](netlify-step-10.png)
+
+### Step 11
+
+Press the "Deploy my new site" button at the bottom of the page.
+
+![screen capture](netlify-step-11.png)
+
+### Step 12
+
+At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry.
+
+![screen capture](netlify-step-12.png)
+
+### Step 13
+
+Press the **Open production deploy** button to view the live site.
+
+![screen capture](netlify-step-13.png)
+
+## Configuration file
+
+In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control.
+
+Create a new file named netlify.toml in the root of your project directory. In its simplest form, the configuration file might look like this:
+
+```toml {file="netlify.toml"}
+[build.environment]
+HUGO_VERSION = "0.144.2"
+NODE_VERSION = "22"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = "hugo --gc --minify"
+```
+
+If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this:
+
+```toml {file="netlify.toml"}
+[build.environment]
+HUGO_VERSION = "0.144.2"
+DART_SASS_VERSION = "1.85.0"
+NODE_VERSION = "22"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = """\
+  curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+  tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+  rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+  export PATH=/opt/build/repo/dart-sass:$PATH && \
+  hugo --gc --minify \
+  """
+```
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png
new file mode 100644 (file)
index 0000000..31fceff
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png
new file mode 100644 (file)
index 0000000..7b98e0b
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png
new file mode 100644 (file)
index 0000000..3130489
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png
new file mode 100644 (file)
index 0000000..6d6eef0
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png
new file mode 100644 (file)
index 0000000..1b766a7
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png
new file mode 100644 (file)
index 0000000..7bb3b6e
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png
new file mode 100644 (file)
index 0000000..df8e9e5
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png
new file mode 100644 (file)
index 0000000..3f925ac
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png
new file mode 100644 (file)
index 0000000..e9196d0
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png
new file mode 100644 (file)
index 0000000..2ac2b08
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png
new file mode 100644 (file)
index 0000000..e251305
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png
new file mode 100644 (file)
index 0000000..f955f63
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png differ
diff --git a/content/en/host-and-deploy/host-on-render.md b/content/en/host-and-deploy/host-on-render.md
new file mode 100644 (file)
index 0000000..ac486fc
--- /dev/null
@@ -0,0 +1,78 @@
+---
+title: Host on Render
+description: Host your on Render.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-render/]
+---
+
+## Introduction
+
+[Render](https://render.com) is a fully-managed cloud platform where you can host static sites, backend APIs, databases, cron jobs, and all your other apps in one place.
+
+Static sites are **completely free** on Render and include the following:
+
+- Continuous, automatic builds & deploys from [GitHub](https://render.com/docs/github) and [GitLab](https://render.com/docs/gitlab).
+- Automatic SSL certificates through [Let's Encrypt](https://letsencrypt.org).
+- Instant cache invalidation with a lightning fast, global CDN.
+- Unlimited collaborators.
+- Unlimited [custom domains](https://render.com/docs/custom-domains).
+- Automatic [Brotli compression](https://en.wikipedia.org/wiki/Brotli) for faster sites.
+- Native HTTP/2 support.
+- [Pull Request Previews](https://render.com/docs/pull-request-previews).
+- Automatic HTTP → HTTPS redirects.
+- Custom URL redirects and rewrites.
+
+## Assumptions
+
+- You have an account with GitHub or GitLab.
+- You have completed the [Quick Start] or have a Hugo website you are ready to deploy and share with the world.
+- You have a Render account. You can sign up at https://render.com/register.
+
+## Deployment
+
+You can set up a Hugo site on Render in two quick steps:
+
+1. Create a new **Static Site** on Render, and give Render permission to access your GitHub/GitLab repo.
+1. Use the following values during creation:
+
+Field                | Value
+-------------------  |  -------------------
+**Build Command**     | `hugo --gc --minify` (or your own build command)
+**Publish Directory** | `public` (or your own output directory)
+
+That's it! Your site will be live on your Render URL (which looks like `yoursite.onrender.com`) as soon as the build is done.
+
+## Continuous deploys
+
+Now that Render is connected to your repo, it will **automatically build and publish your site** any time you push to your GitHub/GitLab.
+
+You can choose to disable auto deploys under the **Settings** section for your site and deploy it manually from the Render dashboard.
+
+## CDN and cache invalidation
+
+Render hosts your site on a global, lightning fast CDN which ensures the fastest possible download times for all your users across the globe.
+
+Every deploy automatically and instantly invalidates the CDN cache, so your users can always access the latest content on your site.
+
+## Custom domains
+
+Add your own domains to your site easily using Render's [custom domains](https://render.com/docs/custom-domains) guide.
+
+## Pull Request previews
+
+With Pull Request (PR) previews, you can visualize changes introduced in a pull request instead of simply relying on code reviews.
+
+Once enabled, every PR for your site will automatically generate a new static site based on the code in the PR. It will have its own URL, and it will be deleted automatically when the PR is closed.
+
+Read more about [Pull Request Previews](https://render.com/docs/pull-request-previews) on Render.
+
+## Hugo themes
+
+Render automatically downloads all Git submodules defined in your Git repo on every build. This way Hugo themes added as submodules work as expected.
+
+## Support
+
+Chat with Render developers at https://render.com/chat or email `support@render.com` if you need help.
+
+[Quick Start]: /getting-started/quick-start/
diff --git a/content/en/host-and-deploy/host-on-sourcehut-pages.md b/content/en/host-and-deploy/host-on-sourcehut-pages.md
new file mode 100644 (file)
index 0000000..6b092fb
--- /dev/null
@@ -0,0 +1,94 @@
+---
+title: Host on SourceHut Pages
+description: Host your site on SourceHut Pages.
+categories: []
+keywords: []
+aliases: [/hosting-and-deployment/hosting-on-sourcehut/]
+---
+
+## Assumptions
+
+- Working familiarity with [Git] or [Mercurial] for version control
+- Completion of the Hugo [Quick Start]
+- A [SourceHut account]
+- A Hugo website on your local machine that you are ready to publish
+
+[Git]: https://git-scm.com/
+[Mercurial]: https://www.mercurial-scm.org/
+[SourceHut account]: https://meta.sr.ht/login
+[Quick Start]: /getting-started/quick-start/
+
+Any and all mentions of `<YourUsername>` refer to your actual SourceHut username and must be substituted accordingly.
+
+## BaseURL
+
+The [`baseURL`] in your site configuration must reflect the full URL provided by SourceHut Pages if you are using the default address (e.g. `https://<YourUsername>.srht.site/`). If you want to use another domain, check the [custom domain section] of the official documentation.
+
+[`baseURL`]: /configuration/all/#baseurl
+[custom domain section]: https://srht.site/custom-domains
+
+## Manual deployment
+
+This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut]CLI tool:
+
+[SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token/
+[hut]: https://sr.ht/~xenrox/hut/
+
+```sh
+hugo
+tar -C public -cvz . > site.tar.gz
+hut init
+hut pages publish -d <YourUsername>.srht.site site.tar.gz
+```
+
+A TLS certificate will be automatically obtained for you, and your new website will be available at `https://<YourUsername>.srht.site/` (or the provided custom domain).
+
+## Automated deployment
+
+This method requires a paid account and relies on the SourceHut build system.
+
+First, define your [build manifest] by creating a `.build.yml` file in the root of your project. The following is a bare-bones template:
+
+[build manifest]: https://man.sr.ht/builds.sr.ht/#build-manifests
+
+```yaml {file=".build.yml" copy=true}
+image: alpine/edge
+packages:
+  - hugo
+  - hut
+oauth: pages.sr.ht/PAGES:RW
+environment:
+  site: <YourUsername>.srht.site
+tasks:
+- package: |
+    cd $site
+    hugo
+    tar -C public -cvz . > ../site.tar.gz
+- upload: |
+    hut pages publish -d $site site.tar.gz
+```
+
+Now what's left is creating a repository titled `<YourUsername>.srht.site` (or your custom domain, if applicable) and pushing your local project. Here's an example using Git:
+
+```sh
+# initialize new git repository
+git init
+
+# add /public directory to our .gitignore file
+echo "/public" >> .gitignore
+
+# commit and push code to main branch
+git add .
+git commit -m "Initial commit"
+git remote add origin https://git.sr.ht/~<YourUsername>/<YourUsername>.srht.site
+git push -u origin main
+```
+
+You can now follow the build progress of your page at `https://builds.sr.ht/`.
+
+After the build has passed, a TLS certificate will be automatically obtained for you and your new website will be available at `https://<YourUsername>.srht.site/` (or the provided custom domain).
+
+## Other resources
+
+- [SourceHut Pages](https://srht.site/)
+- [SourceHut Builds user manual](https://man.sr.ht/builds.sr.ht/)
diff --git a/content/en/hosting-and-deployment/_index.md b/content/en/hosting-and-deployment/_index.md
deleted file mode 100644 (file)
index a99ffd6..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Hosting and deployment
-
-description: Services and tools to host and deploy your site.
-categories: []
-keywords: []
-menu:
-  docs:
-    identifier: hosting-and-deployment-in-this-section
-    parent: hosting-and-deployment
-    weight: 1
-weight: 10
----
-
-Because Hugo renders *static* websites, you can host your new Hugo website virtually anywhere. The following represent only a few of the more popular hosting and automated deployment solutions used by the Hugo community.
diff --git a/content/en/hosting-and-deployment/deployment-with-rclone.md b/content/en/hosting-and-deployment/deployment-with-rclone.md
deleted file mode 100644 (file)
index 4108515..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Deploy with Rclone
-description: If you have access to your web host with SFTP/FTP/SSH/HTTP(DAV), you can use rclone to incrementally deploy your entire Hugo website.
-categories: [hosting and deployment]
-keywords: [deployment,rclone,sftp]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
-aliases: [/tutorials/deployment-with-rclone/]
----
-
-## Assumptions
-
-* A web host running a web server. This could be a shared hosting environment or a VPS.
-* Access to your web host with any of the [protocols supported by rclone](https://rclone.org/#providers), such as SFTP.
-* A functional static website built with Hugo
-* Deploying from an [Rclone](https://rclone.org) compatible operating system
-* You have [installed Rclone](https://rclone.org/install/).
-
-**NB**: You can remove ``--interactive`` in the commands below once you are comfortable with rclone, if you wish. Also, ``--gc`` and ``--minify`` are optional in the ``hugo`` commands below.
-
-## Getting started
-
-The spoiler is that you can even deploy your entire website from any compatible OS with no configuration. Using SFTP for example:
-
-```txt
-hugo --gc --minify
-rclone sync --interactive --sftp-host sftp.example.com --sftp-user www-data --sftp-ask-password public/ :sftp:www/
-```
-
-## Configure Rclone for even easier usage
-
-The easiest way is simply to run `rclone config`.
-
-The [Rclone docs](https://rclone.org/docs/) provide [an example of configuring Rclone to use SFTP](https://rclone.org/sftp/).
-
-For the next commands, we will assume you configured a remote you named ``hugo-www``
-
-The above 'spoiler' commands could become:
-
-```txt
-hugo --gc --minify
-rclone sync --interactive public/ hugo-www:www/
-```
-
-After you issue the above commands (and respond to any prompts), check your website and you will see that it is deployed.
diff --git a/content/en/hosting-and-deployment/deployment-with-rsync.md b/content/en/hosting-and-deployment/deployment-with-rsync.md
deleted file mode 100644 (file)
index 8fb4286..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
----
-title: Deploy with Rsync
-description: If you have access to your web host with SSH, you can use a simple rsync one-liner to incrementally deploy your entire Hugo website.
-categories: [hosting and deployment]
-keywords: [deployment,rsync]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
-aliases: [/tutorials/deployment-with-rsync/]
----
-
-## Assumptions
-
-* A web host running a web server. This could be a shared hosting environment or a VPS.
-* Access to your web host with SSH
-* A functional static website built with Hugo
-
-The spoiler is that you can deploy your entire website with a command that looks like the following:
-
-```txt
-hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
-```
-
-As you will see, we'll put this command in a shell script file, which makes building and deployment as easy as executing `./deploy`.
-
-## Copy Your SSH Key to your host
-
-To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section.
-
-First, install the ssh client. On Debian distributions, use the following command:
-
-{{< code file=install-openssh.sh >}}
-sudo apt-get install openssh-client
-{{< /code >}}
-
-Then generate your ssh key. First, create the `.ssh` directory in your home directory if it doesn't exist:
-
-```txt
-~$ cd && mkdir .ssh & cd .ssh
-```
-
-Next, execute this command to generate a new keypair called `rsa_id`:
-
-```txt
-~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id
-```
-
-You'll be prompted for a passphrase, which is an extra layer of protection. Enter the passphrase you'd like to use, and then enter it again when prompted, or leave it blank if you don't want to have a passphrase. Not using a passphrase will let you transfer files non-interactively, as you won't be prompted for a password when you log in, but it is slightly less secure.
-
-To make logging in easier, add a definition for your web host to the file  `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transferring files:
-
-```txt
-~/.ssh/$ cat >> config <<EOF
-Host HOST
-     Hostname HOST
-     Port 22
-     User USER
-     IdentityFile ~/.ssh/rsa_id
-EOF
-```
-
-Then copy your ssh public key to the remote server with the `ssh-copy-id` command:
-
-```txt
-~/.ssh/$ ssh-copy-id -i rsa_id.pub USER@HOST.com
-```
-
-Now you can easily connect to the remote server:
-
-```txt
-~$ ssh user@host
-Enter passphrase for key '/home/mylogin/.ssh/rsa_id':
-```
-
-Now that you can log in with your SSH key, let's create a script to automate deployment of your Hugo site.
-
-## Shell script
-
-Create a new script called `deploy` the root of your Hugo tree:
-
-```txt
-~/websites/topologix.fr$ editor deploy
-```
-
-Add the following content. Replace the `USER`, `HOST`, and `DIR` values with your own values:
-
-```sh
-#!/bin/sh
-USER=my-user
-HOST=my-server.com
-DIR=my/directory/to/topologix.fr/   # the directory where your website files should go
-
-hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR} # this will delete everything on the server that's not in the local public directory 
-
-exit 0
-```
-
-Note that `DIR` is the relative path from the remote user's home. If you have to specify a full path (for instance `/var/www/mysite/`) you must change `~/${DIR}` to `${DIR}` inside the command-line. For most cases you should not have to.
-
-Save and close, and make the `deploy` file executable:
-
-```txt
-~/websites/topologix.fr$ chmod +x deploy
-```
-
-Now you only have to enter the following command to deploy and update your website:
-
-```txt
-~/websites/topologix.fr$ ./deploy
-```
-
-Your site builds and deploys:
-
-```txt
-Started building sites ...
-Built site for language en:
-0 draft content
-0 future content
-0 expired content
-5 pages created
-0 non-page files copied
-0 paginator pages created
-0 tags created
-0 categories created
-total in 56 ms
-sending incremental file list
-404.html
-index.html
-index.xml
-sitemap.xml
-posts/
-posts/index.html
-
-sent 9,550 bytes  received 1,708 bytes  7,505.33 bytes/sec
-total size is 966,557  speedup is 85.86
-```
-
-You can incorporate other processing tasks into this deployment script as well.
diff --git a/content/en/hosting-and-deployment/hosting-on-21yunbox.md b/content/en/hosting-and-deployment/hosting-on-21yunbox.md
deleted file mode 100644 (file)
index 4b02995..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Host on 21YunBox
-description: Host your Hugo site with 21YunBox's blazing fast Chinese CDN, fully-managed SSL and auto deploys from Gitee.
-categories: [hosting and deployment]
-keywords: [hosting,21yunbox]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-[21YunBox](https://www.21yunbox.com) is a fully-managed cloud platform dedicated to make web deployment easy within the Chinese Great Firewall where you can host static sites, backend APIs, databases, cron jobs, and all your other apps in one place. It provides blazing fast Chinese CDN, continuous deployment, one-click HTTPS and [other services like managed databases and backend web services](https://www.21yunbox.com/docs/), providing an avenue to launch web projects in China.
-
-21YunBox includes the following features:
-
-- Continuous, automatic builds & deploys from GitHub and Gitee
-- Automatic SSL certificates through [Let's Encrypt](https://letsencrypt.org)
-- Instant cache invalidation with a blazing fast, Chinese CDN
-- Unlimited [custom domains](https://www.21yunbox.com/docs/#/custom-domains)
-- Automatic [Brotli compression](https://en.wikipedia.org/wiki/Brotli) for faster sites
-- Native HTTP/2 support
-- Automatic HTTP → HTTPS redirects
-- Custom URL redirects and rewrites
-
-## Prerequisites
-
-This guide assumes you already have a Hugo project to deploy. If you need a project, use the [Quick Start](/getting-started/quick-start/) to get started or fork 21YunBox's [Hugo Example](https://gitee.com/eryiyunbox-examples/hello-hugo) before continuing.
-
-## Setup
-
-You can set up a Hugo site on 21YunBox in two quick steps:
-
-1. Create a new web service on 21YunBox, and give 21YunBox permission to access your GitHub or Gitee repo.
-1. Use the following values during creation:
-
-   |    Field              | Value                                            |
-   | --------------------- | ------------------------------------------------ |
-   | **Environment**       | `Static Site`                                    |
-   | **Build Command**     | `hugo --gc --minify` (or your own build command) |
-   | **Publish Directory** | `./public` (or your own output directory)        |
-
-That's it! Your site will be live on your 21YunBox URL (which looks like `yoursite.21yunbox.com`) as soon as the build is done.
-
-## Continuous deploys
-
-Now that 21YunBox is connected to your repo, it will automatically build and publish your site any time you push to GitHub.
-
-Every deploy automatically and instantly invalidates the CDN cache, so your users can always access the latest content on your site.
-
-## Custom domains
-
-Add your own domains to your site easily using 21YunBox's [custom domains](https://www.21yunbox.com/docs/#/custom-domains) guide.
-
-## Support
-
-Click [here](https://www.21yunbox.com/docs/#/contact) to contact with 21YunBox' experts if you need help.
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-05.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-05.png
deleted file mode 100644 (file)
index bb98d97..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-05.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-06.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-06.png
deleted file mode 100644 (file)
index 2e9b96e..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-06.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-07.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-07.png
deleted file mode 100644 (file)
index b326015..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-07.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-08.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-08.png
deleted file mode 100644 (file)
index 55e80e7..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-08.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-09.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-09.png
deleted file mode 100644 (file)
index b422e3a..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-09.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-11.png b/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-11.png
deleted file mode 100644 (file)
index e147edf..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-aws-amplify/amplify-step-11.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-aws-amplify/index.md b/content/en/hosting-and-deployment/hosting-on-aws-amplify/index.md
deleted file mode 100644 (file)
index 3172ecb..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Host on AWS Amplify
-description: Host your site on AWS Amplify with continuous deployment.
-categories: [hosting and deployment]
-keywords: [hosting]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-## Prerequisites
-
-Please complete the following tasks before continuing:
-
-1. [Create an AWS account]
-1. [Install Git]
-1. [Create a Hugo site] and test it locally with `hugo server`
-1. Commit the changes to your local repository
-1. Push the local repository to your [GitHub], [GitLab], or [Bitbucket] account
-
-[Bitbucket]: https://bitbucket.org/product
-[Create a Hugo site]: /getting-started/quick-start/
-[Create an AWS account]: https://aws.amazon.com/resources/create-account/
-[GitHub]: https://github.com
-[GitLab]: https://about.gitlab.com/
-[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-
-## Procedure
-
-This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket.
-
-Step 1
-: Create a file named `amplify.yml` in the root of your project.
-
-```sh
-touch amplify.yml
-```
-
-Step 2
-: Copy and paste the YAML below into the file you created. Change the application versions and time zone as needed.
-
-{{< code file=amplify.yml copy=true >}}
-version: 1
-env:
-  variables:
-    # Application versions
-    DART_SASS_VERSION: 1.81.0
-    GO_VERSION: 1.23.3
-    HUGO_VERSION: 0.139.3
-    # Time zone
-    TZ: America/Los_Angeles
-    # Cache
-    HUGO_CACHEDIR: ${PWD}/.hugo
-    NPM_CONFIG_CACHE: ${PWD}/.npm
-frontend:
-  phases:
-    preBuild:
-      commands:
-        # Install Dart Sass
-        - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
-        - sudo tar -C /usr/local/bin -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
-        - rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
-        - export PATH=/usr/local/bin/dart-sass:$PATH
-
-        # Install Go
-        - curl -LJO https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
-        - sudo tar -C /usr/local -xf go${GO_VERSION}.linux-amd64.tar.gz
-        - rm go${GO_VERSION}.linux-amd64.tar.gz
-        - export PATH=/usr/local/go/bin:$PATH
-
-        # Install Hugo
-        - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
-        - sudo tar -C /usr/local/bin -xf hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
-        - rm hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz
-        - export PATH=/usr/local/bin:$PATH
-
-        # Check installed versions
-        - go version
-        - hugo version
-        - node -v
-        - npm -v
-        - sass --embedded --version
-
-        # Install Node.JS dependencies
-        - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci --prefer-offline || true"
-
-        # https://github.com/gohugoio/hugo/issues/9810
-        - git config --add core.quotepath false
-    build:
-      commands:
-        - hugo --gc --minify
-  artifacts:
-    baseDirectory: public
-    files:
-      - '**/*'
-  cache:
-    paths:
-      - ${HUGO_CACHEDIR}/**/*
-      - ${NPM_CONFIG_CACHE}/**/*
-{{< /code >}}
-
-Step 3
-: Commit and push the change to your GitHub repository.
-
-```sh
-git add -A
-git commit -m "Create amplify.yml"
-git push
-```
-
-Step 4
-: Log in to your AWS account, navigate to the [Amplify Console], then press the  **Deploy an app** button.
-
-[Amplify Console]: https://console.aws.amazon.com/amplify/apps
-
-Step 5
-: Choose a source code provider, then press the **Next** button.
-
-  ![screen capture](amplify-step-05.png)
-
-Step 6
-: Authorize AWS Amplify to access your GitHub account.
-
-  ![screen capture](amplify-step-06.png)
-
-Step 7
-: Select your personal account or relevant organization.
-
-  ![screen capture](amplify-step-07.png)
-
-Step 8
-: Authorize access to one or more repositories.
-
-  ![screen capture](amplify-step-08.png)
-
-Step 9
-: Select a repository and branch, then press the **Next** button.
-
-  ![screen capture](amplify-step-09.png)
-
-Step 10
-: On the "App settings" page, scroll to the bottom then press the **Next** button. Amplify reads the `amplify.yml` file you created in Steps 1-3 instead of using the values on this page.
-
-Step 11
-: On the "Review" page, scroll to the bottom then press the **Save and deploy** button.
-
-Step 12
-: When your site has finished deploying, press the **Visit deployed URL** button to view your published site.
-
-  ![screen capture](amplify-step-11.png)
diff --git a/content/en/hosting-and-deployment/hosting-on-azure-static-web-apps.md b/content/en/hosting-and-deployment/hosting-on-azure-static-web-apps.md
deleted file mode 100644 (file)
index 922cbfe..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Host on Azure Static Web Apps
-description: Publish a Hugo site to Azure Static Web Apps.
-categories: [hosting and deployment]
-keywords: [hosting,azure]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-You can create and deploy a Hugo web application to Azure Static Web Apps. The final result is a new Azure Static Web App with associated GitHub Actions that give you control over how the app is built and published. You'll learn how to create a Hugo app, set up an Azure Static Web App and deploy the Hugo app to Azure.
-
-Here's the tutorial on how to [Publish a Hugo site to Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/publish-hugo).
diff --git a/content/en/hosting-and-deployment/hosting-on-cloudflare-pages.md b/content/en/hosting-and-deployment/hosting-on-cloudflare-pages.md
deleted file mode 100644 (file)
index e50143d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Host on Cloudflare Pages
-description: Cloudflare Pages can host your Hugo site with CDN, continuous deployment, 1-click HTTPS, an admin GUI, and its own environment variables.
-categories: [hosting and deployment]
-keywords: [hosting,cloudflare]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-[Cloudflare Pages](https://developers.cloudflare.com/pages/) are super fast, always up-to-date, and deployed directly from your [Git provider](https://developers.cloudflare.com/pages/get-started/#connect-your-git-provider-to-pages).
-
-Cloudflare Pages docs have a detailed tutorial on [how to deploy a Hugo site](https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/).
diff --git a/content/en/hosting-and-deployment/hosting-on-firebase.md b/content/en/hosting-and-deployment/hosting-on-firebase.md
deleted file mode 100644 (file)
index 028964b..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Host on Firebase
-description: You can use Firebase's free tier to host your static website; this also gives you access to Firebase's NoSQL API.
-categories: [hosting and deployment]
-keywords: [hosting,firebase]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-## Assumptions
-
-1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.)
-2. You have completed the [Quick Start] or have a completed Hugo website ready for deployment.
-
-## Initial setup
-
-Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js):
-
-```sh
-npm install -g firebase-tools
-```
-
-Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account.
-
-```sh
-firebase login
-```
-
-In the root of your Hugo project, initialize the Firebase project with the `firebase init` command:
-
-```sh
-firebase init
-```
-
-From here:
-
-1. Choose Hosting in the feature question
-2. Choose the project you just set up
-3. Accept the default for your database rules file
-4. Accept the default for the publish directory, which is `public`
-5. Choose "No" in the question if you are deploying a single-page app
-
-## Using Firebase & GitHub CI/CD
-
-In new versions of Firebase, some other questions apply:
-
-6. Set up automatic builds and deploys with GitHub?
-
-Here you will be redirected to login in your GitHub account to get permissions. Confirm.
-
-7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
-
-Include the repository you will use in the format above (Account/Repo)
-Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings.
-
-8. Set up the workflow to run a build script before every deploy?
-
-Here is your opportunity to include some commands before you run the deploy.
-
-9. Set up automatic deployment to your site's live channel when a PR is merged?
-
-You can let in the default option (main)
-
-After that Firebase has been set in your project with CI/CD. After that run:
-
-```sh
-hugo && firebase deploy
-```
-
-With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from: https://github.com/your-account/your-repo/actions
-
-Don't forget to update your static pages before push!
-
-## Manual deploy
-
-To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time:
-
-```sh
-hugo && firebase deploy
-```
-
-## CI setup (other tools)
-
-You can generate a deploy token using
-
-```sh
-firebase login:ci
-```
-
-You can also set up your CI and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`.
-
-{{% note %}}
-This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others.
-{{% /note %}}
-
-You can then add a step in your build to do the deployment using the token:
-
-```sh
-firebase deploy --token $FIREBASE_DEPLOY_TOKEN
-```
-
-## Reference links
-
-* [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands)
-
-[console]: https://console.firebase.google.com/
-[Quick Start]: /getting-started/quick-start/
-[signup]: https://console.firebase.google.com/
diff --git a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-1.png b/content/en/hosting-and-deployment/hosting-on-github/gh-pages-1.png
deleted file mode 100644 (file)
index 29912f2..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-1.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-2.png b/content/en/hosting-and-deployment/hosting-on-github/gh-pages-2.png
deleted file mode 100644 (file)
index 0050d33..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-2.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-3.png b/content/en/hosting-and-deployment/hosting-on-github/gh-pages-3.png
deleted file mode 100644 (file)
index d2904ca..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-3.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-4.png b/content/en/hosting-and-deployment/hosting-on-github/gh-pages-4.png
deleted file mode 100644 (file)
index 7577446..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-4.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-5.png b/content/en/hosting-and-deployment/hosting-on-github/gh-pages-5.png
deleted file mode 100644 (file)
index efe2612..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-github/gh-pages-5.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-github/index.md b/content/en/hosting-and-deployment/hosting-on-github/index.md
deleted file mode 100644 (file)
index 81d6a4c..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
----
-title: Host on GitHub Pages
-description: Host your site on GitHub Pages with continuous deployment using project, user, or organization pages.
-categories: [hosting and deployment]
-keywords: [hosting]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
-aliases: [/tutorials/github-pages-blog/]
----
-
-## Prerequisites
-
-Please complete the following tasks before continuing:
-
-1. [Create a GitHub account]
-1. [Install Git]
-1. [Create a Hugo site] and test it locally with `hugo server`.
-
-[Create a GitHub account]: https://github.com/signup
-[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-[Create a Hugo site]: /getting-started/quick-start/
-
-## Types of sites
-
-There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com.
-
-{{% note %}}
-See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming.
-
-[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
-{{% /note %}}
-
-[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
-
-## Procedure
-
-Step 1
-: Create a GitHub repository.
-
-Step 2
-: Push your local repository to GitHub.
-
-Step 3
-: Visit your GitHub repository. From the main menu choose **Settings**&nbsp;>&nbsp;**Pages**. In the center of your screen you will see this:
-
-![screen capture](gh-pages-1.png)
-{style="max-width: 280px"}
-
-Step 4
-: Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button.
-
-![screen capture](gh-pages-2.png)
-{style="max-width: 280px"}
-
-Step 5
-: Create a file named `hugo.yaml` in a directory named `.github/workflows`.
-
-```text
-mkdir -p .github/workflows
-touch hugo.yaml
-```
-
-Step 6
-: Copy and paste the YAML below into the file you created. Change the branch name and Hugo version as needed.
-
-{{< code file=.github/workflows/hugo.yaml copy=true >}}
-# Sample workflow for building and deploying a Hugo site to GitHub Pages
-name: Deploy Hugo site to Pages
-
-on:
-  # Runs on pushes targeting the default branch
-  push:
-    branches:
-      - main
-
-  # Allows you to run this workflow manually from the Actions tab
-  workflow_dispatch:
-
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
-  contents: read
-  pages: write
-  id-token: write
-
-# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
-# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
-concurrency:
-  group: "pages"
-  cancel-in-progress: false
-
-# Default to bash
-defaults:
-  run:
-    shell: bash
-
-jobs:
-  # Build job
-  build:
-    runs-on: ubuntu-latest
-    env:
-      HUGO_VERSION: 0.141.0
-    steps:
-      - name: Install Hugo CLI
-        run: |
-          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
-          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
-      - name: Install Dart Sass
-        run: sudo snap install dart-sass
-      - name: Checkout
-        uses: actions/checkout@v4
-        with:
-          submodules: recursive
-          fetch-depth: 0
-      - name: Setup Pages
-        id: pages
-        uses: actions/configure-pages@v5
-      - name: Install Node.js dependencies
-        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
-      - name: Build with Hugo
-        env:
-          HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
-          HUGO_ENVIRONMENT: production
-          TZ: America/Los_Angeles
-        run: |
-          hugo \
-            --gc \
-            --minify \
-            --baseURL "${{ steps.pages.outputs.base_url }}/"
-      - name: Upload artifact
-        uses: actions/upload-pages-artifact@v3
-        with:
-          path: ./public
-
-  # Deployment job
-  deploy:
-    environment:
-      name: github-pages
-      url: ${{ steps.deployment.outputs.page_url }}
-    runs-on: ubuntu-latest
-    needs: build
-    steps:
-      - name: Deploy to GitHub Pages
-        id: deployment
-        uses: actions/deploy-pages@v4
-{{< /code >}}
-
-Step 7
-: Commit and push the change to your GitHub repository.
-
-```sh
-git add -A
-git commit -m "Create hugo.yaml"
-git push
-```
-
-Step 8
-: From GitHub's main menu, choose **Actions**. You will see something like this:
-
-![screen capture](gh-pages-3.png)
-{style="max-width: 350px"}
-
-Step 9
-: When GitHub has finished building and deploying your site, the color of the status indicator will change to green.
-
-![screen capture](gh-pages-4.png)
-{style="max-width: 350px"}
-
-Step 10
-: Click on the commit message as shown above. You will see this:
-
-![screen capture](gh-pages-5.png)
-{style="max-width: 611px"}
-
-Under the deploy step, you will see a link to your live site.
-
-In the future, whenever you push a change from your local repository, GitHub will rebuild your site and deploy the changes.
-
-## Customize the workflow
-
-The example workflow above includes this step, which typically takes 10&#8209;15 seconds:
-
-```yaml
-- name: Install Dart Sass
-  run: sudo snap install dart-sass
-```
-
-You may remove this step if your site, themes, and modules do not transpile Sass to CSS using the [Dart Sass] transpiler.
-
-[Dart Sass]: /functions/css/sass/#dart-sass
-
-## Other resources
-
-- [Learn more about GitHub Actions](https://docs.github.com/en/actions)
-- [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows)
-- [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
diff --git a/content/en/hosting-and-deployment/hosting-on-gitlab.md b/content/en/hosting-and-deployment/hosting-on-gitlab.md
deleted file mode 100644 (file)
index 55ac236..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Host on GitLab Pages
-description: GitLab makes it easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides native support for Hugo.
-categories: [hosting and deployment]
-keywords: [hosting,gitlab]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
-aliases: [/tutorials/hosting-on-gitlab/]
----
-
-## Assumptions
-
-* Working familiarity with Git for version control
-* Completion of the Hugo [Quick Start]
-* A [GitLab account](https://gitlab.com/users/sign_in)
-* A Hugo website on your local machine that you are ready to publish
-
-## BaseURL
-
-The `baseURL` in your [site configuration](/getting-started/configuration/) must reflect the full URL of your GitLab pages repository if you are using the default GitLab Pages URL (e.g., `https://<YourUsername>.gitlab.io/<your-hugo-site>/`) and not a custom domain.
-
-## Configure GitLab CI/CD
-
-Define your [CI/CD](https://docs.gitlab.com/ee/ci/quick_start/) jobs by creating a `.gitlab-ci.yml` file in the root of your project.
-
-{{< code file=.gitlab-ci.yml copy=true >}}
-variables:
-  DART_SASS_VERSION: 1.81.1
-  GIT_DEPTH: 0
-  GIT_STRATEGY: clone
-  GIT_SUBMODULE_STRATEGY: recursive
-  HUGO_VERSION: 0.140.2
-  NODE_VERSION: 23.x
-  TZ: America/Los_Angeles
-image:
-  name: golang:1.23.4-bookworm
-
-pages:
-  script:
-    # Install brotli
-    - apt-get update
-    - apt-get install -y brotli
-    # Install Dart Sass
-    - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
-    - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
-    - cp -r dart-sass/ /usr/local/bin
-    - rm -rf dart-sass*
-    - export PATH=/usr/local/bin/dart-sass:$PATH
-    # Install Hugo
-    - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
-    - apt-get install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
-    - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
-    # Install Node.js
-    - curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash -
-    - apt-get install -y nodejs
-    # Install Node.js dependencies
-    - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
-    # Build
-    - hugo --gc --minify --baseURL ${CI_PAGES_URL}
-    # Compress
-    - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec gzip -f -k {} \;
-    - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec brotli -f -k {} \;
-  artifacts:
-    paths:
-      - public
-  rules:
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-{{% /code %}}
-
-## Push your Hugo website to GitLab
-
-Next, create a new repository on GitLab. It is *not* necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control.
-
-```sh
-# initialize new git repository
-git init
-
-# add /public directory to our .gitignore file
-echo "/public" >> .gitignore
-
-# commit and push code to master branch
-git add .
-git commit -m "Initial commit"
-git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git
-git push -u origin master
-```
-
-## Wait for your page to build
-
-That's it! You can now follow the CI agent building your page at `https://gitlab.com/<YourUsername>/<your-hugo-site>/pipelines`.
-
-After the build has passed, your new website is available at `https://<YourUsername>.gitlab.io/<your-hugo-site>/`.
-
-## Next steps
-
-GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
-
-[Quick Start]: /getting-started/quick-start/
diff --git a/content/en/hosting-and-deployment/hosting-on-keycdn/index.md b/content/en/hosting-and-deployment/hosting-on-keycdn/index.md
deleted file mode 100644 (file)
index 3073c71..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: Host on KeyCDN
-description: "Accelerate your Hugo site globally with a KeyCDN integration. This tutorial shows you how to set up your static site as a GitLab page behind a KeyCDN pull zone."
-categories: [hosting and deployment]
-keywords: [hosting,keycdn]
-menu:
-  docs:
-    parent: hosting-and-deployment
----
-
-[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
-
-## Assumptions
-
-- You already have a Hugo page configured
-- You have a GitLab account
-- You have a KeyCDN account
-
-## Create a KeyCDN Pull Zone
-
-The first step will be to log in to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL.
-
-![Screenshot of KeyCDN's pull zone creation page](keycdn-pull-zone.png)
-
-While the origin location doesn’t exist yet, you will need to use your new Zone URL address (or [Zone Alias](https://www.keycdn.com/support/create-a-zone-alias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project.
-
-Ensure that you use your Zone URL or Zone alias as the `BASEURL` variable in the example below. This will be the user-visible website address.
-
-## Configure Your .gitlab-ci.yml File
-
-Your `.gitlab-ci.yml` file should look similar to the example below. Be sure to modify any variables that are specific to your setup.
-
-```yml
-image: alpine:latest
-
-variables:
-    BASEURL: "https://cipull-7bb7.kxcdn.com/"
-    HUGO_VERSION: "0.26"
-    HUGO_CHECKSUM: "67e4ba5ec2a02c8164b6846e30a17cc765b0165a5b183d5e480149baf54e1a50"
-    KEYCDN_ZONE_ID: "75544"
-
-before_script:
-    - apk update
-    - apk add curl
-
-pages:
-    stage: deploy
-    script:
-    - apk add git
-    - git submodule update --init
-    - curl -sSL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
-    - echo "${HUGO_CHECKSUM}  /tmp/hugo.tar.gz" | sha256sum -c
-    - tar xf /tmp/hugo.tar.gz hugo -C /tmp/ && cp /tmp/hugo /usr/bin
-    - hugo --baseURL ${BASEURL}
-    - curl "https://api.keycdn.com/zones/purge/${KEYCDN_ZONE_ID}.json" -u "${KEYCDN_API_KEY}:"
-    artifacts:
-    paths:
-    - public
-    only:
-    - master
-```
-
-Using this integration method,  you will have to specify the Zone ID and your [KeyCDN API](https://www.keycdn.com/api) key as secret variables. To do this, navigate to the top-left menu bar in GitLab and select Projects. Then, select your project and click on the Settings page. Finally, select Pipelines from the sub-menu and scroll down to the Secret Variable section.
-
-The Secret Variable for your Zone ID should look similar to:
-
-![Screenshot of setting the Zone ID secret variable](secret-zone-id.png)
-
-While the Secret Variable for your API Key will look similar to:
-
-![Screenshot of setting the API Key secret variable](secret-api-key.png)
-
-The Zone ID and API key are used to purge your zone – it’s not strictly needed but otherwise, the CDN might deliver older versions of your assets for quite a while.
-
-## Push your changes to GitLab
-
-Now it's time to push the newly created repository to GitLab:
-
-```sh
-git remote add origin git@gitlab.com:youruser/ci-example.git
-git push -u origin master
-```
-
-You can watch the progress and CI job output in your GitLab project under “Pipelines”.
-
-After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone – don’t worry about that) and then by heading to whatever Zone alias / Zone URL you defined.
-
-To learn more about Hugo hosting options with KeyCDN, check out the complete [Hugo hosting with KeyCDN integration guide](https://www.keycdn.com/support/hugo-hosting/).
diff --git a/content/en/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png b/content/en/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png
deleted file mode 100644 (file)
index 7cde4a6..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png b/content/en/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png
deleted file mode 100644 (file)
index ad99341..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png b/content/en/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png
deleted file mode 100644 (file)
index 2e5cf5f..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/index.md b/content/en/hosting-and-deployment/hosting-on-netlify/index.md
deleted file mode 100644 (file)
index 97694f2..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
----
-title: Host on Netlify
-description: Host your site on Netlify with continuous deployment.
-categories: [hosting and deployment]
-keywords: [hosting]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-## Prerequisites
-
-Please complete the following tasks before continuing:
-
-1. [Create a Netlify account]
-1. [Install Git]
-1. [Create a Hugo site] and test it locally with `hugo server`
-1. Commit the changes to your local repository
-1. Push the local repository to your [GitHub], [GitLab], or [Bitbucket] account
-
-[Bitbucket]: https://bitbucket.org/product
-[Create a Hugo site]: /getting-started/quick-start/
-[Create a Netlify account]: https://app.netlify.com/signup
-[GitHub]: https://github.com
-[GitLab]: https://about.gitlab.com/
-[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-
-## Procedure
-
-This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket.
-
-Step 1
-: Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu.
-
-Step 2
-: Select your deployment method.
-
-  ![screen capture](netlify-step-02.png)
-
-Step 3
-: Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button.
-
-  ![screen capture](netlify-step-03.png)
-
-Step 4
-: Press the **Configure Netlify on GitHub** button.
-
-  ![screen capture](netlify-step-04.png)
-
-Step 5
-: Install the Netlify app by selecting your GitHub account.
-
-  ![screen capture](netlify-step-05.png)
-
-Step 6
-: Press the **Install** button.
-
-  ![screen capture](netlify-step-06.png)
-
-Step 7
-: Click on the site's repository from the list.
-
-  ![screen capture](netlify-step-07.png)
-
-Step 8
-: Set the site name and branch from which to deploy.
-
-  ![screen capture](netlify-step-08.png)
-
-Step 9
-: Define the build settings, press the **Add environment variables** button, then press the **New variable** button.
-
-  ![screen capture](netlify-step-09.png)
-
-Step 10
-: Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version].
-
-[latest version]: https://github.com/gohugoio/hugo/releases/latest
-
-  ![screen capture](netlify-step-10.png)
-
-Step 11
-: Press the "Deploy my new site" button at the bottom of the page.
-
-  ![screen capture](netlify-step-11.png)
-
-Step 12
-: At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry.
-
-  ![screen capture](netlify-step-12.png)
-
-Step 13
-: Press the **Open production deploy** button to view the live site.
-
-  ![screen capture](netlify-step-13.png)
-
-## Configuration file
-
-In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control.
-
-Create a new file named netlify.toml in the root of your project directory. In its simplest form, the configuration file might look like this:
-
-{{< code file=netlify.toml >}}
-[build.environment]
-HUGO_VERSION = "0.141.0"
-NODE_VERSION = "22"
-TZ = "America/Los_Angeles"
-
-[build]
-publish = "public"
-command = "hugo --gc --minify"
-{{< /code >}}
-
-If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this:
-
-{{< code file=netlify.toml >}}
-[build.environment]
-HUGO_VERSION = "0.141.0"
-DART_SASS_VERSION = "1.83.4"
-NODE_VERSION = "22"
-TZ = "America/Los_Angeles"
-
-[build]
-publish = "public"
-command = """\
-  curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
-  tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
-  rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
-  export PATH=/opt/build/repo/dart-sass:$PATH && \
-  hugo --gc --minify \
-  """
-{{< /code >}}
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-02.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-02.png
deleted file mode 100644 (file)
index 31fceff..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-02.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-03.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-03.png
deleted file mode 100644 (file)
index 7b98e0b..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-03.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-04.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-04.png
deleted file mode 100644 (file)
index 3130489..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-04.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-05.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-05.png
deleted file mode 100644 (file)
index 6d6eef0..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-05.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-06.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-06.png
deleted file mode 100644 (file)
index 1b766a7..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-06.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-07.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-07.png
deleted file mode 100644 (file)
index 7bb3b6e..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-07.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-08.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-08.png
deleted file mode 100644 (file)
index df8e9e5..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-08.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-09.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-09.png
deleted file mode 100644 (file)
index 3f925ac..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-09.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-10.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-10.png
deleted file mode 100644 (file)
index e9196d0..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-10.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-11.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-11.png
deleted file mode 100644 (file)
index 2ac2b08..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-11.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-12.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-12.png
deleted file mode 100644 (file)
index e251305..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-12.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-13.png b/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-13.png
deleted file mode 100644 (file)
index f955f63..0000000
Binary files a/content/en/hosting-and-deployment/hosting-on-netlify/netlify-step-13.png and /dev/null differ
diff --git a/content/en/hosting-and-deployment/hosting-on-render.md b/content/en/hosting-and-deployment/hosting-on-render.md
deleted file mode 100644 (file)
index b43261c..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: Host on Render
-description: Host your Hugo site for free with Render's global CDN, fully-managed SSL and auto deploys from GitHub.
-categories: [hosting and deployment]
-keywords: [hosting]
-menu:
-  docs:
-    parent: hosting-and-deployment
-toc: true
----
-
-## Introduction
-
-[Render](https://render.com) is a fully-managed cloud platform where you can host static sites, backend APIs, databases, cron jobs, and all your other apps in one place.
-
-Static sites are **completely free** on Render and include the following:
-
-- Continuous, automatic builds & deploys from [GitHub](https://render.com/docs/github) and [GitLab](https://render.com/docs/gitlab).
-- Automatic SSL certificates through [Let's Encrypt](https://letsencrypt.org).
-- Instant cache invalidation with a lightning fast, global CDN.
-- Unlimited collaborators.
-- Unlimited [custom domains](https://render.com/docs/custom-domains).
-- Automatic [Brotli compression](https://en.wikipedia.org/wiki/Brotli) for faster sites.
-- Native HTTP/2 support.
-- [Pull Request Previews](https://render.com/docs/pull-request-previews).
-- Automatic HTTP → HTTPS redirects.
-- Custom URL redirects and rewrites.
-
-## Assumptions
-
-- You have an account with GitHub or GitLab.
-- You have completed the [Quick Start] or have a Hugo website you are ready to deploy and share with the world.
-- You have a Render account. You can sign up at https://render.com/register.
-
-## Deployment
-
-You can set up a Hugo site on Render in two quick steps:
-
-1. Create a new **Static Site** on Render, and give Render permission to access your GitHub/GitLab repo.
-2. Use the following values during creation:
-
-  Field                | Value
-  -------------------  |  -------------------
- **Build Command**     | `hugo --gc --minify` (or your own build command)
- **Publish Directory** | `public` (or your own output directory)
-
-That's it! Your site will be live on your Render URL (which looks like `yoursite.onrender.com`) as soon as the build is done.
-
-## Continuous deploys
-
-Now that Render is connected to your repo, it will **automatically build and publish your site** any time you push to your GitHub/GitLab.
-
-You can choose to disable auto deploys under the **Settings** section for your site and deploy it manually from the Render dashboard.
-
-## CDN and cache invalidation
-
-Render hosts your site on a global, lightning fast CDN which ensures the fastest possible download times for all your users across the globe.
-
-Every deploy automatically and instantly invalidates the CDN cache, so your users can always access the latest content on your site.
-
-## Custom domains
-
-Add your own domains to your site easily using Render's [custom domains](https://render.com/docs/custom-domains) guide.
-
-## Pull Request previews
-
-With Pull Request (PR) previews, you can visualize changes introduced in a pull request instead of simply relying on code reviews.
-
-Once enabled, every PR for your site will automatically generate a new static site based on the code in the PR. It will have its own URL, and it will be deleted automatically when the PR is closed.
-
-Read more about [Pull Request Previews](https://render.com/docs/pull-request-previews) on Render.
-
-## Hugo themes
-
-Render automatically downloads all Git submodules defined in your Git repo on every build. This way Hugo themes added as submodules work as expected.
-
-## Support
-
-Chat with Render developers at https://render.com/chat or email `support@render.com` if you need help.
-
-[Quick Start]: /getting-started/quick-start/
diff --git a/content/en/hosting-and-deployment/hugo-deploy.md b/content/en/hosting-and-deployment/hugo-deploy.md
deleted file mode 100644 (file)
index f33dab5..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
----
-title: Hugo Deploy
-description: Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container.
-categories: [hosting and deployment]
-keywords: [deployment,s3,gcs,azure]
-menu:
-  docs:
-    parent: hosting-and-deployment
-    weight: 20
-weight: 20
-toc: true
----
-
-Use the `hugo deploy` command to deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container
-
-{{% note %}}
-This feature requires the Hugo extended/deploy edition. See the [installation] section for details.
-
-[installation]: /installation/
-{{% /note %}}
-
-## Assumptions
-
-* You have completed the [Quick Start] or have a Hugo website you are ready to deploy and share with the world.
-* You have an account with the service provider ([Google Cloud](https://cloud.google.com/), [AWS](https://aws.amazon.com), or [Azure](https://azure.microsoft.com)) that you want to deploy to.
-* You have authenticated.
-  * Google Cloud: [Install the CLI](https://cloud.google.com/sdk) and run [`gcloud auth login`](https://cloud.google.com/sdk/gcloud/reference/auth/login).
-  * AWS: [Install the CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) and run [`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
-  * Azure: [Install the CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) and run [`az login`](https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli).
-  * NOTE: Each service supports alternatives for authentication, including using environment variables. See [here](https://gocloud.dev/howto/blob/#services) for more details.
-* You have created a bucket to deploy to. If you want your site to be
-  public, be sure to configure the bucket to be publicly readable as a static website.
-  * Google Cloud: [create a bucket](https://cloud.google.com/storage/docs/creating-buckets) and [host a static website](https://cloud.google.com/storage/docs/hosting-static-website)
-  * Amazon S3: [create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) and [host a static website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)
-  * Microsoft Azure: [create a storage container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) and [host a static website](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website)
-
-## Configuring your first deployment
-
-In the configuration file for your site, add a `[deployment]` section
-and a `[[deployment.targets]]` subsection. The only required parameters are
-the name and URL:
-
-```toml
-[deployment]
-
-[[deployment.targets]]
-# An arbitrary name for this target.
-name = "production"
-
-# URL specifies the Go Cloud Development Kit URL to deploy to. Examples:
-URL = "<FILL ME IN>"
-
-# Google Cloud Storage -- see https://gocloud.dev/howto/blob/#gcs
-#URL = "gs://<Bucket Name>"
-
-# Amazon Web Services S3; see https://gocloud.dev/howto/blob/#s3
-#URL = "s3://<Bucket Name>?region=<AWS region>"
-
-# For S3-compatible endpoints, see https://gocloud.dev/howto/blob/#s3-compatible
-#URL = "s3://<Bucket Name>?endpoint=https://my.minio.instance&awssdk=v2&use_path_style=true&disable_https=false
-
-# Microsoft Azure Blob Storage; see https://gocloud.dev/howto/blob/#azure
-#URL = "azblob://$web"
-
-```
-
-## Deploy
-
-To deploy to a target:
-
-```bash
-hugo deploy [--target=<target name>]
-```
-
-The deploy process recursively walks through your local publish directory
-(`public` by default) and syncs it to the destination bucket, to ensure
-that the local and remote contents match.
-
-If you don't specify a target, Hugo will deploy to the first target in your
-configuration.
-
-See `hugo help deploy` or [the deploy command-line documentation][commandline] for more command-line options.
-
-### How the file list works
-
-The first thing `hugo deploy` does is create file lists for local and remote by
-traversing the local publish directory and remote bucket.
-
-For both local and remote, the file list includes and excludes files according to
-the [deployment target's configuration][config] --
-* If the configuration specifies an `include` pattern, all files
-  are skipped by default except those matching the pattern.
-* If the configuration specifies an `exclude` pattern, files matching the
-  pattern are skipped.
-
-{{% note %}}
-When creating the local file list, a few additional skips apply: first, Hugo always
-skips files named `.DS_Store`. 
-
-Second, Hugo always skips local hidden directories
-(directories with names starting with a period, e.g. `.git`) and does not
-traverse into them, except for the special [hidden directory named
-`.well-known`](https://en.wikipedia.org/wiki/Well-known_URI), which is
-traversed if it exists.
-{{% /note %}}
-
-### How the local and remote file lists are compared
-
-In the second step, Hugo compares the two file lists to figure out what changes
-actually need to be made on the remote. File names are compared first; if the
-local and remote files both exist then the sizes and md5sums are compared. Any
-difference means that the file will be (re-)uploaded.
-
-Specifying the `--force` flag will ensure all files are re-uploaded even
-if Hugo cannot detect any differences between local and remote.
-
-Files are deleted from the remote bucket if they are not present in the local
-file list.
-
-{{% note %}}
-If a remote file is excluded from the file list generation using the
-exclude/include configs, then the comparison step will not know to delete the
-file -- so it will remain on the remote even if it isn't present locally.
-{{% /note %}}
-
-If the [`--confirm` or `--dryRun` flags][commandline] are given, Hugo displays 
-what differences it has found and either pauses or stops here.
-
-### How synchronization works
-
-Hugo applies the list of changes to the remote storage bucket. Missing and/or
-changed files are uploaded, and files missing locally but present remotely are
-deleted. As files are uploaded, their headers are also configured on the remote
-according to the matchers configuration.
-
-{{% note %}}
-As a safety measure to help prevent accidents, if there are more than 256 files
-to delete, Hugo won't delete any files from the remote. Use the `--maxDeletes`
-command line flag to override this.
-{{% /note %}}
-
-## Advanced configuration
-
-Here's a full example deployment configuration:
-
-```toml
-[deployment]
-
-# By default, files are uploaded in an arbitrary order.
-# If you specify an `order` list, files that match regular expressions 
-# in this list will be uploaded first, in the specified order.
-order = [".jpg$", ".gif$"]
-
-[[deployment.targets]]
-# Define one or more targets, e.g., staging and production.
-# Each target gets its own [[deployment.targets]] section.
-
-# An arbitrary name for this target.
-name = "mydeployment"
-# The Go Cloud Development Kit URL to deploy to. Examples:
-URL = "<FILL ME IN>"
-
-# GCS; see https://gocloud.dev/howto/blob/#gcs
-#URL = "gs://<Bucket Name>"
-
-# S3; see https://gocloud.dev/howto/blob/#s3
-# For S3-compatible endpoints, see https://gocloud.dev/howto/blob/#s3-compatible
-#URL = "s3://<Bucket Name>?region=<AWS region>"
-
-# Azure Blob Storage; see https://gocloud.dev/howto/blob/#azure
-#URL = "azblob://$web"
-
-# You can use a "prefix=" query parameter to target a subdirectory of the bucket:
-#URL = "gs://<Bucket Name>?prefix=a/subdirectory/"
-
-# If you are using a CloudFront CDN, deploy will invalidate the cache as needed.
-#cloudFrontDistributionID = "<FILL ME IN>"
-
-# Include or exclude specific files when deploying to this target:
-# If exclude is non-empty, and a local or remote file's path matches it, that file is not synced.
-# If include is non-empty, and a local or remote file's path does not match it, that file is not synced.
-# Note: local files that don't pass the include/exclude filters are not uploaded to remote,
-# and remote files that don't pass the include/exclude filters are not deleted.
-# 
-# The pattern syntax is documented here: https://godoc.org/github.com/gobwas/glob#Glob
-# Patterns should be written with forward slashes as separator.
-# 
-#include = "**.html" # would only include files with ".html" suffix
-#exclude = "**.{jpg, png}" # would exclude files with ".jpg" or ".png" suffix
-
-# Map any file named "<dir>/index.html" to the remote file "<dir>/". This does
-# not affect the root "index.html" file, and it does not affect matchers below.
-# This works when deploying to key-value cloud storage systems, such as Amazon
-# S3 (general purpose buckets, not directory buckets), Google Cloud Storage, and
-# Azure Blob Storage. This makes it so the canonical URL will match the object
-# key in cloud storage, except for the root index.html file.
-#
-#stripIndexHTML = true
-
-
-#######################
-[[deployment.matchers]] 
-# Matchers enable special caching, content type and compression behavior for
-# specified file types. You can include any number of matcher blocks; the first one
-# matching a given file pattern will be used.
-
-# See https://golang.org/pkg/regexp/syntax/ for pattern syntax.
-# Pattern searching is stopped on first match.
-# This is not affected by stripIndexHTML, above.
-pattern = "<FILL ME IN>"
-
-# If true, Hugo will gzip the file before uploading it to the bucket.
-# With many storage services, this will save on storage and bandwidth costs
-# for uncompressed file types.
-#gzip = false 
-
-# If true, Hugo always re-uploads this file even if size and md5 match.
-# This is useful if Hugo isn't reliably able to determine whether to re-upload
-# the file on its own.
-#force = false
-
-# Content-type header to configure for this file when served.
-# By default this can be determined from the file extension.
-#contentType = ""
-
-# Cache-control header to configure for this file when served.
-# The default is the empty string.
-#cacheControl = ""
-
-# Content-encoding header to configure for this file when served.
-# By default, if gzip is True, this will be filled with "gzip".
-#contentEncoding = ""
-
-
-# Samples:
-
-[[deployment.matchers]]
-# Cache static assets for 1 year.
-pattern = "^.+\\.(js|css|svg|ttf)$"
-cacheControl = "max-age=31536000, no-transform, public"
-gzip = true
-
-[[deployment.matchers]]
-pattern = "^.+\\.(png|jpg)$"
-cacheControl = "max-age=31536000, no-transform, public"
-gzip = false
-
-[[deployment.matchers]]
-# Set custom content type for /sitemap.xml
-pattern = "^sitemap\\.xml$"
-contentType = "application/xml"
-gzip = true
-
-[[deployment.matchers]]
-pattern = "^.+\\.(html|xml|json)$"
-gzip = true
-```
-
-[Quick Start]: /getting-started/quick-start/
-[commandline]: /commands/hugo_deploy/
-[config]: #advanced-configuration
index b6f38924f3144e3ea3cd5d0b96cba0d63d95b496..7a538ea15c69a20f979a72555fe9d263dc9786be 100644 (file)
@@ -1,29 +1,8 @@
 ---
 title: Hugo Modules
-
 description: Use Hugo Modules to manage the content, presentation, and behavior of your site.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: hugo-modules-in-this-section
-    parent: modules
-    weight: 10
 weight: 10
-toc: true
 aliases: [/themes/overview/,/themes/]
 ---
-
-**Hugo Modules** are the core building blocks in Hugo. A _module_ can be your main project or a smaller module providing one or more of the 7 component types defined in Hugo: **static**, **content**, **layouts**, **data**, **assets**, **i18n**, and **archetypes**.
-
-You can combine modules in any combination you like, and even mount directories from non-Hugo projects, forming a big, virtual union file system.
-
-Hugo Modules are powered by Go Modules. For more information about Go Modules, see:
-
-- [https://go.dev/wiki/Modules](https://go.dev/wiki/Modules)
-- [https://go.dev/blog/using-go-modules](https://go.dev/blog/using-go-modules)
-
-Some example projects:
-
-- [https://github.com/bep/docuapi](https://github.com/bep/docuapi) is a theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure. It even shows a JS Bundler implementation in regular Go templates.
-- [https://github.com/bep/my-modular-site](https://github.com/bep/my-modular-site) is a very simple site used for testing.
diff --git a/content/en/hugo-modules/configuration.md b/content/en/hugo-modules/configuration.md
deleted file mode 100644 (file)
index 0bc1b47..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
----
-title: Configure Hugo modules
-description: This page describes the configuration options for a module.
-categories: [hugo modules]
-keywords: [modules,themes]
-menu:
-  docs:
-    parent: modules
-    weight: 20
-weight: 20
-toc: true
----
-
-## Module configuration: top level
-
-{{< code-toggle file=hugo >}}
-[module]
-noProxy = 'none'
-noVendor = ''
-private = '*.*'
-proxy = 'direct'
-replacements = ''
-vendorClosest = false
-workspace = 'off'
-{{< /code-toggle >}}
-
-noProxy
-: (`string`) Comma separated glob list matching paths that should not use the proxy configured above.
-
-noVendor
-: (`string`) A optional Glob pattern matching module paths to skip when vendoring, e.g. "github.com/**"
-
-private
-: (`string`) Comma separated glob list matching paths that should be treated as private.
-
-proxy
-: (`string`) Defines the proxy server to use to download remote modules. Default is `direct`, which means "git clone" and similar.
-
-vendorClosest
-: (`bool`) When enabled, we will pick the vendored module closest to the module using it. The default behavior is to pick the first. Note that there can still be only one dependency of a given module path, so once it is in use it cannot be redefined. Default is `false`.
-
-workspace
-: (`string`) The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work file names relative to the working directory.
-
-replacements
-: (`string`) A comma-separated list of mappings from module paths to directories, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary local development of a module, in which case you might want to save it as an environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Relative paths are relative to [themesDir](/getting-started/configuration/#all-configuration-settings). Absolute paths are allowed.
-
-Note that the above terms maps directly to their counterparts in Go Modules. Some of these setting may be natural to set as OS environment variables. To set the proxy server to use, as an example:
-
-```txt
-env HUGO_MODULE_PROXY=https://proxy.example.org hugo
-```
-
-{{< gomodules-info >}}
-
-## Module configuration: hugoVersion
-
-If your module requires a particular version of Hugo to work, you can indicate that in the `module` section and the user will be warned if using a too old/new version.
-
-{{< code-toggle file=hugo >}}
-[module]
-[module.hugoVersion]
-  min = ""
-  max = ""
-  extended = false
-
-{{< /code-toggle >}}
-
-Any of the above can be omitted.
-
-min
-: (`string`) The minimum Hugo version supported, e.g. `0.55.0`
-
-max
-: (`string`) The maximum Hugo version supported, e.g. `0.55.0`
-
-extended
-: (`bool`) Whether the extended edition of Hugo is required, satisfied by installing either the extended or extended/deploy edition.
-
-## Module configuration: imports
-
-{{< code-toggle file=hugo >}}
-[module]
-[[module.imports]]
-  path = "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v"
-  ignoreConfig = false
-  ignoreImports = false
-  disable = false
-[[module.imports]]
-  path = "my-shortcodes"
-{{< /code-toggle >}}
-
-path
-: Can be either a valid Go Module module path, e.g. `github.com/gohugoio/myShortcodes`, or the directory name for the module as stored in your `themes` directory.
-
-ignoreConfig
-: If enabled, any module configuration file, e.g. `hugo.toml`, will not be loaded. Note that this will also stop the loading of any transitive module dependencies.
-
-ignoreImports
-: If enabled, module imports will not be followed.
-
-disable
-: Set to `true` to disable the module while keeping any version info in the `go.*` files.
-
-noMounts
-:  Do not mount any directory in this import.
-
-noVendor
-:  Never vendor this import (only allowed in main project).
-
-{{< gomodules-info >}}
-
-## Module configuration: mounts
-
-{{% note %}}
-When the `mounts` configuration was introduced in Hugo 0.56.0, we were careful to preserve the existing `contentDir`, `staticDir`, and similar configuration to make sure all existing sites just continued to work. But you should not have both: if you add a `mounts` section you should remove the old `contentDir`, `staticDir`, etc. settings.
-{{% /note %}}
-
-{{% note %}}
-When you add a mount, the default mount for the concerned target root is ignored: be sure to explicitly add it.
-{{% /note %}}
-
-### Default mounts
-
-{{< code-toggle file=hugo >}}
-[module]
-[[module.mounts]]
-    source="content"
-    target="content"
-[[module.mounts]]
-    source="static"
-    target="static"
-[[module.mounts]]
-    source="layouts"
-    target="layouts"
-[[module.mounts]]
-    source="data"
-    target="data"
-[[module.mounts]]
-    source="assets"
-    target="assets"
-[[module.mounts]]
-    source="i18n"
-    target="i18n"
-[[module.mounts]]
-    source="archetypes"
-    target="archetypes"
-{{< /code-toggle >}}
-
-source
-: (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
-
-target
-: (`string`) Where it should be mounted into Hugo's virtual filesystem. It must start with one of Hugo's component directories: `static`, `content`, `layouts`, `data`, `assets`, `i18n`, or `archetypes`. E.g. `content/blog`.
-
-disableWatch
-{{< new-in 0.128.0 />}}
-: (`bool`) Whether to disable watching in watch mode for this mount. Default is `false`.
-
-lang
-: (`string`) The language code, e.g. "en". Only relevant for `content` mounts, and `static` mounts when in multihost mode.
-
-includeFiles
-: (`string` or `[]string`) One or more [glob](https://github.com/gobwas/glob) patterns matching files or directories to include. If `excludeFiles` is not set, the files matching `includeFiles` will be the files mounted.
-
-The glob patterns are matched to the file names starting from the `source` root, they should have Unix styled slashes even on Windows, `/` matches the mount root and `**` can be used as a  super-asterisk to match recursively down all directories, e.g `/posts/**.jpg`.
-
-The search is case-insensitive.
-
-excludeFiles
-: (`string` or `[]string`) One or more glob patterns matching files to exclude.
-
-### Example
-
-{{< code-toggle file=hugo >}}
-[module]
-[[module.mounts]]
-    source="content"
-    target="content"
-    excludeFiles="docs/*"
-[[module.mounts]]
-    source="node_modules"
-    target="assets"
-[[module.mounts]]
-    source="assets"
-    target="assets"
-{{< /code-toggle >}}
diff --git a/content/en/hugo-modules/introduction.md b/content/en/hugo-modules/introduction.md
new file mode 100644 (file)
index 0000000..b45607d
--- /dev/null
@@ -0,0 +1,19 @@
+---
+title: Introduction
+description: A brief introduction to Hugo Modules.
+categories: []
+keywords: []
+weight: 10
+---
+
+Hugo uses modules as its fundamental organizational units. A module can be a full Hugo project or a smaller, reusable piece providing one or more of Hugo's seven component types: static files, content, layouts, data, assets, internationalization (i18n) resources, and archetypes.
+
+Modules are combinable in any arrangement, and external directories (including those from non-Hugo projects) can be mounted, effectively creating a single, unified file system.
+
+Some example projects:
+
+[https://github.com/bep/docuapi](https://github.com/bep/docuapi)
+: A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure. It even shows a JS Bundler implementation in regular Go templates.
+
+[https://github.com/bep/my-modular-site](https://github.com/bep/my-modular-site)
+: A simple site used for testing.
index 9e52620ce9f3a8981f095bf17e625e2e0e71db91..03891ed7ac7f4c272f30bedd0c19de6b0a9e792e 100644 (file)
@@ -1,27 +1,19 @@
 ---
 title: Theme components
-description: Hugo provides advanced theming support with Theme Components.
-categories: [hugo modules]
-keywords: [modules,themes]
-menu:
-  docs:
-    parent: modules
-    weight: 40
-weight: 40
+description: Hugo provides advanced theming support with theme components.
+categories: []
+keywords: []
+weight: 30
 aliases: [/themes/customize/,/themes/customizing/]
-toc: true
 ---
 
-{{% note %}}
-This section contain information that may be outdated and is in the process of being rewritten.
-{{% /note %}}
-Since Hugo `0.42` a project can configure a theme as a composite of as many theme components you need:
+A project can configure a theme as a composite of as many theme components as you need:
 
 {{< code-toggle file=hugo >}}
 theme = ["my-shortcodes", "base-theme", "hyde"]
 {{< /code-toggle >}}
 
-You can even nest this, and have the theme component itself include theme components in its own `hugo.toml` (theme inheritance).[^1]
+You can even nest this, and have the theme component itself include theme components in its own `hugo.toml` (theme inheritance).
 
 The theme definition example above in `hugo.toml` creates a theme with 3 theme components with precedence from left to right.
 
@@ -29,17 +21,15 @@ For any given file, data entry, etc., Hugo will look first in the project and th
 
 Hugo uses two different algorithms to merge the file systems, depending on the file type:
 
-* For `i18n` and `data` files, Hugo merges deeply using the translation ID and data key inside the files.
-* For `static`, `layouts` (templates), and `archetypes` files, these are merged on file level. So the left-most file will be chosen.
+- For `i18n` and `data` files, Hugo merges deeply using the translation ID and data key inside the files.
+- For `static`, `layouts` (templates), and `archetypes` files, these are merged on file level. So the left-most file will be chosen.
 
-The name used in the `theme` definition above must match a directory in `/your-site/themes`, e.g. `/your-site/themes/my-shortcodes`. There are plans to improve on this and get a URL scheme so this can be resolved automatically.
+The name used in the `theme` definition above must match a directory in `/your-site/themes`, e.g. `/your-site/themes/my-shortcodes`.
 
 Also note that a component that is part of a theme can have its own configuration file, e.g. `hugo.toml`. There are currently some restrictions to what a theme component can configure:
 
-* `params` (global and per language)
-* `menu` (global and per language)
-* `outputformats` and `mediatypes`
+- `params` (global and per language)
+- `menu` (global and per language)
+- `outputformats` and `mediatypes`
 
 The same rules apply here: The left-most parameter/menu etc. with the same ID will win. There are some hidden and experimental namespace support in the above, which we will work to improve in the future, but theme authors are encouraged to create their own namespaces to avoid naming conflicts.
-
-[^1]: For themes hosted on the [Hugo Themes Showcase](https://themes.gohugo.io/) components need to be added as git submodules that point to the directory `exampleSite/themes`
index f29d4b1980b66f941ec3378523b1440efd39171e..86d2ad1cc9d5f8d7ca4f89061d96731590dfd6fd 100644 (file)
@@ -1,20 +1,15 @@
 ---
 title: Use Hugo Modules
-description: How to use Hugo Modules to build and manage your site.
-categories: [hugo modules]
-keywords: [modules,themes]
-menu:
-  docs:
-    parent: modules
-    weight: 30
-weight: 30
+description: How to use Hugo Modules.
+categories: []
+keywords: []
+weight: 20
 aliases: [/themes/usage/,/themes/installing/,/installing-and-using-themes/]
-toc: true
 ---
 
 ## Prerequisite
 
-{{< gomodules-info >}}
+{{% include "/_common/gomodules-info.md" %}}
 
 ## Initialize a new module
 
@@ -33,15 +28,15 @@ The easiest way to use a Module for a theme is to import it in the configuration
 1. Initialize the hugo module system: `hugo mod init github.com/<your_user>/<your_project>`
 1. Import the theme:
 
-{{< code-toggle file=hugo >}}
-[module]
-  [[module.imports]]
-    path = "github.com/spf13/hyde"
-{{< /code-toggle >}}
+    {{< code-toggle file=hugo >}}
+    [module]
+      [[module.imports]]
+        path = "github.com/spf13/hyde"
+    {{< /code-toggle >}}
 
 ## Update modules
 
-Modules will be downloaded and added when you add them as imports to your configuration, see [Module Imports](/hugo-modules/configuration/#module-configuration-imports).
+Modules will be downloaded and added when you add them as imports to your configuration. See [configure modules](/configuration/module/#imports).
 
 To update or manage versions, you can use `hugo mod get`.
 
@@ -83,7 +78,7 @@ replace github.com/bep/hugotestmods/mypartials => /Users/bep/hugotestmods/mypart
 
 If you have the `hugo server` running, the configuration will be reloaded and `/Users/bep/hugotestmods/mypartials` put on the watch list.
 
-Instead of modifying the `go.mod` files, you can also use the modules configuration [`replacements`](/hugo-modules/configuration/#module-configuration-top-level) option.
+Instead of modifying the `go.mod` files, you can also use the modules configuration [`replacements`](/configuration/module/#top-level-options) option.
 
 ## Print dependency graph
 
@@ -111,9 +106,9 @@ Also see the [CLI Doc](/commands/hugo_mod_graph/).
 
 Note that:
 
-* You can run `hugo mod vendor` on any level in the module tree.
-* Vendoring will not store modules stored in your `themes` directory.
-* Most commands accept a `--ignoreVendorPaths` flag, which will then not use the vendored modules in `_vendor` for the module paths matching the [Glob](https://github.com/gobwas/glob) pattern given.
+- You can run `hugo mod vendor` on any level in the module tree.
+- Vendoring will not store modules stored in your `themes` directory.
+- Most commands accept a `--ignoreVendorPaths` flag, which will then not use the vendored modules in `_vendor` for the module paths matching the given [glob](g) pattern.
 
 Also see the [CLI Doc](/commands/hugo_mod_vendor/).
 
@@ -127,7 +122,7 @@ Also see the [CLI Doc](/commands/hugo_mod_clean/).
 
 Run `hugo mod clean` to delete the entire modules cache.
 
-Note that you can also configure the `modules` cache with a `maxAge`, see [File Caches](/getting-started/configuration/#configure-file-caches).
+Note that you can also configure the `modules` cache with a `maxAge`. See [configure caches](/configuration/caches/).
 
 Also see the [CLI Doc](/commands/hugo_mod_clean/).
 
@@ -137,7 +132,7 @@ Workspace support was added in [Go 1.18](https://go.dev/blog/get-familiar-with-w
 
 A common use case for a workspace is to simplify local development of a site with its theme modules.
 
-A workspace can be configured in a `*.work` file and activated with the [module.workspace](/hugo-modules/configuration/) setting, which for this use is commonly controlled via the `HUGO_MODULE_WORKSPACE` OS environment variable.
+A workspace can be configured in a `*.work` file and activated with the [module.workspace](/configuration/module/) setting, which for this use is commonly controlled via the `HUGO_MODULE_WORKSPACE` OS environment variable.
 
 See the [hugo.work](https://github.com/gohugoio/hugo/blob/master/docs/hugo.work) file in the Hugo Docs repo for an example:
 
index 5e2d1d4169ee76ad8dfceff272768aea7b7b931b..51028152b19bcdcdb35afb322a5d8eaa7d01e1ab 100755 (executable)
@@ -3,10 +3,5 @@ title: Hugo Pipes
 description: Use asset pipelines to transform and optimize images, stylesheets, and JavaScript.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: hugo-pipes-in-this-section
-    parent: hugo-pipes
-    weight: 10
 weight: 10
 ---
index 1e090873764625a31b5fe0ac69f26d0f6175d43e..335cc5cae783b6bfff92de8e90947063c588db43 100755 (executable)
@@ -2,13 +2,8 @@
 title: Concat
 linkTitle: Concatenating assets
 description: Bundle any number of assets into one resource.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 90
-weight: 90
 ---
 
 See the [`resources.Concat`](/functions/resources/concat/) function.
index 78fb18081e4f0fc4288acb08a7c02173ce5fea53..d38dfc106899e59e1173f61019d920bcfbdc0cce 100755 (executable)
@@ -2,13 +2,8 @@
 title: Fingerprint
 linkTitle: Fingerprinting and SRI hashing
 description: Cryptographically hash the content of the given resource.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 100
-weight: 100
 ---
 
 See the [`resources.Fingerprint`](/functions/resources/fingerprint/) function.
index 6451711533a53b61b7f31cce283e8d0307880dd7..d1b93094f2984136a6dd00cffaba58763cc5f977 100755 (executable)
@@ -2,14 +2,9 @@
 title: Hugo Pipes
 linkTitle: Introduction
 description: Hugo Pipes is Hugo's asset processing set of functions.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 20
-weight: 20
-toc: true
+weight: 10
 aliases: [/assets/]
 ---
 
@@ -25,7 +20,7 @@ remote resource
 
 For `.Page` scoped resources, see the [page resources] section.
 
-[mounted]: /hugo-modules/configuration/#module-configuration-mounts
+[mounted]: /configuration/module/#mounts
 [page resources]: /content-management/page-resources/
 
 ## Get a resource
index 88b0f005f7178fe7b77db4d3bad9656e759998ab..18572d5386f4cd7b5f982e0ee9be1993d5f779f7 100644 (file)
@@ -2,13 +2,8 @@
 title: JavaScript
 linkTitle: JavaScript building
 description: Bundle, transpile, tree shake, code split, and minify JavaScript resources.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 60
-weight: 60
 ---
 
 See [JS functions](/functions/js/).
index 3943d87d0643c992622741a9ce29e3f160cfcb68..4ba1ea641f274a2f2d790aab89535391c53f7bc5 100755 (executable)
@@ -2,13 +2,8 @@
 title: Minify
 linkTitle: Asset minification
 description: Minify a given resource.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 80
-weight: 80
 ---
 
 See the [`resources.Minify`](/functions/resources/minify/) function.
index 72a091c8fcb94f3af70e450adb14857428dbfcdd..1b47e8aefcc8154c39a2604809bf0987cee9e619 100755 (executable)
@@ -1,13 +1,8 @@
 ---
 title: PostCSS
 description: Process the given resource with PostCSS using any PostCSS plugin.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 40
-weight: 40
 ---
 
 See the [`css.PostCSS`](/functions/css/postcss/) function.
index e916dfc4d543d22f2fee4bef89aa52f7d88a55a0..72540fd5db445afd72df7750b2a62f59dc70d2f8 100755 (executable)
@@ -1,13 +1,8 @@
 ---
 title: PostProcess
 description: Process the given resource after the build.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 50
-weight: 50
 ---
 
 See the [`resources.PostProcess`](/functions/resources/postprocess/) function.
index 9c943591c43a3992e22333eb04356dbc4ecb1c1b..ed5eaff80291b798c53b01031074daba243a90c0 100755 (executable)
@@ -2,13 +2,8 @@
 title: FromString
 linkTitle: Resource from string
 description: Create a resource from a string.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 110
-weight: 110
 ---
 
 See the [`resources.FromString`](/functions/resources/fromstring/) function.
index 76303822db833e8f15ae549a55fd713479363553..bc50f630b48ec8820473f40c6af68ecec2b291ed 100755 (executable)
@@ -2,13 +2,8 @@
 title: ExecuteAsTemplate
 linkTitle: Resource from template
 description: Create a resource from a Go template, parsed and executed with the given context.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 120
-weight: 120
 ---
 
 See the [`resources.ExecuteAsTemplate`](/functions/resources/executeastemplate/) function.
index 918687b173651bb2e226d57b194e71c0d92a61a3..7569142974849ee9388366fdfe03d609da84fd43 100644 (file)
@@ -2,13 +2,8 @@
 title: ToCSS
 linkTitle: Transpile Sass to CSS
 description: Transpile Sass to CSS.
-categories: [asset management]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: hugo-pipes
-    weight: 30
-weight: 30
 aliases: [/hugo-pipes/transform-to-css/]
 ---
 
diff --git a/content/en/installation/_common/01-editions.md b/content/en/installation/_common/01-editions.md
deleted file mode 100644 (file)
index 11e7e90..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Hugo is available in three editions: standard, extended, and extended/deploy. While the standard edition provides core functionality, the extended and extended/deploy editions offer advanced features.
-
-Feature|extended edition|extended/deploy edition
-:--|:-:|:-:
-Encode to the WebP format when [processing images]. You can decode WebP images with any edition.|:heavy_check_mark:|:heavy_check_mark:
-[Transpile Sass to CSS] using the embedded LibSass transpiler. You can use the [Dart Sass] transpiler with any edition.|:heavy_check_mark:|:heavy_check_mark:
-Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See&nbsp;[details].|:x:|:heavy_check_mark:
-
-[dart sass]: /functions/css/sass/#dart-sass
-[processing images]: /content-management/image-processing/
-[transpile sass to css]: /functions/css/sass/
-[details]: /hosting-and-deployment/hugo-deploy/
diff --git a/content/en/installation/_common/02-prerequisites.md b/content/en/installation/_common/02-prerequisites.md
deleted file mode 100644 (file)
index f27d9d5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-## Prerequisites
-
-Although not required in all cases, [Git], [Go], and [Dart Sass] are commonly used when working with Hugo.
-
-Git is required to:
-
-- Build Hugo from source
-- Use the [Hugo Modules] feature
-- Install a theme as a Git submodule
-- Access [commit information] from a local Git repository
-- Host your site with services such as [CloudCannon], [Cloudflare Pages], [GitHub Pages], [GitLab Pages], and [Netlify]
-
-Go is required to:
-
-- Build Hugo from source
-- Use the Hugo Modules feature
-
-Dart Sass is required to transpile Sass to CSS when using the latest features of the Sass language.
-
-Please refer to the relevant documentation for installation instructions:
-
-- [Git][git install]
-- [Go][go install]
-- [Dart Sass][dart sass install]
-
-[cloudcannon]: https://cloudcannon.com/
-[cloudflare pages]: https://pages.cloudflare.com/
-[dart sass install]: /functions/css/sass/#dart-sass
-[dart sass]: https://sass-lang.com/dart-sass
-[git install]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-[git]: https://git-scm.com/
-[github pages]: https://pages.github.com/
-[gitlab pages]: https://docs.gitlab.com/ee/user/project/pages/
-[go install]: https://go.dev/doc/install
-[go]: https://go.dev/
-[netlify]: https://www.netlify.com/
diff --git a/content/en/installation/_common/03-prebuilt-binaries.md b/content/en/installation/_common/03-prebuilt-binaries.md
deleted file mode 100644 (file)
index 34411cd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-## Prebuilt binaries
-
-Prebuilt binaries are available for a variety of operating systems and architectures. Visit the [latest release] page, and scroll down to the Assets section.
-
-1. Download the archive for the desired edition, operating system, and architecture
-1. Extract the archive
-1. Move the executable to the desired directory
-1. Add this directory to the PATH environment variable
-1. Verify that you have _execute_ permission on the file
-
-Please consult your operating system documentation if you need help setting file permissions or modifying your PATH environment variable.
-
-If you do not see a prebuilt binary for the desired edition, operating system, and architecture, install Hugo using one of the methods described below.
-
-[commit information]: /methods/page/gitinfo/
-[Git]: https://git-scm.com/
-[Go]: https://go.dev/
-[Hugo Modules]: /hugo-modules/
-[latest release]: https://github.com/gohugoio/hugo/releases/latest
diff --git a/content/en/installation/_common/04-build-from-source.md b/content/en/installation/_common/04-build-from-source.md
deleted file mode 100644 (file)
index b3039d1..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-## Build from source
-
-To build the extended or extended/deploy edition from source you must:
-
-1. Install [Git]
-1. Install [Go] version 1.20 or later
-1. Install a C compiler, either [GCC] or [Clang]
-1. Update your `PATH` environment variable as described in the [Go documentation]
-
-> The install directory is controlled by the `GOPATH` and `GOBIN` environment variables. If `GOBIN` is set, binaries are installed to that directory. If `GOPATH` is set, binaries are installed to the bin subdirectory of the first directory in the `GOPATH` list. Otherwise, binaries are installed to the bin subdirectory of the default `GOPATH` (`$HOME/go` or `%USERPROFILE%\go`).
-
-To build the standard edition:
-
-```sh
-go install github.com/gohugoio/hugo@latest
-```
-
-To build the extended edition:
-
-```sh
-CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest
-```
-
-To build the extended/deploy edition:
-
-```sh
-CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest
-```
-
-[Clang]: https://clang.llvm.org/
-[GCC]: https://gcc.gnu.org/
-[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-[Go documentation]: https://go.dev/doc/code#Command
-[Go]: https://go.dev/doc/install
diff --git a/content/en/installation/_common/_index.md b/content/en/installation/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/installation/_common/homebrew.md b/content/en/installation/_common/homebrew.md
deleted file mode 100644 (file)
index 14f4817..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-### Homebrew
-
-[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended edition of Hugo:
-
-```sh
-brew install hugo
-```
-
-[Homebrew]: https://brew.sh/
index 69b3e197ed533d56af655ca65aa2d528fe263852..fdcb8f9eb8fe893bbe5414d8f378b8f436d0684f 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Installation
-
 description: Install Hugo on macOS, Linux, Windows, BSD, and on any machine that can run the Go compiler tool chain.
-aliases: [/getting-started/installing/]
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: installation-in-this-section
-    parent: installation
-    weight: 10
 weight: 10
+aliases: [/getting-started/installing/]
 ---
-
-Install Hugo on macOS, Linux, Windows, BSD, and on any machine that can run the Go compiler tool chain.
index 1b2589c75d845eea157d8c647a21c4cd9db4373a..2f6519e6defd9dc74ff5676df35166d7de280070 100644 (file)
@@ -1,25 +1,20 @@
 ---
 title: BSD
 description: Install Hugo on BSD derivatives.
-categories: [installation]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: installation
-    weight: 50
-weight: 50
-toc: true
+weight: 40
 ---
 
 ## Editions
 
-{{% include "installation/_common/01-editions.md" %}}
+{{% include "/_common/installation/01-editions.md" %}}
 
 Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition.
 
-{{% include "installation/_common/02-prerequisites.md" %}}
+{{% include "/_common/installation/02-prerequisites.md" %}}
 
-{{% include "installation/_common/03-prebuilt-binaries.md" %}}
+{{% include "/_common/installation/03-prebuilt-binaries.md" %}}
 
 ## Repository packages
 
@@ -67,7 +62,7 @@ doas pkg_add hugo
 
 [OpenBSD]: https://www.openbsd.org/
 
-{{% include "installation/_common/04-build-from-source.md" %}}
+{{% include "/_common/installation/04-build-from-source.md" %}}
 
 ## Comparison
 
index ba59d0f2a7707d5cd721abc85e5b3db1951aa2a1..731cfce4c46ce77c6819daada7e24f40c5d1e7fd 100644 (file)
@@ -1,25 +1,20 @@
 ---
 title: Linux
 description: Install Hugo on Linux.
-categories: [installation]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: installation
-    weight: 30
-weight: 30
-toc: true
+weight: 20
 ---
 
 ## Editions
 
-{{% include "installation/_common/01-editions.md" %}}
+{{% include "/_common/installation/01-editions.md" %}}
 
 Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition.
 
-{{% include "installation/_common/02-prerequisites.md" %}}
+{{% include "/_common/installation/02-prerequisites.md" %}}
 
-{{% include "installation/_common/03-prebuilt-binaries.md" %}}
+{{% include "/_common/installation/03-prebuilt-binaries.md" %}}
 
 ## Package managers
 
@@ -27,7 +22,7 @@ Unless your specific deployment needs require the extended/deploy edition, we re
 
 [Snap] is a free and open-source package manager for Linux. Available for [most distributions], snap packages are simple to install and are automatically updated.
 
-The Hugo snap package is [strictly confined]. Strictly confined snaps run in complete isolation, up to a minimal access level thats deemed always safe. The sites you create and build must be located within your home directory, or on removable media.
+The Hugo snap package is [strictly confined]. Strictly confined snaps run in complete isolation, up to a minimal access level that's deemed always safe. The sites you create and build must be located within your home directory, or on removable media.
 
 To install the extended edition of Hugo:
 
@@ -49,23 +44,16 @@ sudo snap connect hugo:ssh-keys
 sudo snap disconnect hugo:ssh-keys
 ```
 
-[most distributions]: https://snapcraft.io/docs/installing-snapd
-[strictly confined]: https://snapcraft.io/docs/snap-confinement
-[Snap]: https://snapcraft.io/
-
-{{% include "installation/_common/homebrew.md" %}}
+{{% include "/_common/installation/homebrew.md" %}}
 
 ## Repository packages
 
 Most Linux distributions maintain a repository for commonly installed applications.
 
-{{% note %}}
-The Hugo version available in package repositories varies based on Linux distribution and release, and in some cases will not be the [latest version].
-
-Use one of the other installation methods if your package repository does not provide the desired version.
-
-[latest version]: https://github.com/gohugoio/hugo/releases/latest
-{{% /note %}}
+> [!note]
+> The Hugo version available in package repositories varies based on Linux distribution and release, and in some cases will not be the [latest version].
+>
+> Use one of the other installation methods if your package repository does not provide the desired version.
 
 ### Alpine Linux
 
@@ -75,8 +63,6 @@ To install the extended edition of Hugo on [Alpine Linux]:
 doas apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community hugo
 ```
 
-[Alpine Linux]: https://alpinelinux.org/
-
 ### Arch Linux
 
 Derivatives of the [Arch Linux] distribution of Linux include [EndeavourOS], [Garuda Linux], [Manjaro], and others. To install the extended edition of Hugo:
@@ -85,11 +71,6 @@ Derivatives of the [Arch Linux] distribution of Linux include [EndeavourOS], [Ga
 sudo pacman -S hugo
 ```
 
-[Arch Linux]: https://archlinux.org/
-[EndeavourOS]: https://endeavouros.com/
-[Manjaro]: https://manjaro.org/
-[Garuda Linux]: https://garudalinux.org/
-
 ### Debian
 
 Derivatives of the [Debian] distribution of Linux include [elementary OS], [KDE neon], [Linux Lite], [Linux Mint], [MX Linux], [Pop!_OS], [Ubuntu], [Zorin OS], and others. To install the extended edition of Hugo:
@@ -100,33 +81,22 @@ sudo apt install hugo
 
 You can also download Debian packages from the [latest release] page.
 
-[Debian]: https://www.debian.org/
-[Exherbo]: https://www.exherbolinux.org/
-[elementary OS]: https://elementary.io/
-[KDE neon]: https://neon.kde.org/
-[Linux Lite]: https://www.linuxliteos.com/
-[Linux Mint]: https://linuxmint.com/
-[MX Linux]: https://mxlinux.org/
-[Pop!_OS]: https://pop.system76.com/
-[Ubuntu]: https://ubuntu.com/
-[Zorin OS]: https://zorin.com/os/
-
 ### Exherbo
 
 To install the extended edition of Hugo on [Exherbo]:
 
 1. Add this line to /etc/paludis/options.conf:
 
-   ```text
-   www-apps/hugo extended
-   ```
+    ```text
+    www-apps/hugo extended
+    ```
 
 1. Install using the Paludis package manager:
 
-   ```sh
-   cave resolve -x repository/heirecka
-   cave resolve -x hugo
-   ```
+    ```sh
+    cave resolve -x repository/heirecka
+    cave resolve -x hugo
+    ```
 
 ### Fedora
 
@@ -136,10 +106,6 @@ Derivatives of the [Fedora] distribution of Linux include [CentOS], [Red Hat Ent
 sudo dnf install hugo
 ```
 
-[CentOS]: https://www.centos.org/
-[Fedora]: https://getfedora.org/
-[Red Hat Enterprise Linux]: https://www.redhat.com/
-
 ### Gentoo
 
 Derivatives of the [Gentoo] distribution of Linux include [Calculate Linux], [Funtoo], and others. To install the extended edition of Hugo:
@@ -156,11 +122,6 @@ Derivatives of the [Gentoo] distribution of Linux include [Calculate Linux], [Fu
     sudo emerge www-apps/hugo
     ```
 
-[Calculate Linux]: https://www.calculate-linux.org/
-[Funtoo]: https://www.funtoo.org/
-[Gentoo]: https://www.gentoo.org/
-[USE]: https://packages.gentoo.org/packages/www-apps/hugo
-
 ### NixOS
 
 The NixOS distribution of Linux includes Hugo in its package repository. To install the extended edition of Hugo:
@@ -177,10 +138,6 @@ Derivatives of the [openSUSE] distribution of Linux include [GeckoLinux], [Linux
 sudo zypper install hugo
 ```
 
-[GeckoLinux]: https://geckolinux.github.io/
-[Linux Karmada]: https://linuxkamarada.com/
-[openSUSE]: https://www.opensuse.org/
-
 ### Solus
 
 The [Solus] distribution of Linux includes Hugo in its package repository. To install the extended edition of Hugo:
@@ -189,8 +146,6 @@ The [Solus] distribution of Linux includes Hugo in its package repository. To in
 sudo eopkg install hugo
 ```
 
-[Solus]: https://getsol.us/
-
 ### Void Linux
 
 To install the extended edition of Hugo on [Void Linux]:
@@ -199,9 +154,7 @@ To install the extended edition of Hugo on [Void Linux]:
 sudo xbps-install -S hugo
 ```
 
-[Void Linux]: https://voidlinux.org/
-
-{{% include "installation/_common/04-build-from-source.md" %}}
+{{% include "/_common/installation/04-build-from-source.md" %}}
 
 ## Comparison
 
@@ -215,3 +168,35 @@ Latest version available?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_ch
 
 [^1]: Easy if a previous version is still installed.
 [^2]: Snap packages are automatically updated. Homebrew requires advanced configuration.
+
+[Alpine Linux]: https://alpinelinux.org/
+[Arch Linux]: https://archlinux.org/
+[Calculate Linux]: https://www.calculate-linux.org/
+[CentOS]: https://www.centos.org/
+[Debian]: https://www.debian.org/
+[elementary OS]: https://elementary.io/
+[EndeavourOS]: https://endeavouros.com/
+[Exherbo]: https://www.exherbolinux.org/
+[Fedora]: https://getfedora.org/
+[Funtoo]: https://www.funtoo.org/
+[Garuda Linux]: https://garudalinux.org/
+[GeckoLinux]: https://geckolinux.github.io/
+[Gentoo]: https://www.gentoo.org/
+[KDE neon]: https://neon.kde.org/
+[latest version]: https://github.com/gohugoio/hugo/releases/latest
+[Linux Karmada]: https://linuxkamarada.com/
+[Linux Lite]: https://www.linuxliteos.com/
+[Linux Mint]: https://linuxmint.com/
+[Manjaro]: https://manjaro.org/
+[most distributions]: https://snapcraft.io/docs/installing-snapd
+[MX Linux]: https://mxlinux.org/
+[openSUSE]: https://www.opensuse.org/
+[Pop!_OS]: https://pop.system76.com/
+[Red Hat Enterprise Linux]: https://www.redhat.com/
+[Snap]: https://snapcraft.io/
+[Solus]: https://getsol.us/
+[strictly confined]: https://snapcraft.io/docs/snap-confinement
+[Ubuntu]: https://ubuntu.com/
+[USE]: https://packages.gentoo.org/packages/www-apps/hugo
+[Void Linux]: https://voidlinux.org/
+[Zorin OS]: https://zorin.com/os/
index dace545db4043944975df0c49c48cfed5c17d860..a873b512a4fe51b0a98b9af61bbaabc5caf6393e 100644 (file)
@@ -1,29 +1,24 @@
 ---
 title: macOS
 description: Install Hugo on macOS.
-categories: [installation]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: installation
-    weight: 20
-weight: 20
-toc: true
+weight: 10
 ---
 
 ## Editions
 
-{{% include "installation/_common/01-editions.md" %}}
+{{% include "/_common/installation/01-editions.md" %}}
 
 Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition.
 
-{{% include "installation/_common/02-prerequisites.md" %}}
+{{% include "/_common/installation/02-prerequisites.md" %}}
 
-{{% include "installation/_common/03-prebuilt-binaries.md" %}}
+{{% include "/_common/installation/03-prebuilt-binaries.md" %}}
 
 ## Package managers
 
-{{% include "installation/_common/homebrew.md" %}}
+{{% include "/_common/installation/homebrew.md" %}}
 
 ### MacPorts
 
@@ -35,7 +30,7 @@ sudo port install hugo
 
 [MacPorts]: https://www.macports.org/
 
-{{% include "installation/_common/04-build-from-source.md" %}}
+{{% include "/_common/installation/04-build-from-source.md" %}}
 
 ## Comparison
 
index e66878d708b69f115ff1cec6ee87b148f34dca3d..a5920d45f6dec8aa96a572571d252193747b6bce 100644 (file)
@@ -1,29 +1,23 @@
 ---
 title: Windows
 description: Install Hugo on Windows.
-categories: [installation]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: installation
-    weight: 40
-weight: 40
-toc: true
+weight: 30
 ---
 
-{{% note %}}
-Hugo v0.121.1 and later require at least Windows 10 or Windows Server 2016.
-{{% /note %}}
+> [!note]
+> Hugo v0.121.1 and later require at least Windows 10 or Windows Server 2016.
 
 ## Editions
 
-{{% include "installation/_common/01-editions.md" %}}
+{{% include "/_common/installation/01-editions.md" %}}
 
 Unless your specific deployment needs require the extended/deploy edition, we recommend the extended edition.
 
-{{% include "installation/_common/02-prerequisites.md" %}}
+{{% include "/_common/installation/02-prerequisites.md" %}}
 
-{{% include "installation/_common/03-prebuilt-binaries.md" %}}
+{{% include "/_common/installation/03-prebuilt-binaries.md" %}}
 
 ## Package managers
 
@@ -35,8 +29,6 @@ Unless your specific deployment needs require the extended/deploy edition, we re
 choco install hugo-extended
 ```
 
-[Chocolatey]: https://chocolatey.org/
-
 ### Scoop
 
 [Scoop] is a free and open-source package manager for Windows. To install the extended edition of Hugo:
@@ -45,8 +37,6 @@ choco install hugo-extended
 scoop install hugo-extended
 ```
 
-[Scoop]: https://scoop.sh/
-
 ### Winget
 
 [Winget] is Microsoft's official free and open-source package manager for Windows. To install the extended edition of Hugo:
@@ -61,13 +51,10 @@ To uninstall the extended edition of Hugo:
 winget uninstall --name "Hugo (Extended)"
 ```
 
-[Winget]: https://learn.microsoft.com/en-us/windows/package-manager/
-
-{{% include "installation/_common/04-build-from-source.md" %}}
+{{% include "/_common/installation/04-build-from-source.md" %}}
 
-{{% note %}}
-See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
-{{% /note %}}
+> [!note]
+> See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
 
 ## Comparison
 
@@ -81,3 +68,7 @@ Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mar
 
 [^1]: Possible but requires advanced configuration.
 [^2]: Easy if a previous version is still installed.
+
+[Chocolatey]: https://chocolatey.org/
+[Scoop]: https://scoop.sh/
+[Winget]: https://learn.microsoft.com/en-us/windows/package-manager/
index e45f2fef7fc78a930ced54da097a65d29ef95cb6..39f2b614607fd4a733a4c741d46f38c34d03c1e1 100644 (file)
@@ -1,17 +1,8 @@
 ---
 title: Methods
-
 description: Use these methods within your templates.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: methods-in-this-section
-    parent: methods
-    weight: 10
 weight: 10
-showSectionMenu: true
 aliases: ['/variables/']
 ---
-
-Use these methods within your templates.
index d035f97b669a97d48b3318d298b3a0bb78f5e6fc..2e85797ea0fde21e249ce7f1c1a6dfa2b06a8ac7 100644 (file)
@@ -3,12 +3,10 @@ title: Abs
 description: Returns the absolute value of the given time.Duration value.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: time.Duration
-  signatures: [DURATION.Abs]
+params:
+  functions_and_methods:
+    returnType: time.Duration
+    signatures: [DURATION.Abs]
 ---
 
 ```go-html-template
index 5b2d893b961ab2cc3fe73cd64e82ae732d874117..23655510e1f5ced3bafff28751e5d8c23bcd4913 100644 (file)
@@ -3,12 +3,10 @@ title: Hours
 description: Returns the time.Duration value as a floating point number of hours.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: float64
-  signatures: [DURATION.Hours]
+params:
+  functions_and_methods:
+    returnType: float64
+    signatures: [DURATION.Hours]
 ---
 
 ```go-html-template
index c8b210c94beec40595f6151c50f742ca4eb6aa30..c090316d028e09a72a9ac686645b149ee2e7f4fd 100644 (file)
@@ -3,12 +3,10 @@ title: Microseconds
 description: Returns the time.Duration value as an integer microsecond count.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: int64
-  signatures: [DURATION.Microseconds]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [DURATION.Microseconds]
 ---
 
 ```go-html-template
index 32809027aebfd84c77632047d9a7a33d731fd6be..288f3695a6c041be5c8fba1fcd5a6169c5cb1b9a 100644 (file)
@@ -3,12 +3,10 @@ title: Milliseconds
 description: Returns the time.Duration value as an integer millisecond count.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: int64
-  signatures: [DURATION.Milliseconds]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [DURATION.Milliseconds]
 ---
 
 ```go-html-template
index d3e57fba55633500bfea0090c1a08114434bdc0d..aec904fa790b02751b0adf44e9d939ebd4397951 100644 (file)
@@ -3,12 +3,10 @@ title: Minutes
 description: Returns the time.Duration value as a floating point number of minutes.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: float64
-  signatures: [DURATION.Minutes]
+params:
+  functions_and_methods:
+    returnType: float64
+    signatures: [DURATION.Minutes]
 ---
 
 ```go-html-template
index 66d2981f22fd54e4020800467f33564ee40ef08c..fd1b9e4969b55cce43b0a4fa20c16829b38ee5e4 100644 (file)
@@ -3,12 +3,10 @@ title: Nanoseconds
 description: Returns the time.Duration value as an integer nanosecond count.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: int64
-  signatures: [DURATION.Nanoseconds]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [DURATION.Nanoseconds]
 ---
 
 ```go-html-template
index 0722a60760a9a9089d161c5a9a1630737eb10ed4..dfd06253f9ffc1ccda9d5499c735372dd217b513 100644 (file)
@@ -3,12 +3,10 @@ title: Round
 description: Returns the result of rounding DURATION1 to the nearest multiple of DURATION2.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType:
-  signatures: [DURATION1.Round DURATION2]
+params:
+  functions_and_methods:
+    returnType:
+    signatures: [DURATION1.Round DURATION2]
 ---
 
 ```go-html-template
index d23d5ec15e8a710a5c22a89f9c072c0474834f1b..8b6d060b9ca451247c1d4ccf479564d36aab0231 100644 (file)
@@ -3,12 +3,10 @@ title: Seconds
 description: Returns the time.Duration value as a floating point number of seconds.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: float64
-  signatures: [DURATION.Seconds]
+params:
+  functions_and_methods:
+    returnType: float64
+    signatures: [DURATION.Seconds]
 ---
 
 ```go-html-template
index 78cddc27a94b6fc581138bb299d82464481e4c7a..5a785a77a550224e6491d39c5fa062ceae52b71c 100644 (file)
@@ -3,12 +3,10 @@ title: Truncate
 description: Returns the result of rounding DURATION1 toward zero to a multiple of DURATION2.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: time.Duration
-  signatures: [DURATION1.Truncate DURATION2]
+params:
+  functions_and_methods:
+    returnType: time.Duration
+    signatures: [DURATION1.Truncate DURATION2]
 ---
 
 ```go-html-template
index 9fc4f814ccd887dd7df0f7cfb6ca7c53fd932156..aeb113820c38deeae7fa15bd615a77ae59876cee 100644 (file)
@@ -4,9 +4,4 @@ linkTitle: Duration
 description: Use these methods with time.Duration values.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 ---
-
-Use these methods with time.Duration values.
index ad671b2d03db8c16270d32bfddabd06caba2a9ca..ecad415fa0d8bf67a153b2971d3875f7f7bda6e0 100644 (file)
@@ -3,11 +3,10 @@ title: Children
 description: Returns a collection of child menu entries, if any, under the given menu entry.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/menu-entry/HasChildren
-  returnType: navigation.Menu
-  signatures: [MENUENTRY.Children]
+params:
+  functions_and_methods:
+    returnType: navigation.Menu
+    signatures: [MENUENTRY.Children]
 ---
 
 Use the `Children` method when rendering a nested menu.
index fac03b7aedb36b7017c30a7bdb1344fd4be57a21..03e6cb672fccf6f829c68a91edd63dd0cf638149 100644 (file)
@@ -3,11 +3,10 @@ title: HasChildren
 description: Reports whether the given menu entry has child menu entries.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/menu-entry/Children
-  returnType: bool
-  signatures: [MENUENTRY.HasChildren]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [MENUENTRY.HasChildren]
 ---
 
 Use the `HasChildren` method when rendering a nested menu.
index ba8b77eceb8319d90aab676a7d719e822aa5e558..809624459c44caf573dd7d8cee28d55218b70525 100644 (file)
@@ -1,18 +1,16 @@
 ---
 title: Identifier
-description: Returns the `identifier` property of the given menu entry. 
+description: Returns the `identifier` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.Identifier]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.Identifier]
 ---
 
 The `Identifier` method returns the `identifier` property of the menu entry. If you define the menu entry [automatically], it returns the page's section.
 
-[automatically]: /content-management/menus/#define-automatically
-
 {{< code-toggle file=hugo >}}
 [[menus.main]]
 identifier = 'about'
@@ -37,8 +35,7 @@ This example uses the `Identifier` method when querying the translation table on
 </ul>
 ```
 
-{{% note %}}
-In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables.
+> [!note]
+In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables.
 
-[details]: /content-management/menus/#properties-front-matter
-{{% /note %}}
+[automatically]: /content-management/menus/#define-automatically
index 409cb31d646ca8e7de948b3e3ddb481d839ada16..d614a5a870cb3e60c9fc823d038874cc33632d51 100644 (file)
@@ -1,12 +1,12 @@
 ---
 title: KeyName
-description: Returns the `identifier` property of the given menu entry, falling back to its `name` property. 
+description: Returns the `identifier` property of the given menu entry, falling back to its `name` property.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.KeyName]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.KeyName]
 ---
 
 In this menu definition, the second entry does not contain an `identifier`, so the `Identifier` method returns its `name` property instead:
index 79b400f1fd0dd89e922f09ca8c947cc1b7d3bcf1..074911eeb13c9f383c2055f8e7981915e49f2cb1 100644 (file)
@@ -3,12 +3,10 @@ title: Menu
 description: Returns the identifier of the menu that contains the given menu entry.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsMenuCurrent
-    - methods/page/HasMenuCurrent
-  returnType: string
-  signatures: [MENUENTRY.Menu]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.Menu]
 ---
 
 ```go-html-template
index fb5fc1b5bdca1419d836d7875de22ec65f954744..706d0f8c848d4b50ecfd16aedc7a021db29a2139 100644 (file)
@@ -3,15 +3,15 @@ title: Name
 description: Returns the `name` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.Name]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.Name]
 ---
 
 If you define the menu entry [automatically], the `Name` method returns the page's [`LinkTitle`], falling back to its [`Title`].
 
-If you define the menu entry [in front matter] or [in site configuration], the `Name` method returns the `name` property of the given menu entry. If the `name` is not defined, and the menu entry resolves to a page, the `Name`  returns the page [`LinkTitle`], falling back to its [`Title`].
+If you define the menu entry [in front matter] or [in site configuration], the `Name` method returns the `name` property of the given menu entry. If the `name` is not defined, and the menu entry resolves to a page, the `Name` returns the page [`LinkTitle`], falling back to its [`Title`].
 
 [`LinkTitle`]: /methods/page/linktitle/
 [`Title`]: /methods/page/title/
index d177a1af0be359be3aa4bd9008531f9249a8934d..489ee7accbac7dfbd91f8eca1a8a6dedd5cd1992 100644 (file)
@@ -3,10 +3,10 @@ title: Page
 description: Returns the Page object associated with the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Page
-  signatures: [MENUENTRY.Page]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [MENUENTRY.Page]
 ---
 
 Regardless of how you [define menu entries], an entry associated with a page has access to its [methods].
index 368579796647f85bad5fcb193294a014146b274e..979879b035690dc7a9f66cc9ba8dedb4fd700995 100644 (file)
@@ -3,12 +3,10 @@ title: PageRef
 description: Returns the `pageRef` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related:
-    - /methods/menu-entry/URL
-  returnType: string
-  signatures: [MENUENTRY.PageRef]
-toc: true
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.PageRef]
 ---
 
 The use case for this method is rare.
@@ -31,28 +29,15 @@ If a matching page is not found:
 - The [`Page`] method returns nil
 - The [`HasMenuCurrent`] and [`IsMenuCurrent`] methods on a `Page` object return `false`
 
-{{% note %}}
-In almost also scenarios you should use the [`URL`] method instead.
-
-[`URL`]: /methods/menu-entry/url/
-{{% /note %}}
-
-[defining a menu entry]: /content-management/menus/#define-in-site-configuration
-[`Page`]: /methods/menu-entry/page/
-[`URL`]: /methods/menu-entry/url/
-[`IsMenuCurrent`]: /methods/page/ismenucurrent/
-[`HasMenuCurrent`]: /methods/page/hasmenucurrent/
-[`RelPermalink`]: /methods/page/relpermalink/
+> [!note]
+> In almost also scenarios you should use the [`URL`] method instead.
 
 ## Example
 
 This example is contrived.
 
-{{% note %}}
-In almost also scenarios you should use the [`URL`] method instead.
-
-[`URL`]: /methods/menu-entry/url/
-{{% /note %}}
+> [!note]
+> In almost also scenarios you should use the [`URL`] method instead.
 
 Consider this content structure:
 
@@ -77,13 +62,13 @@ weight = 20
 
 With this template code:
 
-{{< code file=layouts/partials/menu.html >}}
+```go-html-template {file="layouts/partials/menu.html"}
 <ul>
   {{ range .Site.Menus.main }}
     <li><a href="{{ .URL }}">{{ .Name }}</a></li>
   {{ end }}
 </ul>
-{{< /code >}}
+```
 
 Hugo render this HTML:
 
@@ -98,13 +83,13 @@ In the above note that the `href` attribute of the second `anchor` element is bl
 
 With this template code:
 
-{{< code file=layouts/partials/menu.html >}}
+```go-html-template {file="layouts/partials/menu.html"}
 <ul>
   {{ range .Site.Menus.main }}
     <li><a href="{{ or .URL .PageRef }}">{{ .Name }}</a></li>
   {{ end }}
 </ul>
-{{< /code >}}
+```
 
 Hugo renders this HTML:
 
@@ -116,3 +101,9 @@ Hugo renders this HTML:
 ```
 
 In the above note that Hugo populates the `href` attribute of the second `anchor` element with the `pageRef` property as defined in the site configuration because the template code falls back to the `PageRef` method.
+
+[`HasMenuCurrent`]: /methods/page/hasmenucurrent/
+[`IsMenuCurrent`]: /methods/page/ismenucurrent/
+[`Page`]: /methods/menu-entry/page/
+[`URL`]: /methods/menu-entry/url/
+[defining a menu entry]: /content-management/menus/#define-in-site-configuration
index 4d3e8bdaf2ed12951fc070f63f53e1284b952fc0..20c4f7fc73154929e03c1408dcc41fe643182073 100644 (file)
@@ -3,10 +3,10 @@ title: Params
 description: Returns the `params` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: maps.Params
-  signatures: [MENUENTRY.Params]
+params:
+  functions_and_methods:
+    returnType: maps.Params
+    signatures: [MENUENTRY.Params]
 ---
 
 When you define menu entries [in site configuration] or [in front matter], you can include a `params` key to attach additional information to the entry. For example:
index af1b4afe62df45d0c8c2affe61f8dd2d5b5b99a4..7c617527b9a87123d0fd7595782b09222ed33b81 100644 (file)
@@ -3,10 +3,10 @@ title: Parent
 description: Returns the `parent` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.Parent]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.Parent]
 ---
 
 With this menu definition:
@@ -40,7 +40,7 @@ This template renders the nested menu, listing the `parent` property next each o
       {{ if .HasChildren }}
         <ul>
           {{ range .Children }}
-            <li><a href="{{ .URL }}">{{ .Name }}</a> ({{ .Parent  }})</li>
+            <li><a href="{{ .URL }}">{{ .Name }}</a> ({{ .Parent }})</li>
           {{ end }}
         </ul>
       {{ end }}
index b2fa2da5becf69b1f33aacd626cf56a929d0ac83..2da8c38d8a1d33bacebf00d6d18340ccadffb053 100644 (file)
@@ -1,13 +1,12 @@
 ---
 title: Post
-description: Returns the `post` property of the given menu entry. 
+description: Returns the `post` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/menu-entry/Pre
-  returnType: template.HTML
-  signatures: [MENUENTRY.Post]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [MENUENTRY.Post]
 ---
 
-{{% include "methods/menu-entry/_common/pre-post.md" %}}
+{{% include "/_common/menu-entries/pre-and-post.md" %}}
index df7c8f16e124c3eda875edec0dd7904fc4842182..19af243e7fc1a0c38d322b5f821462c16752e77f 100644 (file)
@@ -1,13 +1,12 @@
 ---
 title: Pre
-description:  Returns the `pre` property of the given menu entry. 
+description: Returns the `pre` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/menu-entry/Post
-  returnType: template.HTML
-  signatures: [MENUENTRY.Pre]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [MENUENTRY.Pre]
 ---
 
-{{% include "methods/menu-entry/_common/pre-post.md" %}}
+{{% include "/_common/menu-entries/pre-and-post.md" %}}
index 64bba2d441c6f89a2d4fe2a5e98c2c0afb6fed3e..526132d7c149c1fcb7e8875ad5ca7fa9529700e4 100644 (file)
@@ -1,15 +1,15 @@
 ---
 title: Title
-description: Returns the `title` property of the given menu entry.  
+description: Returns the `title` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.Title]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.Title]
 ---
 
-The `Title` method returns the `title` property of the given menu entry. If the `title` is not defined, and the menu entry resolves to a page, the `Title`  returns the page [`Title`].
+The `Title` method returns the `title` property of the given menu entry. If the `title` is not defined, and the menu entry resolves to a page, the `Title` returns the page [`Title`].
 
 [`Title`]: /methods/page/title/
 
index 47db9153e82c6c3e36f151dc1900ea3f322c0ab6..e29a6f058d0a3238a5fe471e4845eb3c58e487dd 100644 (file)
@@ -3,10 +3,10 @@ title: URL
 description: Returns the relative permalink of the page associated with the given menu entry, else its `url` property.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [MENUENTRY.URL]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [MENUENTRY.URL]
 ---
 
 For menu entries associated with a page, the `URL` method returns the page's [`RelPermalink`], otherwise it returns the entry's `url` property.
index eab9357368ce64fd7c8f9d8daf4ea41fe750640f..b96e2cc870cd52bf39049deee62d426f87d13004 100644 (file)
@@ -1,17 +1,17 @@
 ---
 title: Weight
-description:  Returns the `weight` property of the given menu entry.   
+description: Returns the `weight` property of the given menu entry.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [MENUENTRY.Weight]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [MENUENTRY.Weight]
 ---
 
-If you define the menu entry [automatically], the `Weight` method returns the pages [`Weight`].
+If you define the menu entry [automatically], the `Weight` method returns the page's [`Weight`].
 
-If you define the menu entry [in front matter] or [in site configuration], the `Weight` method returns the `weight` property, falling back to the pages `Weight`.
+If you define the menu entry [in front matter] or [in site configuration], the `Weight` method returns the `weight` property, falling back to the page's `Weight`.
 
 [`Weight`]: /methods/page/weight/
 [automatically]: /content-management/menus/#define-automatically
diff --git a/content/en/methods/menu-entry/_common/_index.md b/content/en/methods/menu-entry/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/methods/menu-entry/_common/pre-post.md b/content/en/methods/menu-entry/_common/pre-post.md
deleted file mode 100644 (file)
index da3d584..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-In this site configuration we enable rendering of [emoji shortcodes], and add emoji shortcodes before (pre) and after (post) each menu entry:
-
-{{< code-toggle file=hugo >}}
-enableEmoji = true
-
-[[menus.main]]
-name = 'About'
-pageRef = '/about'
-post = ':point_left:'
-pre = ':point_right:'
-weight = 10
-
-[[menus.main]]
-name = 'Contact'
-pageRef = '/contact'
-post = ':arrow_left:'
-pre = ':arrow_right:'
-weight = 20
-{{< /code-toggle >}}
-
-To render the menu:
-
-```go-html-template
-<ul>
-  {{ range .Site.Menus.main }}
-    <li>
-      {{ .Pre | markdownify }}
-      <a href="{{ .URL }}">{{ .Name }}</a>
-      {{ .Post | markdownify }}
-    </li>
-  {{ end }}
-</ul>
-```
-
-[emoji shortcodes]: /quick-reference/emojis/
index d89663593bf6532c52bfeecf3273fb4ad6f0ffaf..129e9bcdce23835682a2cf0d7e9c004b1a089041 100644 (file)
@@ -4,9 +4,4 @@ linkTitle: Menu entry
 description: Use these methods in your menu templates.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 ---
-
-Use these methods in your menu templates.
index 2e28016b6a15de74f10033cdb483d04aa874305d..d98a4aced3a7ff3e38d3a65aed2652fef435863b 100644 (file)
@@ -3,10 +3,10 @@ title: ByName
 description: Returns the given menu with its entries sorted by name.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: navigation.Menu
-  signatures: [MENU.ByName]
+params:
+  functions_and_methods:
+    returnType: navigation.Menu
+    signatures: [MENU.ByName]
 ---
 
 The `Sort` method returns the given menu with its entries sorted by `name`.
index 7ba27031a015a3ac6b35861b1c79367700cc12bf..013d37e1311efa7875476735b0f5b2fe9b67a03d 100644 (file)
@@ -3,10 +3,10 @@ title: ByWeight
 description: Returns the given menu with its entries sorted by weight, then by name, then by identifier.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: navigation.Menu
-  signatures: [MENU.ByWeight]
+params:
+  functions_and_methods:
+    returnType: navigation.Menu
+    signatures: [MENU.ByWeight]
 ---
 
 The `ByWeight` method returns the given menu with its entries sorted by [`weight`](g), then by `name`, then by `identifier`. This is the default sort order.
@@ -53,11 +53,8 @@ Hugo renders this to:
 </ul>
 ```
 
-{{% note %}}
-In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables.
-
-[details]: /content-management/menus/#properties-front-matter
-{{% /note %}}
+> [!note]
+> In the menu definition above, note that the `identifier` property is only required when two or more menu entries have the same name, or when localizing the name using translation tables.
 
 You can also sort menu entries using the [`sort`] function. For example, to sort by `weight` in descending order:
 
index 23a523dbd96f1809d19be686676d03f60c150a3f..005fef1444081dcf9df0de5565fb5f7d353511b5 100644 (file)
@@ -3,10 +3,10 @@ title: Limit
 description: Returns the given menu, limited to the first N entries.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: navigation.Menu
-  signatures: [MENU.Limit N]
+params:
+  functions_and_methods:
+    returnType: navigation.Menu
+    signatures: [MENU.Limit N]
 ---
 
 The `Limit` method returns the given menu, limited to the first N entries.
index a3fe09dce3071bed439e5290125c2fd5c3f34a36..1ee31aa512080b95d5d0b737f91e16e70f1b3ebb 100644 (file)
@@ -3,10 +3,10 @@ title: Reverse
 description: Returns the given menu, reversing the sort order of its entries.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: navigation.Menu
-  signatures: [MENU.Reverse]
+params:
+  functions_and_methods:
+    returnType: navigation.Menu
+    signatures: [MENU.Reverse]
 ---
 
 The `Reverse` method returns the given menu, reversing the sort order of its entries.
index f5b925fd6152fbf7db272f6fec4b69f80e758ed7..41084fdba171dc961563b2cca0c694c883acfa23 100644 (file)
@@ -4,9 +4,4 @@ linkTitle: Menu
 description: Use these methods when ranging through menu entries.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 ---
-
-Use these methods when ranging through menu entries.
index 15e73384b15b50ebf8ad5eb2beae11073af2c49d..775404bd38ce4759b8311a57d59404a7c99e26ee 100644 (file)
@@ -3,10 +3,10 @@ title: Aliases
 description: Returns the URL aliases as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: '[]string'
-  signatures: [PAGE.Aliases]
+params:
+  functions_and_methods:
+    returnType: '[]string'
+    signatures: [PAGE.Aliases]
 ---
 
 The `Aliases` method on a `Page` object returns the URL [aliases] as defined in front matter.
index 51d82d4f9456638f43f6b66808b5216bd20a0e2f..62117b4297c5d71e619489acdf670bd4496e0376 100644 (file)
@@ -1,15 +1,12 @@
 ---
 title: AllTranslations
-description: Returns all translations of the given page, including the current language. 
+description: Returns all translations of the given page, including the current language.
 categories: []
 keywords: []
-action:
-  related:
-   - methods/page/Translations
-   - methods/page/IsTranslated
-   - methods/page/TranslationKey
-  returnType: page.Pages
-  signatures: [PAGE.AllTranslations]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.AllTranslations]
 ---
 
 With this site configuration:
index 03e14e287abd47a8046ef5e91fb5469dd70764f2..c4075d010d5c4efe5c0266c317fe944bc060bce9 100644 (file)
@@ -3,20 +3,19 @@ title: AlternativeOutputFormats
 description: Returns a slice of OutputFormat objects, excluding the current output format, each representing one of the output formats enabled for the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/OutputFormats
-  returnType: page.OutputFormats
-  signatures: [PAGE.AlternativeOutputFormats]
+params:
+  functions_and_methods:
+    returnType: page.OutputFormats
+    signatures: [PAGE.AlternativeOutputFormats]
 ---
 
 {{% glossary-term "output format" %}}
 
-The `AlternativeOutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, excluding the current output format, each representing one of the output formats enabled for the given page.. See&nbsp;[details](/templates/output-formats/).
+The `AlternativeOutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, excluding the current output format, each representing one of the output formats enabled for the given page. See&nbsp;[details](/configuration/output-formats/).
 
 ## Methods
 
-{{% include "methods/page/_common/output-format-methods.md" %}}
+{{% include "/_common/methods/page/output-format-methods.md" %}}
 
 ## Example
 
@@ -29,7 +28,7 @@ Generate a `link` element in the `<head>` of each page for each of the alternati
   {{ if .IsHome }}
     {{ $title = site.Title }}
   {{ end }}
-  {{ range .AlternativeOutputFormats -}}
+  {{ range .AlternativeOutputFormats }}
     {{ printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink $title | safeHTML }}
   {{ end }}
   ...
index 4fb00fc0626de9a9bdab891ecf6ac5a1dc97e03b..d8275cf763630632f764afc80f6216415222e80a 100644 (file)
@@ -1,23 +1,14 @@
 ---
 title: Ancestors
-description: Returns a collection of Page objects, one for each ancestor section of the given page. 
+description: Returns a collection of Page objects, one for each ancestor section of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: page.Pages
-  signatures: [PAGE.Ancestors]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.Ancestors]
 ---
 
-{{% glossary-term section %}}
-
 With this content structure:
 
 ```text
index b7d15ce4c0e9c408dc365cb689d35b37baee6265..e919511dab46dea2e7445afe91acdf8b368cc0c4 100644 (file)
@@ -3,10 +3,10 @@ title: BundleType
 description: Returns the bundle type of the given page, or an empty string if the page is not a page bundle.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [PAGE.BundleType]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.BundleType]
 ---
 
 A page bundle is a directory that encapsulates both content and associated [resources](g). There are two types of page bundles: [leaf bundles](g) and [branch bundles](g). See&nbsp;[details](/content-management/page-bundles/).
index c0baf26ad9d1769af615c061a7cb6fc1da09fafe..00afa754938047d0d3a678c2f8db1c411a3de38f 100644 (file)
@@ -3,11 +3,10 @@ title: CodeOwners
 description: Returns of slice of code owners for the given page, derived from the CODEOWNERS file in the root of the project directory.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/GitInfo
-  returnType: '[]string'
-  signatures: [PAGE.CodeOwners]
+params:
+  functions_and_methods:
+    returnType: '[]string'
+    signatures: [PAGE.CodeOwners]
 ---
 
 GitHub and GitLab support CODEOWNERS files. This file specifies the users responsible for developing and maintaining software and documentation. This definition can apply to the entire repository, specific directories, or to individual files. To learn more:
index 373c6590a38c22382f0bce07acd912c780e5672f..21348ebe67b7887d40461502b140044d771ed60e 100644 (file)
@@ -3,16 +3,10 @@ title: Content
 description: Returns the rendered content of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Summary
-    - methods/page/ContentWithoutSummary
-    - methods/page/RawContent
-    - methods/page/Plain
-    - methods/page/PlainWords
-    - methods/page/RenderShortcodes
-  returnType: template.HTML
-  signatures: [PAGE.Content]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.Content]
 ---
 
 The `Content` method on a `Page` object renders Markdown and shortcodes to HTML.
index 527f5d9629973b917ec7b03c058249c6f4cb419c..4923b1197e56b8bc847f1e31edfc13cc92dd0f1d 100644 (file)
@@ -3,16 +3,10 @@ title: ContentWithoutSummary
 description: Returns the rendered content of the given page, excluding the content summary.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-    - methods/page/Summary
-    - methods/page/RawContent
-    - methods/page/Plain
-    - methods/page/PlainWords
-    - methods/page/RenderShortcodes
-  returnType: template.HTML
-  signatures: [PAGE.ContentWithoutSummary]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.ContentWithoutSummary]
 ---
 
 {{< new-in 0.134.0 />}}
index 1684ee483ec74826d169350f5210fce1188da3d9..93457f13f20bb3c91bd5a1cc87511c07bb4c6ff6 100644 (file)
@@ -3,24 +3,16 @@ title: CurrentSection
 description: Returns the Page object of the section in which the given page resides.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: page.Page
-  signatures: [PAGE.CurrentSection]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.CurrentSection]
 ---
 
 {{% glossary-term section %}}
 
-{{% note %}}
-The current section of a [section page](g), [taxonomy page](g), [term page](g), or the home page, is itself.
-{{% /note %}}
+> [!note]
+> The current section of a [section page](g), [taxonomy page](g), [term page](g), or the home page, is itself.
 
 Consider this content structure:
 
index b3df243c559d9387ad413b40a7053344d784fee0..ae0bdc57f95864e3f4a116bbd51bdd34eb001ccc 100644 (file)
@@ -3,24 +3,18 @@ title: Data
 description: Returns a unique data object for each page kind.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Data
-  signatures: [PAGE.Data]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.Data
+    signatures: [PAGE.Data]
 ---
 
 The `Data` method on a `Page` object returns a unique data object for each [page kind](g).
 
-{{% note %}}
-The `Data` method is only useful within [taxonomy](g) and [term](g) templates.
-
-Themes that are not actively maintained may still use `.Data.Pages` in list templates. Although that syntax remains functional, use one of these methods instead: [`Pages`], [`RegularPages`], or [`RegularPagesRecursive`]
-
-[`Pages`]: /methods/page/pages/
-[`RegularPages`]: /methods/page/regularpages/
-[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
-{{% /note %}}
+> [!note]
+> The `Data` method is only useful within [taxonomy](g) and [term](g) templates.
+>
+> Themes that are not actively maintained may still use `.Data.Pages` in list templates. Although that syntax remains functional, use one of these methods instead: [`Pages`], [`RegularPages`], or [`RegularPagesRecursive`]
 
 The examples that follow are based on this site configuration:
 
@@ -67,11 +61,8 @@ Terms
 {{ $taxonomyObject := .Data.Terms }} 
 ```
 
-{{% note %}}
-Once you have captured the `Taxonomy` object, use any of the [taxonomy methods] to sort, count, or capture a subset of its weighted pages.
-
-[taxonomy methods]: /methods/taxonomy/
-{{% /note %}}
+> [!note]
+> Once you have captured the `Taxonomy` object, use any of the [taxonomy methods] to sort, count, or capture a subset of its weighted pages.
 
 Learn more about [taxonomy templates].
 
@@ -102,5 +93,9 @@ Term
 
 Learn more about [term templates].
 
+[`Pages`]: /methods/page/pages/
+[`RegularPages`]: /methods/page/regularpages/
+[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
+[taxonomy methods]: /methods/taxonomy/
 [taxonomy templates]: /templates/types/#taxonomy
 [term templates]: /templates/types/#term
index 113d6ca090aa6a601a249949d07ef502890d311a..b6c2042c23ab139040f168902b240fa0df743020 100644 (file)
@@ -3,13 +3,10 @@ title: Date
 description: Returns the date of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/ExpiryDate
-    - methods/page/LastMod
-    - methods/page/PublishDate
-  returnType: time.Time
-  signatures: [PAGE.Date]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [PAGE.Date]
 ---
 
 Set the date in front matter:
@@ -19,11 +16,8 @@ title = 'Article 1'
 date = 2023-10-19T00:40:04-07:00
 {{< /code-toggle >}}
 
-{{% note %}}
-The date field in front matter is often considered to be the creation date, You can change its meaning, and its effect on your site, in the site configuration. See&nbsp;[details].
-
-[details]: /getting-started/configuration/#configure-dates
-{{% /note %}}
+> [!note]
+> The date field in front matter is often considered to be the creation date, You can change its meaning, and its effect on your site, in the site configuration. See&nbsp;[details].
 
 The date is a [time.Time] value. Format and localize the value with the [`time.Format`] function, or use it with any of the [time methods].
 
@@ -34,6 +28,7 @@ The date is a [time.Time] value. Format and localize the value with the [`time.F
 In the example above we explicitly set the date in front matter. With Hugo's default configuration, the `Date` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the date is not defined in front matter. See&nbsp;[details].
 
 [`time.Format`]: /functions/time/format/
-[details]: /getting-started/configuration/#configure-dates
+[details]: /configuration/front-matter/#dates
+[details]: /configuration/front-matter/#dates
 [time methods]: /methods/time/
 [time.Time]: https://pkg.go.dev/time#Time
index 67171fe013a172f4d3d762de4232d9b03b45d974..5287aa69977d7dd6d830bedfa65f098d7f813a2e 100644 (file)
@@ -3,11 +3,10 @@ title: Description
 description: Returns the description of the given page as defined in front matter.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Summary
-  returnType: string
-  signatures: [PAGE.Description]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Description]
 ---
 
 Conceptually different from a [content summary], a page description is typically used in metadata about the page.
@@ -17,12 +16,12 @@ title = 'How to make spicy tuna hand rolls'
 description = 'Instructions for making spicy tuna hand rolls.'
 {{< /code-toggle >}}
 
-{{< code file=layouts/baseof.html  >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <head>
   ...
   <meta name="description" content="{{ .Description }}">
   ...
 </head>
-{{< /code >}}
+```
 
 [content summary]: /content-management/summaries/
index fd55a9bc97bde4bb5606b2af1228a5dce42f34db..482a370bf87f441a821738a2e6bd418f92e3bac5 100644 (file)
@@ -3,10 +3,10 @@ title: Draft
 description: Reports whether the given page is a draft as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [PAGE.Draft]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.Draft]
 ---
 
 By default, Hugo does not publish draft pages when you build your site. To include draft pages when you build your site, use the `--buildDrafts` command line flag.
index 99a9fc50ffca583e70717a9054b9b3428b100c56..4947a4bfa339bf1ac29c31f41bfc738bd43c570d 100644 (file)
@@ -3,17 +3,17 @@ title: Eq
 description: Reports whether two Page objects are equal.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [PAGE1.Eq PAGE2]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE1.Eq PAGE2]
 ---
 
 In this contrived example from a single template, we list all pages in the current section except for the current page.
 
 ```go-html-template
 {{ $currentPage := . }}
-{{ range .CurrentSection.Pages  }}
+{{ range .CurrentSection.Pages }}
   {{ if not (.Eq $currentPage) }}
     <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
   {{ end }}
index 9b95ebc654dc65c89ccddec20daa29024a16957b..a72155c3354ba544c1c3fdc163467a9ef960112d 100644 (file)
@@ -1,15 +1,12 @@
 ---
 title: ExpiryDate
-description: Returns the expiry date of the given page. 
+description: Returns the expiry date of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Date
-    - methods/page/LastMod
-    - methods/page/PublishDate
-  returnType: time.Time
-  signatures: [PAGE.ExpiryDate]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [PAGE.ExpiryDate]
 ---
 
 By default, Hugo excludes expired pages when building your site. To include expired pages, use the `--buildExpired` command line flag.
@@ -30,6 +27,6 @@ The expiry date is a [time.Time] value. Format and localize the value with the [
 In the example above we explicitly set the expiry date in front matter. With Hugo's default configuration, the `ExpiryDate` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the expiry date is not defined in front matter. See&nbsp;[details].
 
 [`time.Format`]: /functions/time/format/
-[details]: /getting-started/configuration/#configure-dates
+[details]: /configuration/front-matter/#dates
 [time methods]: /methods/time/
 [time.Time]: https://pkg.go.dev/time#Time
index 359c1ad2e92a3fb3ef719a240208a3653c3b7396..2af60a7194244bf520f5a7d04a066c2478dc8c2f 100644 (file)
@@ -3,36 +3,33 @@ title: File
 description: For pages backed by a file, returns file information for the given page.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: hugolib.fileInfo
-  signatures: [PAGE.File]
-toc: true
+params:
+  functions_and_methods:
+    returnType: hugolib.fileInfo
+    signatures: [PAGE.File]
 ---
 
-By default, not all pages are backed by a file, including top level [section pages](g), [taxonomy pages](g), and [term pages](g). By definition, you cannot retrieve file information when the file does not exist.
+By default, not all pages are backed by a file, including top-level [section pages](g), [taxonomy pages](g), and [term pages](g). By definition, you cannot retrieve file information when the file does not exist.
 
 To back one of the pages above with a file, create an&nbsp;`_index.md`&nbsp;file in the corresponding directory. For example:
 
 ```text
 content/
 └── books/
-    ├── _index.md  <-- the top level section page
+    ├── _index.md  <-- the top-slevel section page
     ├── book-1.md
     └── book-2.md
 ```
 
-{{% note %}}
-Code defensively by verifying file existence as shown in the examples below.
-{{% /note %}}
+> [!note]
+> Code defensively by verifying file existence as shown in the examples below.
 
 ## Methods
 
-{{% note %}}
-The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend on the operating system.
-{{% /note %}}
+> [!note]
+> The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend on the operating system.
 
-###### BaseFileName
+### BaseFileName
 
 (`string`) The file name, excluding the extension.
 
@@ -42,7 +39,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### ContentBaseName
+### ContentBaseName
 
 (`string`) If the page is a branch or leaf bundle, the name of the containing directory, else the `TranslationBaseName`.
 
@@ -52,7 +49,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### Dir
+### Dir
 
 (`string`) The file path, excluding the file name, relative to the `content` directory.
 
@@ -62,7 +59,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### Ext
+### Ext
 
 (`string`) The file extension.
 
@@ -72,7 +69,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### Filename
+### Filename
 
 (`string`) The absolute file path.
 
@@ -82,21 +79,19 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### IsContentAdapter
+### IsContentAdapter
 
 {{< new-in 0.126.0 />}}
 
 (`bool`) Reports whether the file is a [content adapter].
 
-[content adapter]: /content-management/content-adapters/
-
 ```go-html-template
 {{ with .File }}
   {{ .IsContentAdapter }}
 {{ end }}
 ```
 
-###### LogicalName
+### LogicalName
 
 (`string`) The file name.
 
@@ -106,7 +101,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### Path
+### Path
 
 (`string`) The file path, relative to the `content` directory.
 
@@ -116,9 +111,9 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### Section
+### Section
 
-(`string`) The name of the top level section in which the file resides.
+(`string`) The name of the top-level section in which the file resides.
 
 ```go-html-template
 {{ with .File }}
@@ -126,7 +121,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### TranslationBaseName
+### TranslationBaseName
 
 (`string`) The file name, excluding the extension and language identifier.
 
@@ -136,7 +131,7 @@ The path separators (slash or backslash) in `Path`, `Dir`, and `Filename` depend
 {{ end }}
 ```
 
-###### UniqueID
+### UniqueID
 
 (`string`) The MD5 hash of `.File.Path`.
 
@@ -184,7 +179,7 @@ UniqueID|15be14b...|186868f...|7d9159d...
 
 Some of the pages on a site may not be backed by a file. For example:
 
-- Top level section pages
+- Top-level section pages
 - Taxonomy pages
 - Term pages
 
@@ -195,3 +190,5 @@ Without a backing file, Hugo will throw an error if you attempt to access a `.Fi
   {{ .ContentBaseName }}
 {{ end }}
 ```
+
+[content adapter]: /content-management/content-adapters/
index 29fbdc841a1005d13f4caee7d53e6341279ebe50..73ddd2d7ba29a86f5113936000c0a7eca88d6080 100644 (file)
@@ -1,26 +1,18 @@
 ---
 title: FirstSection
-description: Returns the Page object of the top level section of which the given page is a descendant.
+description: Returns the Page object of the top-level section of which the given page is a descendant.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: page.Page
-  signatures: [PAGE.FirstSection]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.FirstSection]
 ---
 
 {{% glossary-term section %}}
 
-{{% note %}}
-When called on the home page, the `FirstSection` method returns the `Page` object of the home page itself.
-{{% /note %}}
+> [!note]
+> When called on the home page, the `FirstSection` method returns the `Page` object of the home page itself.
 
 Consider this content structure:
 
@@ -49,7 +41,7 @@ content/
 └── _index.md             <-- first section: home
 ```
 
-To link to the top level section of which the current page is a descendant:
+To link to the top-level section of which the current page is a descendant:
 
 ```go-html-template
 <a href="{{ .FirstSection.RelPermalink }}">{{ .FirstSection.LinkTitle }}</a>
index 581cbf7c38002cf0020cabd21b27daab8873afa9..2c0460defabf15c5ea3f0a9e4072ef318ecb2d2a 100644 (file)
@@ -3,12 +3,10 @@ title: Fragments
 description: Returns a data structure of the fragments in the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/TableOfContents
-  returnType: tableofcontents.Fragments
-  signatures: [PAGE.Fragments]
-toc: true
+params:
+  functions_and_methods:
+    returnType: tableofcontents.Fragments
+    signatures: [PAGE.Fragments]
 ---
 
 In a URL, whether absolute or relative, the [fragment](g) links to an `id` attribute of an HTML element on the page.
@@ -25,43 +23,53 @@ Use the `Fragments` method on a `Page` object to create a table of contents with
 
 ## Methods
 
-Headings
-: (`slice`) A slice of maps of all headings on the page, with first-level keys for each heading. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure:
+### Headings
+
+(`slice`) A slice of maps of all headings on the page, with first-level keys for each heading. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure:
 
 ```go-html-template
 <pre>{{ debug.Dump .Fragments.Headings }}</pre>
 ```
 
-HeadingsMap
-: (`map`) A nested map of all headings on the page. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure:
+### HeadingsMap
+
+(`map`) A nested map of all headings on the page. Each map contains the following keys: `ID`, `Level`, `Title` and `Headings`. To inspect the data structure:
 
 ```go-html-template
 <pre>{{ debug.Dump .Fragments.HeadingsMap }}</pre>
 ```
 
-Identifiers
-: (`slice`) A slice containing the `id` of each heading on the page. To inspect the data structure:
+### Identifiers
+
+(`slice`) A slice containing the `id` attribute of each heading on the page. If so configured, will also contain the `id` attribute of each description term (i.e., `dt` element) on the page.
+
+See [configure Markup](/configuration/markup/#parserautodefinitiontermid).
+
+To inspect the data structure:
 
 ```go-html-template
 <pre>{{ debug.Dump .Fragments.Identifiers }}</pre>
 ```
 
-Identifiers.Contains ID
-: (`bool`) Reports whether one or more headings on the page has the given `id` attribute, useful for validating fragments within a link [render hook](g).
+### Identifiers.Contains ID
+
+(`bool`) Reports whether one or more headings on the page has the given `id` attribute, useful for validating fragments within a link [render hook](g).
 
 ```go-html-template
 {{ .Fragments.Identifiers.Contains "section-2" }} → true
 ```
 
-Identifiers.Count ID
-: (`int`) The number of headings on a page with the given `id` attribute, useful for detecting duplicates.
+### Identifiers.Count ID
+
+(`int`) The number of headings on a page with the given `id` attribute, useful for detecting duplicates.
 
 ```go-html-template
 {{ .Fragments.Identifiers.Count "section-2" }} → 1
 ```
 
-ToHTML
-: (`template.HTML`) Returns a TOC as a nested list, either ordered or unordered, identical to the HTML returned by the [`TableOfContents`] method. This method take three arguments: the start level&nbsp;(`int`), the end level&nbsp;(`int`), and a boolean (`true` to return an ordered list, `false` to return an unordered list).
+### ToHTML
+
+(`template.HTML`) Returns a TOC as a nested list, either ordered or unordered, identical to the HTML returned by the [`TableOfContents`] method. This method take three arguments: the start level&nbsp;(`int`), the end level&nbsp;(`int`), and a boolean (`true` to return an ordered list, `false` to return an unordered list).
 
 Use this method when you want to control the start level, end level, or list type independently from the table of contents settings in your site configuration.
 
@@ -88,13 +96,14 @@ Hugo renders this to:
 </nav>
 ```
 
-{{% note %}}
-It is safe to use the `Fragments` methods within a render hook, even for the current page.
-
-When using the `Fragments` methods within a shortcode, call the shortcode using the `{{</* */>}}` notation. If you use the `{{%/* */%}}` notation, the rendered shortcode is included in the creation of the fragments map, resulting in a circular loop.
-{{% /note %}}
+> [!note]
+> It is safe to use the `Fragments` methods within a render hook, even for the current page.
+>
+> When using the `Fragments` methods within a shortcode, call the shortcode using [standard notation]. If you use [Markdown notation] the rendered shortcode is included in the creation of the fragments map, resulting in a circular loop.
 
-[atx]: https://spec.commonmark.org/0.30/#atx-headings
+[`TableOfContents`]: /methods/page/tableofcontents/
+[ATX]: https://spec.commonmark.org/0.30/#atx-headings
+[Markdown notation]: /content-management/shortcodes/#notation
 [setext]: https://spec.commonmark.org/0.30/#setext-headings
+[standard notation]: /content-management/shortcodes/#notation
 [table of contents]: /methods/page/tableofcontents/
-[`tableofcontents`]: /methods/page/tableofcontents/
index 8523edf8cf499d6f1c42e0df96a7b54bdcebbad2..815a0740215bd41b00768647a9a6fc196b8df2cf 100644 (file)
@@ -1,14 +1,12 @@
 ---
 title: FuzzyWordCount
-description: Returns the number of words in the content of the given page, rounded up to the nearest multiple of 100. 
+description: Returns the number of words in the content of the given page, rounded up to the nearest multiple of 100.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/WordCount
-    - methods/page/ReadingTime
-  returnType: int
-  signatures: [PAGE.FuzzyWordCount]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGE.FuzzyWordCount]
 ---
 
 ```go-html-template
index 7c71c5afa14db29dd42af26989212dd0686c53f9..02f6888e01a590de70dc9d0cb5dc28a0dc5b0ba8 100644 (file)
@@ -1,13 +1,12 @@
 ---
 title: GetPage
-description: Returns a Page object from the given path. 
+description: Returns a Page object from the given path.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/GetPage
-  returnType: page.Page
-  signatures: [PAGE.GetPage PATH]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.GetPage PATH]
 aliases: [/functions/getpage]
 ---
 
@@ -38,7 +37,7 @@ content/
 
 The examples below depict the result of rendering works/paintings/the-mona-lisa.md:
 
-{{< code file=layouts/works/single.html >}}
+```go-html-template {file="layouts/works/single.html"}
 {{ with .GetPage "starry-night" }}
   {{ .Title }} → Starry Night
 {{ end }}
@@ -62,4 +61,4 @@ The examples below depict the result of rendering works/paintings/the-mona-lisa.
 {{ with .GetPage "/works/sculptures/david" }}
   {{ .Title }} → David
 {{ end }}
-{{< /code >}}
+```
index 3020e4c2edb97c5de37426e685782f6f63b67a90..53b996fc5193e5c79b84caf855940312bd35ef56 100644 (file)
@@ -3,10 +3,10 @@ title: GetTerms
 description: Returns a collection of term pages for terms defined on the given page in the given taxonomy, ordered according to the sequence in which they appear in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGE.GetTerms TAXONOMY]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.GetTerms TAXONOMY]
 ---
 
 Given this front matter:
index a05916d79d901b9f16e649aaab78ed63f9b7f5f1..5fde05b07c60582f385e160b42571fcb3a56f09b 100644 (file)
@@ -3,19 +3,16 @@ title: GitInfo
 description: Returns Git information related to the last commit of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/CodeOwners
-  returnType: source.GitInfo
-  signatures: [PAGE.GitInfo]
-toc: true
+params:
+  functions_and_methods:
+    returnType: source.GitInfo
+    signatures: [PAGE.GitInfo]
 ---
 
 The `GitInfo` method on a `Page` object returns an object with additional methods.
 
-{{% note %}}
-Hugo's Git integration is performant, but may increase build times on large sites.
-{{% /note %}}
+> [!note]
+> Hugo's Git integration is performant, but may increase build times on large sites.
 
 ## Prerequisites
 
@@ -33,17 +30,14 @@ Alternatively, use the command line flag when building your site:
 hugo --enableGitInfo
 ```
 
-{{% note %}}
-When you set `enableGitInfo` to `true`, or enable the feature with the command line flag, the last modification date for each content page will be the Author Date of the last commit for that file.
-
-This is configurable. See&nbsp;[details].
-
-[details]: /getting-started/configuration/#configure-dates
-{{% /note %}}
+> [!note]
+> When you set `enableGitInfo` to `true`, or enable the feature with the command line flag, the last modification date for each content page will be the Author Date of the last commit for that file.
+>
+> This is configurable. See&nbsp;[details].
 
 ## Methods
 
-###### AbbreviatedHash
+### AbbreviatedHash
 
 (`string`) The abbreviated commit hash.
 
@@ -53,7 +47,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### AuthorDate
+### AuthorDate
 
 (`time.Time`) The author date.
 
@@ -63,7 +57,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### AuthorEmail
+### AuthorEmail
 
 (`string`) The author's email address, respecting [gitmailmap].
 
@@ -73,7 +67,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### AuthorName
+### AuthorName
 
 (`string`) The author's name, respecting [gitmailmap].
 
@@ -83,7 +77,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### CommitDate
+### CommitDate
 
 (`time.Time`) The commit date.
 
@@ -93,7 +87,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### Hash
+### Hash
 
 (`string`) The commit hash.
 
@@ -103,7 +97,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### Subject
+### Subject
 
 (`string`) The commit message subject.
 
@@ -113,7 +107,7 @@ This is configurable. See&nbsp;[details].
 {{ end }}
 ```
 
-###### Body
+### Body
 
 (`string`) The commit message body.
 
@@ -129,29 +123,29 @@ By default, when `enableGitInfo` is `true`, the `Lastmod` method on a `Page` obj
 
 You can change this behavior in your [site configuration].
 
-[git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
-[gitmailmap]: https://git-scm.com/docs/gitmailmap
-[site configuration]: /getting-started/configuration/#configure-front-matter
-
 ## Hosting considerations
 
-When hosting your site in a CI/CD environment, the step that clones your project repository must perform a deep clone. If the clone is shallow, the Git information for a given file may not be accurate---it may reflect the most recent repository commit, not the commit that last modified the file.
+When hosting your site in a [CI/CD](g) environment, the step that clones your project repository must perform a deep clone. If the clone is shallow, the Git information for a given file may not be accurate---it may reflect the most recent repository commit, not the commit that last modified the file.
 
-Some providers perform deep clones by default, others allow you to configure the clone depth, and some providers only perform shallow clones.
+Some providers perform deep clones by default, others allow you to configure the clone depth, and some only perform shallow clones.
 
 Hosting service | Default clone depth | Configurable
 :-- | :-- | :--
 AWS Amplify | Deep | N/A
-Cloudflare Pages | Shallow | Yes [^CFP]
+Cloudflare Pages | Shallow | Yes [^1]
 DigitalOcean App Platform | Deep | N/A
-GitHub Pages | Shallow | Yes [^GHP]
-GitLab Pages | Shallow | Yes [^GLP]
+GitHub Pages | Shallow | Yes [^2]
+GitLab Pages | Shallow | Yes [^3]
 Netlify | Deep | N/A
 Render | Shallow | No
 Vercel | Shallow | No
 
-[^CFP]: To configure a Cloudflare Pages site for deep cloning, preface the site's normal Hugo build command with `git fetch --unshallow &&` (*e.g.*, `git fetch --unshallow && hugo`).
+[^1]: To configure a Cloudflare Pages site for deep cloning, run `git fetch --unshallow` before building the site.
+
+[^2]: You can configure the GitHub Action to do a deep clone by specifying `fetch-depth: 0` in the applicable "checkout" step of your workflow file, as shown in the Hugo documentation's [example workflow file](/host-and-deploy/host-on-github-pages/#procedure).
 
-[^GHP]: You can configure the GitHub Action to do a deep clone by specifying `fetch-depth: 0` in the applicable "checkout" step of your workflow file, as shown in the Hugo documentation's [example workflow file](/hosting-and-deployment/hosting-on-github/#procedure).
+[^3]: You can configure the GitLab Runner's clone depth [as explained in the GitLab documentation](https://docs.gitlab.com/ee/ci/large_repositories/#shallow-cloning); see also the Hugo documentation's [example workflow file](/host-and-deploy/host-on-gitlab-pages/#configure-gitlab-cicd).
 
-[^GLP]: You can configure the GitLab Runner's clone depth [as explained in the GitLab documentation](https://docs.gitlab.com/ee/ci/large_repositories/#shallow-cloning); see also the Hugo documentation's [example workflow file](/hosting-and-deployment/hosting-on-gitlab/#configure-gitlab-cicd).
+[details]: /configuration/front-matter/#dates
+[gitmailmap]: https://git-scm.com/docs/gitmailmap
+[site configuration]: /configuration/front-matter/
index 24ce462c923b3fef12f9f512d3b5f162cf31a8db..2078821672dcc62ed72f0897928ed9f40cd99b39 100644 (file)
@@ -3,11 +3,10 @@ title: HasMenuCurrent
 description: Reports whether the given Page object matches the Page object associated with one of the child menu entries under the given menu entry in the given menu.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsMenuCurrent
-  returnType: bool
-  signatures: [PAGE.HasMenuCurrent MENU MENUENTRY]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.HasMenuCurrent MENU MENUENTRY]
 aliases: [/functions/hasmenucurrent]
 ---
 
@@ -28,8 +27,7 @@ If the `Page` object associated with the menu entry is a section, this method al
 
 See [menu templates] for a complete example.
 
-{{% note %}}
-When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration.
-{{% /note %}}
+> [!note]
+> When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration.
 
 [menu templates]: /templates/menu/#example
index 2846e9535c19bd020c38652955ae74637f263258..616b6de0966154cd2c1ba6873dae214fe7ddd6ad 100644 (file)
@@ -3,17 +3,17 @@ title: HasShortcode
 description: Reports whether the given shortcode is called by the given page.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [PAGE.HasShortcode NAME]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.HasShortcode NAME]
 ---
 
 By example, let's use [Plotly] to render a chart:
 
 [Plotly]: https://plotly.com/javascript/
 
-{{< code file=contents/example.md lang=markdown >}}
+```text {file="content/example.md"}
 {{</* plotly */>}}
 {
   "data": [
@@ -25,21 +25,21 @@ By example, let's use [Plotly] to render a chart:
   ],
 }
 {{</* /plotly */>}}
-{{< /code >}}
+```
 
 The shortcode is simple:
 
-{{< code file=layouts/shortcodes/plotly.html  >}}
+```go-html-template {file="layouts/shortcodes/plotly.html"}
 {{ $id := printf "plotly-%02d" .Ordinal }}
 <div id="{{ $id }}"></div>
 <script>
   Plotly.newPlot(document.getElementById({{ $id }}), {{ .Inner | safeJS }});
 </script>
-{{< /code >}}
+```
 
 Now we can selectively load the required JavaScript on pages that call the "plotly" shortcode:
 
-{{< code file=layouts/baseof.html  >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <head>
   ...
   {{ if .HasShortcode "plotly" }}
@@ -47,4 +47,4 @@ Now we can selectively load the required JavaScript on pages that call the "plot
   {{ end }}
   ...
 </head>
-{{< /code >}}
+```
index d741b57cefba0773f6e96e459a56b495aa262d54..86c989d4333234cbc2f169e03196c855f75566fc 100644 (file)
@@ -3,16 +3,14 @@ title: HeadingsFiltered
 description: Returns a slice of headings for each page related to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/Related
-    - methods/page/Fragments
-  returnType: tableofcontents.Headings
-  signatures: [PAGE.HeadingsFiltered]
+params:
+  functions_and_methods:
+    returnType: tableofcontents.Headings
+    signatures: [PAGE.HeadingsFiltered]
 ---
 
 Use in conjunction with the [`Related`] method on a [`Pages`] object. See&nbsp;[details].
 
 [`Pages`]: /methods/pages/
 [`Related`]: /methods/pages/related/
-[details]: /content-management/related/#index-content-headings-in-related-content
+[details]: /content-management/related-content/#index-content-headings
index 904f6ce7557b5102ad0a7b5795208760f0bac297..adca82d8644d4caf80e8b71e1bc88867b36fc7e4 100644 (file)
@@ -3,24 +3,16 @@ title: InSection
 description: Reports whether the given page is in the given section.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: bool
-  signatures: [PAGE.InSection SECTION]
-toc: true
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.InSection SECTION]
 ---
 
-The `InSection` method on a `Page` object reports whether the given page is in the given section. Note that the method returns `true` when comparing a page to a sibling.
-
 {{% glossary-term section %}}
 
+The `InSection` method on a `Page` object reports whether the given page is in the given section. Note that the method returns `true` when comparing a page to a sibling.
+
 With this content structure:
 
 ```text
@@ -83,9 +75,8 @@ Inside of the `with` block, the [context](g) (the dot) is the section `Page` obj
 
 The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself.
 
-{{% note %}}
-Use the `$` to get the context passed into the template.
-{{% /note %}}
+> [!note]
+> Use the `$` to get the context passed into the template.
 
 ```go-html-template
 {{ with .Site.GetPage "/auctions" }}
@@ -93,9 +84,8 @@ Use the `$` to get the context passed into the template.
 {{ end }}
 ```
 
-{{% note %}}
-Gaining a thorough understanding of context is critical for anyone writing template code.
-{{% /note %}}
+> [!note]
+> Gaining a thorough understanding of context is critical for anyone writing template code.
 
-[`with`]: /functions/go-template/with/
 [`else`]: /functions/go-template/else/
+[`with`]: /functions/go-template/with/
index 2613a287536fbc30651e4db30ca40075c12b56ae..fe1b7845419dc8ef6e9c422f1c42dce4e43eb114 100644 (file)
@@ -3,22 +3,12 @@ title: IsAncestor
 description: Reports whether PAGE1 is an ancestor of PAGE2.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsDescendant
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: bool
-  signatures: [PAGE1.IsAncestor PAGE2]
-toc: true
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE1.IsAncestor PAGE2]
 ---
 
-{{% glossary-term section %}}
-
 With this content structure:
 
 ```text
@@ -81,9 +71,8 @@ Inside of the `with` block, the [context](g) (the dot) is the section `Page` obj
 
 The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself.
 
-{{% note %}}
-Use the `$` to get the context passed into the template.
-{{% /note %}}
+> [!note]
+> Use the `$` to get the context passed into the template.
 
 ```go-html-template
 {{ with .Site.GetPage "/auctions" }}
@@ -91,9 +80,8 @@ Use the `$` to get the context passed into the template.
 {{ end }}
 ```
 
-{{% note %}}
-Gaining a thorough understanding of context is critical for anyone writing template code.
-{{% /note %}}
+> [!note]
+> Gaining a thorough understanding of context is critical for anyone writing template code.
 
-[`with`]: /functions/go-template/with/
 [`else`]: /functions/go-template/else/
+[`with`]: /functions/go-template/with/
index 4ef7c65982d5e7f30a91453651c3acc6c7e7a597..6ee8d3c4f76844d390d5a5f4c37a83c0eb0f0774 100644 (file)
@@ -3,21 +3,12 @@ title: IsDescendant
 description: Reports whether PAGE1 is a descendant of PAGE2.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/Parent
-    - methods/page/Sections
-  returnType: bool
-  signatures: [PAGE1.IsDescendant PAGE2]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE1.IsDescendant PAGE2]
 ---
 
-{{% glossary-term section %}}
-
 With this content structure:
 
 ```text
@@ -80,9 +71,8 @@ Inside of the `with` block, the [context](g) (the dot) is the section `Page` obj
 
 The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself.
 
-{{% note %}}
-Use the `$` to get the context passed into the template.
-{{% /note %}}
+> [!note]
+> Use the `$` to get the context passed into the template.
 
 ```go-html-template
 {{ with .Site.GetPage "/auctions" }}
@@ -90,9 +80,8 @@ Use the `$` to get the context passed into the template.
 {{ end }}
 ```
 
-{{% note %}}
-Gaining a thorough understanding of context is critical for anyone writing template code.
-{{% /note %}}
+> [!note]
+> Gaining a thorough understanding of context is critical for anyone writing template code.
 
-[`with`]: /functions/go-template/with/
 [`else`]: /functions/go-template/else/
+[`with`]: /functions/go-template/with/
index 16b04034f32cd3b8b4186794b2e53a3b414c8c71..66d8180b06769bbd706e59da2daa58471555b2cb 100644 (file)
@@ -3,13 +3,10 @@ title: IsHome
 description: Reports whether the given page is the home page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsNode
-    - methods/page/IsPage
-    - methods/page/IsSection
-  returnType: bool
-  signatures: [PAGE.IsHome]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsHome]
 ---
 
 The `IsHome` method on a `Page` object returns `true` if the [page kind](g) is `home`.
index a16be51eef65f5824225f19b57aa31be12a383c5..9bbacd018f85cfca0924ed025286116fe88408d0 100644 (file)
@@ -3,11 +3,10 @@ title: IsMenuCurrent
 description: Reports whether the given Page object matches the Page object associated with the given menu entry in the given menu.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/HasMenuCurrent
-  returnType: bool
-  signatures: [PAGE.IsMenuCurrent MENU MENUENTRY]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsMenuCurrent MENU MENUENTRY]
 aliases: [/functions/ismenucurrent]
 ---
 
@@ -26,8 +25,7 @@ aliases: [/functions/ismenucurrent]
 
 See [menu templates] for a complete example.
 
-{{% note %}}
-When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration.
-{{% /note %}}
+> [!note]
+> When using this method you must either define the menu entry in front matter, or specify a `pageRef` property when defining the menu entry in your site configuration.
 
 [menu templates]: /templates/menu/#example
index 5335ef376fe5d8114303e2b8f52f84aee278490f..194a2cac852db18b36496102634dffacd7054903 100644 (file)
@@ -3,13 +3,10 @@ title: IsNode
 description: Reports whether the given page is a node.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsHome
-    - methods/page/IsPage
-    - methods/page/IsSection
-  returnType: bool
-  signatures: [PAGE.IsNode]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsNode]
 ---
 
 The `IsNode` method on a `Page` object returns `true` if the [page kind](g) is `home`, `section`, `taxonomy`, or `term`.
index 92e6101d9329e44ace1d8497125895775d0e9787..910a3a7e10b575787d945fe2142c52c87419393a 100644 (file)
@@ -3,13 +3,10 @@ title: IsPage
 description: Reports whether the given page is a regular page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsHome
-    - methods/page/IsNode
-    - methods/page/IsSection
-  returnType: bool
-  signatures: [PAGE.IsPage]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsPage]
 ---
 
 The `IsPage` method on a `Page` object returns `true` if the [page kind](g) is `page`.
index 965e466cde4569be22508dd38ef62854afdac41b..7a04fbd8fba9b78facf024462a46c57065168bcb 100644 (file)
@@ -3,13 +3,10 @@ title: IsSection
 description: Reports whether the given page is a section page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsHome
-    - methods/page/IsNode
-    - methods/page/IsPage
-  returnType: bool
-  signatures: [PAGE.IsSection]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsSection]
 ---
 
 The `IsSection` method on a `Page` object returns `true` if the [page kind](g) is `section`.
index 47019a52c9448bb5ba3903415ca3cca57181d789..2cdf911ac73b68fce754581b5fa809d763b782cf 100644 (file)
@@ -3,13 +3,10 @@ title: IsTranslated
 description: Reports whether the given page has one or more translations.
 categories: []
 keywords: []
-action:
-  related:
-   - methods/page/Translations
-   - methods/page/AllTranslations
-   - methods/page/TranslationKey
-  returnType: bool
-  signatures: [PAGE.IsTranslated]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.IsTranslated]
 ---
 
 With this site configuration:
index ef68c27f5985999190bf9f6971946003c543e88e..7c940984effad690f8a400bd0aa50dcb246ddd4c 100644 (file)
@@ -3,15 +3,15 @@ title: Keywords
 description: Returns a slice of keywords as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: '[]string'
-  signatures: [PAGE.Keywords]
+params:
+  functions_and_methods:
+    returnType: '[]string'
+    signatures: [PAGE.Keywords]
 ---
 
 By default, Hugo evaluates the keywords when creating collections of [related content].
 
-[related content]: /content-management/related/
+[related content]: /content-management/related-content/
 
 {{< code-toggle file=content/recipes/sushi.md fm=true >}}
 title = 'How to make spicy tuna hand rolls'
index c5b0c6b9d31303c56cb1425894e611cf7f9064bc..a01877e8c5eff42811ae8783b38903f1c689ac4b 100644 (file)
@@ -3,11 +3,10 @@ title: Kind
 description: Returns the kind of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Type
-  returnType: string
-  signatures: [PAGE.Kind]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Kind]
 ---
 
 The [page kind](g) is one of `home`, `page`, `section`, `taxonomy`, or `term`.
index e12fc2e6267964c7c91a3999892d762bdbbd6081..9fd604df3aea5c11c0871087e3c29e4cbb6d593a 100644 (file)
@@ -3,11 +3,10 @@ title: Language
 description: Returns the language object for the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/Language
-  returnType: langs.Language
-  signatures: [PAGE.Language]
+params:
+  functions_and_methods:
+    returnType: langs.Language
+    signatures: [PAGE.Language]
 ---
 
 The `Language` method on a `Page` object returns the language object for the given page. The language object points to the language definition in the site configuration.
@@ -26,7 +25,7 @@ languageName = 'Deutsch'
 weight = 2
 {{< /code-toggle >}}
 
-###### Lang
+### Lang
 
 (`string`) The language tag as defined by [RFC 5646].
 
@@ -34,7 +33,7 @@ weight = 2
 {{ .Language.Lang }} → de
 ```
 
-###### LanguageCode
+### LanguageCode
 
 (`string`) The language code from the site configuration. Falls back to `Lang` if not defined.
 
@@ -42,7 +41,7 @@ weight = 2
 {{ .Language.LanguageCode }} → de-DE
 ```
 
-###### LanguageDirection
+### LanguageDirection
 
 (`string`) The language direction from the site configuration, either `ltr` or `rtl`.
 
@@ -50,7 +49,7 @@ weight = 2
 {{ .Language.LanguageDirection }} → ltr
 ```
 
-###### LanguageName
+### LanguageName
 
 (`string`) The language name from the site configuration.
 
@@ -58,7 +57,7 @@ weight = 2
 {{ .Language.LanguageName }} → Deutsch
 ```
 
-###### Weight
+### Weight
 
 (`int`) The language weight from the site configuration which determines its order in the slice of languages returned by the `Languages` method on a `Site` object.
 
index 78760d556802356ef1053d33f3f7e65b37ffbac8..643eddc5e2de33ffd934028c9d039971e5e57c08 100644 (file)
@@ -1,16 +1,12 @@
 ---
 title: Lastmod
-description: Returns the last modification date of the given page. 
+description: Returns the last modification date of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Date
-    - methods/page/ExpiryDate
-    - methods/page/PublishDate
-    - methods/page/GitInfo
-  returnType: time.Time
-  signatures: [PAGE.Lastmod]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [PAGE.Lastmod]
 ---
 
 Set the last modification date in front matter:
@@ -35,6 +31,6 @@ Learn more about [date configuration].
 
 [`gitinfo`]: /methods/page/gitinfo/
 [`time.format`]: /functions/time/format/
-[date configuration]: /getting-started/configuration/#configure-dates
+[date configuration]: /configuration/front-matter/#dates
 [time methods]: /methods/time/
-[time.time]: https://pkg.go.dev/time#time
+[time.time]: https://pkg.go.dev/time#Time
index 3d0cdc43769341a0f0436c2e75ed23cc533715ca..f9aa5b6ab1071fdedb0e3c1d075e65d6cf551b48 100644 (file)
@@ -3,18 +3,17 @@ title: Layout
 description: Returns the layout for the given page as defined in front matter.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Type
-  returnType: string
-  signatures: [PAGE.Layout]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Layout]
 ---
 
 Specify the `layout` field in front matter to target a particular template. See&nbsp;[details].
 
 [details]: /templates/lookup-order/#target-a-template
 
-{{< code-toggle file=content/contact.md >}}
+{{< code-toggle file=content/contact.md fm=true >}}
 title = 'Contact'
 layout = 'contact'
 {{< /code-toggle >}}
index d4270bda3d737fad1915ec82067af0cad7ad5d91..010da88d16c76d87508423b41b6198c30f459500 100644 (file)
@@ -3,11 +3,10 @@ title: Len
 description: Returns the length, in bytes, of the rendered content of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-  returnType: int
-  signatures: [PAGE.Len]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGE.Len]
 ---
 
 ```go-html-template
index 0ce32e641601e385e987a03046540843f9563fc9..fcfd5318d5b469bca88f968887b2b9cb21adddca 100644 (file)
@@ -3,11 +3,10 @@ title: LinkTitle
 description: Returns the link title of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Title
-  returnType: string
-  signatures: [PAGE.LinkTitle]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.LinkTitle]
 ---
 
 The `LinkTitle` method returns the `linkTitle` field as defined in front matter, falling back to the value returned by the [`Title`] method.
index ff052570067e71fe25b1b7c60de550dac6dd5864..9966030832e1c96a02bba85675d1689dc2e0914a 100644 (file)
@@ -3,15 +3,10 @@ title: Next
 description: Returns the next page in a site's collection of regular pages, relative to the current page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Prev
-    - methods/page/NextInSection
-    - methods/page/PrevInSection
-    - methods/pages/Next
-    - methods/pages/Prev
-  returnType: page.Page
-  signatures: [PAGE.Next]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.Next]
 ---
 
-{{% include "methods/page/_common/next-and-prev.md" %}}
+{{% include "/_common/methods/page/next-and-prev.md" %}}
index 640e9b44a377715ce149e3ca0dae4cd51f879aa4..eb02c949290502b132a3bc1f4498f207b2dfde7e 100644 (file)
@@ -1,15 +1,12 @@
 ---
 title: NextInSection
-description: Returns the next regular page in a section, relative to the given page. 
+description: Returns the next regular page in a section, relative to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/PrevInSection
-    - methods/pages/Next
-    - methods/pages/Prev
-  returnType: page.Page
-  signatures: [PAGE.NextInSection]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.NextInSection]
 ---
 
-{{% include "methods/page/_common/nextinsection-and-previnsection.md" %}}
+{{% include "/_common/methods/page/nextinsection-and-previnsection.md" %}}
index a6d014a9325226809af2ecf361198d4a6fb20b59..0e648efaa62e70cddebc54c6e136c73ee012c91f 100644 (file)
@@ -3,28 +3,26 @@ title: OutputFormats
 description: Returns a slice of OutputFormat objects, each representing one of the output formats enabled for the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/AlternativeOutputFormats
-  returnType: '[]OutputFormat'
-  signatures: [PAGE.OutputFormats]
-toc: true
+params:
+  functions_and_methods:
+    returnType: '[]OutputFormat'
+    signatures: [PAGE.OutputFormats]
 ---
 
 {{% glossary-term "output format" %}}
 
-The `OutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, each representing one of the output formats enabled for the given page. See&nbsp;[details](/templates/output-formats/).
+The `OutputFormats` method on a `Page` object returns a slice of `OutputFormat` objects, each representing one of the output formats enabled for the given page. See&nbsp;[details](/configuration/output-formats/).
 
 ## Methods
 
-{{% include "methods/page/_common/output-format-methods.md" %}}
+{{% include "/_common/methods/page/output-format-methods.md" %}}
 
 ## Example
 
 To link to the RSS feed for the current page:
 
 ```go-html-template
-{{ with .OutputFormats.Get "rss" -}}
+{{ with .OutputFormats.Get "rss" }}
   <a href="{{ .RelPermalink }}">RSS Feed</a>
 {{ end }}
 ```
@@ -37,4 +35,4 @@ On the site's home page, Hugo renders this to:
 
 Please see the [link to output formats] section to understand the importance of the construct above.
 
-[link to output formats]: /templates/output-formats/#link-to-output-formats
+[link to output formats]: /configuration/output-formats/#link-to-output-formats
index 1d6867792a06a6867ff959287b983e1cd8630780..7c7728b2f9420c1467e3fb9a2e13bcc17559f37d 100644 (file)
@@ -3,34 +3,33 @@ title: Page
 description: Returns the Page object of the given page.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Page
-  signatures: [PAGE.Page]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.Page]
 ---
 
 This is a convenience method, useful within partial templates that are called from both [shortcodes](g) and page templates.
 
-{{< code file=layouts/shortcodes/foo.html  >}}
+```go-html-template {file="layouts/shortcodes/foo.html"}
 {{ partial "my-partial.html" . }}
-{{< /code >}}
+```
 
 When the shortcode calls the partial, it passes the current [context](g) (the dot). The context includes identifiers such as `Page`, `Params`, `Inner`, and `Name`.
 
-{{< code file=layouts/_default/single.html  >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ partial "my-partial.html" . }}
-{{< /code >}}
+```
 
 When the page template calls the partial, it also passes the current context (the dot). But in this case, the dot _is_ the `Page` object.
 
-{{< code file=layouts/partials/my-partial.html  >}}
+```go-html-template {file="layouts/partials/my-partial.html"}
 The page title is: {{ .Page.Title }}
-{{< /code >}}
+```
 
 To handle both scenarios, the partial template must be able to access the `Page` object with `Page.Page`.
 
-{{% note %}}
-And yes, that means you can do `.Page.Page.Page.Page.Title` too.
-
-But don't.
-{{% /note %}}
+> [!note]
+> And yes, that means you can do `.Page.Page.Page.Page.Title` too.
+>
+> But don't.
index 8efcde2877e99611fc8fad4c0dc20f60c6c671f6..ba43c36a80af84624692581d987757f8556c76ad 100644 (file)
@@ -3,15 +3,13 @@ title: Pages
 description: Returns a collection of regular pages within the current section, and section pages of immediate descendant sections.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/RegularPages
-    - methods/page/RegularPagesRecursive
-  returnType: page.Pages
-  signatures: [PAGE.Pages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.Pages]
 ---
 
-The `Pages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g).
+The `Pages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g).
 
 Range through the page collection in your template:
 
@@ -72,14 +70,13 @@ When rendering lesson-2, the `Pages` method returns:
 
 In the last example, the collection includes pages in the resources subdirectory. That directory is not a [section](g)---it does not contain an&nbsp;`_index.md`&nbsp;file. Its contents are part of the lesson-2 section.
 
-{{% note %}}
-When used with a `Site` object, the `Pages` method recursively returns all pages within the site. See&nbsp;[details].
-
-[details]: /methods/site/pages/
-{{% /note %}}
+> [!note]
+> When used with a `Site` object, the `Pages` method recursively returns all pages within the site. See&nbsp;[details].
 
 ```go-html-template
 {{ range .Site.Pages.ByTitle }}
   <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
 {{ end }}
 ```
+
+[details]: /methods/site/pages/
index 9d98fbb2f187fbab375cd739bad9da009d542693..0b699d6b253c8c5465598a767bb6a4afcc479899 100644 (file)
@@ -3,40 +3,31 @@ title: Paginate
 description: Paginates a collection of pages.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginator
-  returnType: page.Pager
-  signatures: ['PAGE.Paginate COLLECTION [N]']
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: ['PAGE.Paginate COLLECTION [N]']
 ---
 
 Pagination is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers.
 
 By default, the number of elements on each pager is determined by your [site configuration]. The default is `10`. Override that value by providing a second argument, an integer, when calling the `Paginate` method.
 
-[site configuration]: /getting-started/configuration/#pagination
-
-{{% note %}}
-There is also a `Paginator` method on `Page` objects, but it can neither filter nor sort the page collection.
-
-The `Paginate` method is more flexible.
-{{% /note %}}
+> [!note]
+> There is also a `Paginator` method on `Page` objects, but it can neither filter nor sort the page collection.
+>
+> The `Paginate` method is more flexible.
 
 You can invoke pagination on the [home template], [section templates], [taxonomy templates], and [term templates].
 
-[home template]: /templates/types/#home
-[section templates]: /templates/types/#section
-[taxonomy templates]: /templates/types/#taxonomy
-[term templates]: /templates/types/#term
-
-{{< code file=layouts/_default/list.html >}}
+```go-html-template {file="layouts/_default/list.html"}
 {{ $pages := where .Site.RegularPages "Section" "articles" }}
 {{ $pages = $pages.ByTitle }}
 {{ range (.Paginate $pages 7).Pages }}
   <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
 {{ end }}
 {{ template "_internal/pagination.html" . }}
-{{< /code >}}
+```
 
 In the example above, we:
 
@@ -46,6 +37,11 @@ In the example above, we:
 1. Range over the paginated page collection, rendering a link to each page
 1. Call the embedded pagination template to create navigation links between pagers
 
-{{% note %}}
-Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
-{{% /note %}}
+> [!note]
+> Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
+
+[home template]: /templates/types/#home
+[section templates]: /templates/types/#section
+[site configuration]: /configuration/pagination/
+[taxonomy templates]: /templates/types/#taxonomy
+[term templates]: /templates/types/#term
index c3161da6c67cbb95a415dbb4ed5c3f4b40346a60..bff7ea90cd6b3da48d74961674cf17a4476eb2ad 100644 (file)
@@ -1,45 +1,40 @@
 ---
 title: Paginator
-description: Paginates the collection of regular pages received in context. 
+description: Paginates the collection of regular pages received in context.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: page.Pager
-  signatures: [PAGE.Paginator]
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: [PAGE.Paginator]
 ---
 
 Pagination is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers.
 
 The number of elements on each pager is determined by your [site configuration]. The default is `10`.
 
-[site configuration]: /getting-started/configuration/#pagination
-
 You can invoke pagination on the [home template], [section templates], [taxonomy templates], and [term templates]. Each of these receives a collection of regular pages in [context](g). When you invoke the `Paginator` method, it paginates the page collection received in context.
 
-[home template]: /templates/types/#home
-[section templates]: /templates/types/#section
-[taxonomy templates]: /templates/types/#taxonomy
-[term templates]: /templates/types/#term
-
-{{< code file=layouts/_default/list.html >}}
+```go-html-template {file="layouts/_default/list.html"}
 {{ range .Paginator.Pages }}
   <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
 {{ end }}
 {{ template "_internal/pagination.html" . }}
-{{< /code >}}
+```
 
 In the example above, the embedded pagination template creates navigation links between pagers.
 
-{{% note %}}
-Although simple to invoke, with the `Paginator` method you can neither filter nor sort the page collection. It acts upon the page collection received in context.
+> [!note]
+> Although simple to invoke, with the `Paginator` method you can neither filter nor sort the page collection. It acts upon the page collection received in context.
+>
+> The [`Paginate`] method is more flexible, and strongly recommended.
 
-The [`Paginate`] method is more flexible, and strongly recommended.
+> [!note]
+> Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
 
-[`paginate`]: /methods/page/paginate/
-{{% /note %}}
-
-{{% note %}}
-Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
-{{% /note %}}
+[home template]: /templates/types/#home
+[section templates]: /templates/types/#section
+[site configuration]: /configuration/pagination/
+[taxonomy templates]: /templates/types/#taxonomy
+[term templates]: /templates/types/#term
+[`Paginate`]: /methods/page/paginate/
index daf09a5b4f02dd130816117566e05cd2e3860d79..b07c1cd920fc3d935583c4aca02470bd42a8b2fc 100644 (file)
@@ -3,10 +3,10 @@ title: Param
 description: Returns a page parameter with the given key, falling back to a site parameter if present.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: any
-  signatures: [PAGE.Param KEY]
+params:
+  functions_and_methods:
+    returnType: any
+    signatures: [PAGE.Param KEY]
 aliases: [/functions/param]
 ---
 
index faeda450431c366b69b2b95d1cd23d2406818127..eeb2534378eab9f457f42ff488dfa3ddc01fec56 100644 (file)
@@ -3,40 +3,40 @@ title: Params
 description: Returns a map of custom parameters as defined in the front matter of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/collections/IndexFunction
-    - methods/site/Params
-    - methods/page/Param
-  returnType: maps.Params
-  signatures: [PAGE.Params]
+params:
+  functions_and_methods:
+    returnType: maps.Params
+    signatures: [PAGE.Params]
 ---
 
-With this front matter:
+By way of example, consider this front matter:
 
-{{< code-toggle file=content/news/annual-conference.md >}}
+{{< code-toggle file=content/annual-conference.md fm=true >}}
 title = 'Annual conference'
 date = 2023-10-17T15:11:37-07:00
 [params]
 display_related = true
+key-with-hyphens = 'must use index function'
 [params.author]
   email = 'jsmith@example.org'
   name = 'John Smith'
 {{< /code-toggle >}}
 
-The `title` and `date` fields are standard parameters---the other fields are user-defined.
+The `title` and `date` fields are standard [front matter fields], while the other fields are user-defined.
 
-Access the custom parameters by [chaining](g) the [identifiers](g):
+Access the custom fields by [chaining](g) the [identifiers](g) when needed:
 
 ```go-html-template
 {{ .Params.display_related }} → true
+{{ .Params.author.email }} → jsmith@example.org
 {{ .Params.author.name }} → John Smith
 ```
 
 In the template example above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function:
 
 ```go-html-template
-{{ index .Params "key-with-hyphens" }} → 2023
+{{ index .Params "key-with-hyphens" }} → must use index function
 ```
 
 [`index`]: /functions/collections/indexfunction/
+[front matter fields]: /content-management/front-matter/#fields
index 4c182f8e1e7493cff44fc05dab27cfedece5f130..0946a79937db34c35e869a0fb620d10218cc20d2 100644 (file)
@@ -3,26 +3,16 @@ title: Parent
 description: Returns the Page object of the parent section of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Sections
-  returnType: page.Page
-  signatures: [PAGE.Parent]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.Parent]
 ---
 
 {{% glossary-term section %}}
 
-{{% note %}}
-The parent section of a regular page is the [current section].
-
-[current section]: /methods/page/currentsection/
-{{% /note %}}
+> [!note]
+> The parent section of a regular page is the [current section].
 
 Consider this content structure:
 
@@ -58,3 +48,5 @@ In the example above, note the parent section of the home page is nil. Code defe
   <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
 {{ end }}
 ```
+
+[current section]: /methods/page/currentsection/
index 83ad01b94cc25faa9e1f1ea9b8041990bcf162e2..db4e7d62911ca4f7565b08a3a9dea556cc0479ac 100644 (file)
@@ -3,40 +3,26 @@ title: Path
 description: Returns the logical path of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/File
-    - methods/page/RelPermalink
-  returnType: string
-  signatures: [PAGE.Path]
-toc: true
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Path]
 ---
 
 {{< new-in 0.123.0 />}}
 
-The `Path` method on a `Page` object returns the [logical path](g) of the given page, regardless of whether the page is backed by a file.
+The `Path` method on a `Page` object returns the logical path of the given page, regardless of whether the page is backed by a file.
+
+{{% glossary-term "logical path" %}}
 
 ```go-html-template
 {{ .Path }} → /posts/post-1
 ```
 
-This value is neither a file path nor a relative URL. It is a logical identifier for each page, independent of content format, language, and URL modifiers.
-
-{{% note %}}
-Beginning with the release of [v0.92.0] in January 2022, Hugo emitted a warning whenever calling the `Path` method. The warning indicated that this method would change in a future release.
-
-The meaning of, and value returned by, the `Path` method on a `Page` object changed with the release of [v0.123.0] in February 2024.
-
-[v0.92.0]: https://github.com/gohugoio/hugo/releases/tag/v0.92.0
-[v0.123.0]: https://github.com/gohugoio/hugo/releases/tag/v0.123.0
-{{% /note %}}
-
-To determine the logical path for pages backed by a file, Hugo starts with the file path, relative to the `content` directory, and then:
-
-1. Strips the file extension
-1. Strips the language identifier
-1. Converts the result to lower case
-1. Replaces spaces with hyphens
+> [!note]
+> Beginning with the release of [v0.92.0] in January 2022, Hugo emitted a warning whenever calling the `Path` method. The warning indicated that this method would change in a future release.
+>
+> The meaning of, and value returned by, the `Path` method on a `Page` object changed with the release of [v0.123.0] in February 2024.
 
 The value returned by the `Path` method on a `Page` object is independent of content format, language, and URL modifiers such as the `slug` and `url` front matter fields.
 
@@ -101,25 +87,13 @@ Methods|Functions|Shortcodes
 :--|:--|:--
 [`Site.GetPage`]|[`urls.Ref`]|[`ref`]
 [`Page.GetPage`]|[`urls.RelRef`]|[`relref`]
-[`Page.Ref`]||
-[`Page.RelRef`]||
-[`Shortcode.Ref`]||
-[`Shortcode.RelRef`]||
-
-[`urls.Ref`]: /functions/urls/ref/
-[`urls.RelRef`]: /functions/urls/relref/
-[`Page.GetPage`]: /methods/page/getpage/
-[`Site.GetPage`]: /methods/site/getpage/
-[`ref`]: /shortcodes/ref/
-[`relref`]: /shortcodes/relref/
-[`Page.Ref`]: /methods/page/ref/
-[`Page.RelRef`]: /methods/page/relref/
-[`Shortcode.Ref`]: /methods/shortcode/ref
-[`Shortcode.RelRef`]: /methods/shortcode/relref
+[`Page.Ref`]|||
+[`Page.RelRef`]|||
+[`Shortcode.Ref`]|||
+[`Shortcode.RelRef`]|||
 
-{{% note %}}
-Specify the logical path when using any of these methods, functions, or shortcodes. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree.
-{{% /note %}}
+> [!note]
+> Specify the logical path when using any of these methods, functions, or shortcodes. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree.
 
 ## Logical tree
 
@@ -149,6 +123,18 @@ A key difference between these trees is the relative path from p1 to p2:
 - In the file tree, the relative path from p1 to p2 is `../p2.md`
 - In the logical tree, the relative path is `p2`
 
-{{% note %}}
-Remember to use the logical path when using any of the methods, functions, or shortcodes listed in the previous section. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree.
-{{% /note %}}
+> [!note]
+> Remember to use the logical path when using any of the methods, functions, or shortcodes listed in the previous section. If you include a file extension or language identifier, Hugo will strip these values before finding the page in the logical tree.
+
+[`Page.GetPage`]: /methods/page/getpage/
+[`Page.Ref`]: /methods/page/ref/
+[`Page.RelRef`]: /methods/page/relref/
+[`ref`]: /shortcodes/ref/
+[`relref`]: /shortcodes/relref/
+[`Shortcode.Ref`]: /methods/shortcode/ref
+[`Shortcode.RelRef`]: /methods/shortcode/relref
+[`Site.GetPage`]: /methods/site/getpage/
+[`urls.Ref`]: /functions/urls/ref/
+[`urls.RelRef`]: /functions/urls/relref/
+[v0.123.0]: https://github.com/gohugoio/hugo/releases/tag/v0.123.0
+[v0.92.0]: https://github.com/gohugoio/hugo/releases/tag/v0.92.0
index d8416df8668ff82262e61d800172a8fcde27cffb..cc74f334281fed4067c4b2d33f87b52d31baba78 100644 (file)
@@ -3,11 +3,10 @@ title: Permalink
 description: Returns the permalink of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/RelPermalink
-  returnType: string
-  signatures: [PAGE.Permalink]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Permalink]
 ---
 
 Site configuration:
index e26c33529a1ad369bd6ebacffec23a338ecd2419..65d11166e0a83290375e3f3b57b54d370d987d5b 100644 (file)
@@ -3,16 +3,10 @@ title: Plain
 description: Returns the rendered content of the given page, removing all HTML tags.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-    - methods/page/Summary
-    - methods/page/ContentWithoutSummary
-    - methods/page/RawContent
-    - methods/page/PlainWords
-    - methods/page/RenderShortcodes
-  returnType: string
-  signatures: [PAGE.Plain]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Plain]
 ---
 
 The `Plain` method on a `Page` object renders Markdown and [shortcodes](g) to HTML, then strips the HTML [tags]. It does not strip HTML [entities].
index 221fd741b78ff556294f428ea8ddbc91e8a1e599..5749a21f9d47f066ee2e8a8cb44971257a62f3d9 100644 (file)
@@ -3,25 +3,16 @@ title: PlainWords
 description: Calls the Plain method, splits the result into a slice of words, and returns the slice.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-    - methods/page/Summary
-    - methods/page/ContentWithoutSummary
-    - methods/page/RawContent
-    - methods/page/Plain
-    - methods/page/RenderShortcodes
-  returnType: '[]string'
-  signatures: [PAGE.PlainWords]
+params:
+  functions_and_methods:
+    returnType: '[]string'
+    signatures: [PAGE.PlainWords]
 ---
 
 The `PlainWords` method on a `Page` object calls the [`Plain`] method, then uses Go's [`strings.Fields`] function to split the result into words.
 
-{{% note %}}
-_Fields splits the string s around each instance of one or more consecutive whitespace characters, as defined by [`unicode.IsSpace`], returning a slice of substrings of s or an empty slice if s contains only whitespace._
-
-[`unicode.IsSpace`]: https://pkg.go.dev/unicode#IsSpace
-{{% /note %}}
+> [!note]
+> `Fields` splits the string `s` around each instance of one or more consecutive whitespace characters, as defined by [`unicode.IsSpace`], returning a slice of substrings of `s` or an empty slice if `s` contains only whitespace.
 
 As a result, elements within the slice may contain leading or trailing punctuation.
 
@@ -37,3 +28,4 @@ To determine the approximate number of unique words on a page:
 
 [`Plain`]: /methods/page/plain/
 [`strings.Fields`]: https://pkg.go.dev/strings#Fields
+[`unicode.IsSpace`]: https://pkg.go.dev/unicode#IsSpace
index d28b50265afb7f7013f60a99d621d4ea38d10741..5a6e2162d8e9b7ab6aec5784d60d06520c8b2c53 100644 (file)
@@ -3,15 +3,10 @@ title: Prev
 description: Returns the previous page in a site's collection of regular pages, relative to the current page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Next
-    - methods/page/NextInSection
-    - methods/page/PrevInSection
-    - methods/pages/Next
-    - methods/pages/Prev
-  returnType: page.Page
-  signatures: [PAGE.Prev]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.Prev]
 ---
 
-{{% include "methods/page/_common/next-and-prev.md" %}}
+{{% include "/_common/methods/page/next-and-prev.md" %}}
index aaafb367ecef35eb111959aabc8ac9f79e3460b7..14d3ca082c6fb3e8d79679cb103db166873820f3 100644 (file)
@@ -1,15 +1,12 @@
 ---
 title: PrevInSection
-description: Returns the previous regular page in a section, relative to the given page. 
+description: Returns the previous regular page in a section, relative to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/NextInSection
-    - methods/pages/Next
-    - methods/pages/Prev
-  returnType: page.Page
-  signatures: [PAGE.PrevInSection]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGE.PrevInSection]
 ---
 
-{{% include "methods/page/_common/nextinsection-and-previnsection.md" %}}
+{{% include "/_common/methods/page/nextinsection-and-previnsection.md" %}}
index d1f2eb2a12da94b64078954227c4e6eefe123abb..7500a08aa143e2211d81414eea865c32cbba51a0 100644 (file)
@@ -3,13 +3,10 @@ title: PublishDate
 description: Returns the publish date of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Date
-    - methods/page/ExpiryDate
-    - methods/page/LastMod
-  returnType: time.Time
-  signatures: [PAGE.PublishDate]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [PAGE.PublishDate]
 ---
 
 By default, Hugo excludes pages with future publish dates when building your site. To include future pages, use the `--buildFuture` command line flag.
@@ -30,6 +27,6 @@ The publish date is a [time.Time] value. Format and localize the value with the
 In the example above we explicitly set the publish date in front matter. With Hugo's default configuration, the `PublishDate` method returns the front matter value. This behavior is configurable, allowing you to set fallback values if the publish date is not defined in front matter. See&nbsp;[details].
 
 [`time.Format`]: /functions/time/format/
-[details]: /getting-started/configuration/#configure-dates
+[details]: /configuration/front-matter/#dates
 [time methods]: /methods/time/
 [time.Time]: https://pkg.go.dev/time#Time
index 9dab9693ecc05274e9568aec513409d6057bed55..41215ef53c6d3f8808a020262ffc7a7db95700b5 100644 (file)
@@ -3,16 +3,10 @@ title: RawContent
 description: Returns the raw content of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-    - methods/page/Summary
-    - methods/page/ContentWithoutSummary
-    - methods/page/Plain
-    - methods/page/PlainWords
-    - methods/page/RenderShortcodes
-  returnType: string
-  signatures: [PAGE.RawContent]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.RawContent]
 ---
 
 The `RawContent` method on a `Page` object returns the raw content. The raw content does not include front matter.
@@ -21,12 +15,9 @@ The `RawContent` method on a `Page` object returns the raw content. The raw cont
 {{ .RawContent }}
 ```
 
-This is useful when rendering a page in a plain text [output format].
+This is useful when rendering a page in a plain text [output format](g).
 
-{{% note %}}
-[Shortcodes](g) within the content are not rendered. To get the raw content with shortcodes rendered, use the [`RenderShortcodes`] method on a `Page` object.
+> [!note]
+[Shortcodes](g) within the content are not rendered. To get the raw content with shortcodes rendered, use the [`RenderShortcodes`] method on a `Page` object.
 
 [`RenderShortcodes`]: /methods/page/rendershortcodes/
-{{% /note %}}
-
-[output format]: /templates/output-formats/
index 531824b9b58a5a34f8d2c47586ed6315ef9fa324..1bd7dea31dd06fcc21962c74883b0ef4d5e4d1bc 100644 (file)
@@ -3,12 +3,10 @@ title: ReadingTime
 description: Returns the estimated reading time, in minutes, for the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/WordCount
-    - methods/page/FuzzyWordCount
-  returnType: int
-  signatures: [PAGE.ReadingTime]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGE.ReadingTime]
 ---
 
 The estimated reading time is calculated by dividing the number of words in the content by the reading speed.
index e0d42424d810949af10f34e3c35a678be92059aa..35f9460bae8aa10b9f0374fee8bacf7198f4ecd2 100644 (file)
@@ -3,27 +3,23 @@ title: Ref
 description: Returns the absolute URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/RelRef
-    - functions/urls/RelRef
-    - functions/urls/Ref
-  returnType: string
-  signatures: [PAGE.Ref OPTIONS]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Ref OPTIONS]
 ---
 
-The map of option contains:
+## Usage
 
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
+The `Ref` method accepts a single argument: an options map.
 
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+## Options
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-The examples below show the rendered output when visiting a page on the English language version of the site:
+## Examples
+
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
 {{ $opts := dict "path" "/books/book-1" }}
@@ -36,9 +32,6 @@ The examples below show the rendered output when visiting a page on the English
 {{ .Ref $opts }} → https://example.org/de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 08198fca46db94955807d33d6477d92435ff5ab1..761de3af5277ff2b2ac9fc60d74fe90fe3098b78 100644 (file)
@@ -3,15 +3,13 @@ title: RegularPages
 description: Returns a collection of regular pages within the current section.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Pages
-    - methods/page/RegularPagesRecursive
-  returnType: page.Pages
-  signatures: [PAGE.RegularPages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.RegularPages]
 ---
 
-The `RegularPages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g).
+The `RegularPages` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g).
 
 Range through the page collection in your template:
 
@@ -69,14 +67,13 @@ When rendering lesson-2, the `RegularPages` method returns:
 
 In the last example, the collection includes pages in the resources subdirectory. That directory is not a [section](g)---it does not contain an&nbsp;`_index.md`&nbsp;file. Its contents are part of the lesson-2 section.
 
-{{% note %}}
-When used with the `Site` object, the `RegularPages` method recursively returns all regular pages within the site. See&nbsp;[details].
-
-[details]: /methods/site/regularpages/
-{{% /note %}}
+> [!note]
+> When used with the `Site` object, the `RegularPages` method recursively returns all regular pages within the site. See&nbsp;[details].
 
 ```go-html-template
 {{ range .Site.RegularPages.ByTitle }}
   <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
 {{ end }}
 ```
+
+[details]: /methods/site/regularpages/
index 8e1c5f9a4550e08f4b7b14e46597f82e35382c9a..d85cd0b48eed2f52c670e79776f4e90b71c36d16 100644 (file)
@@ -3,15 +3,13 @@ title: RegularPagesRecursive
 description: Returns a collection of regular pages within the current section, and regular pages within all descendant sections.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Pages
-    - methods/page/RegularPages
-  returnType: page.Pages
-  signatures: [PAGE.RegularPagesRecursive]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.RegularPagesRecursive]
 ---
 
-The `RegularPagesRecursive` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g).
+The `RegularPagesRecursive` method on a `Page` object is available to these [page kinds](g): `home`, `section`, `taxonomy`, and `term`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g).
 
 Range through the page collection in your template:
 
@@ -81,6 +79,5 @@ When rendering lesson-2, the `RegularPagesRecursive` method returns:
     lessons/lesson-2/resources/task-list.md
     lessons/lesson-2/resources/worksheet.md
 
-{{% note %}}
-The `RegularPagesRecursive` method in not available on a `Site` object.
-{{% /note %}}
+> [!note]
+> The `RegularPagesRecursive` method is not available on a `Site` object.
index 817e3c862ccef06a5af40ec45fca49c9a8493313..a3c610d50327f31ebb980550ecbd48c128a963fe 100644 (file)
@@ -3,11 +3,10 @@ title: RelPermalink
 description: Returns the relative permalink of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Permalink
-  returnType: string
-  signatures: [PAGE.RelPermalink]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.RelPermalink]
 ---
 
 Site configuration:
index 83ab086101af362e4da04a9c703227b11f196b15..7edab574013e9cf03da8f58a70016179a04eb54b 100644 (file)
@@ -3,27 +3,23 @@ title: RelRef
 description: Returns the relative URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ref
-    - functions/urls/Ref
-    - functions/urls/RelRef
-  returnType: string
-  signatures: [PAGE.RelRef OPTIONS]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.RelRef OPTIONS]
 ---
 
-The map of option contains:
+## Usage
 
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
+The `RelRef` method accepts a single argument: an options map.
 
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+## Options
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-The examples below show the rendered output when visiting a page on the English language version of the site:
+## Examples
+
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
 {{ $opts := dict "path" "/books/book-1" }}
@@ -36,9 +32,6 @@ The examples below show the rendered output when visiting a page on the English
 {{ .RelRef $opts }} → /de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 1adc71c6d981f7947b1dd613ac9269bbd1e4aed8..10f7f9ca5fff0f93494ff48830696c2fdd888d11 100644 (file)
@@ -3,12 +3,10 @@ title: Render
 description: Renders the given template with the given page as context.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/partials/Include
-    - functions/partials/IncludeCached
-  returnType: template.HTML
-  signatures: [PAGE.Render NAME]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.Render NAME]
 aliases: [/functions/render]
 ---
 
index 3346f0ba1c5ae6dec2b8e121c4226bb78b183f7d..d124606f030db9aa0cda66844af61002b6972be9 100644 (file)
@@ -3,18 +3,10 @@ title: RenderShortcodes
 description: Renders all shortcodes in the content of the given page, preserving the surrounding markup.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Content
-    - methods/page/Summary
-    - methods/page/ContentWithoutSummary
-    - methods/page/RawContent
-    - methods/page/Plain
-    - methods/page/PlainWords
-    - methods/page/RenderString
-  returnType: template.HTML
-  signatures: [PAGE.RenderShortcodes]
-toc: true
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.RenderShortcodes]
 ---
 
 {{< new-in 0.117.0 />}}
@@ -23,7 +15,7 @@ Use this method in shortcode templates to compose a page from multiple content f
 
 For example:
 
-{{< code file=layouts/shortcodes/include.html >}}
+```go-html-template {file="layouts/shortcodes/include.html" copy=true}
 {{ with .Get 0 }}
   {{ with $.Page.GetPage . }}
     {{- .RenderShortcodes }}
@@ -33,15 +25,15 @@ For example:
 {{ else }}
   {{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }}
 {{ end }}
-{{< /code >}}
+```
 
 Then call the shortcode in your Markdown:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{%/* include "/snippets/services" */%}}
 {{%/* include "/snippets/values" */%}}
 {{%/* include "/snippets/leadership" */%}}
-{{< /code >}}
+```
 
 Each of the included Markdown files can contain calls to other shortcodes.
 
@@ -58,7 +50,7 @@ Use the latter for the "include" shortcode described above.
 
 To understand what is returned by the `RenderShortcodes` method, consider this content file
 
-{{< code file=content/about.md lang=text >}}
+```text {file="content/about.md"}
 +++
 title = 'About'
 date = 2023-10-07T12:28:33-07:00
@@ -67,7 +59,7 @@ date = 2023-10-07T12:28:33-07:00
 {{</* ref "privacy" */>}}
 
 An *emphasized* word.
-{{< /code >}}
+```
 
 With this template code:
 
@@ -90,7 +82,7 @@ Note that the shortcode within the content file was rendered, but the surroundin
 
 The primary use case for `.RenderShortcodes` is inclusion of Markdown content. If you try to use `.RenderShortcodes` inside `HTML` blocks when inside Markdown, you will get a warning similar to this:
 
-```
+```text
 WARN .RenderShortcodes detected inside HTML block in "/content/mypost.md"; this may not be what you intended ...
 ```
 
index 1a92c78c60adebda59b53b129af702c5169e8258..c7774774c533bc188f0b6c6b3953158fae2ac3c0 100644 (file)
@@ -3,12 +3,10 @@ title: RenderString
 description: Renders markup to HTML.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/RenderShortcodes
-    - functions/transform/Markdownify
-  returnType: template.HTML
-  signatures: ['PAGE.RenderString [OPTIONS] MARKUP']
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: ['PAGE.RenderString [OPTIONS] MARKUP']
 aliases: [/functions/renderstring]
 ---
 
index 6c79f58eec59190d40d21bb61c114e6b01e96844..dd472de88261f256e963a06b0c4ee09a5742a58f 100644 (file)
@@ -3,16 +3,10 @@ title: Resources
 description: Returns a collection of page resources.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/resources/ByType
-    - functions/resources/Get
-    - functions/resources/GetMatch
-    - functions/resources/GetRemote
-    - functions/resources/Match
-  returnType: resource.Resources
-  signatures: [PAGE.Resources]
-toc: true
+params:
+  functions_and_methods:
+    returnType: resource.Resources
+    signatures: [PAGE.Resources]
 ---
 
 The `Resources` method on a `Page` object returns a collection of page resources. A page resource is a file within a [page bundle](g).
@@ -21,7 +15,7 @@ To work with global or remote resources, see the [`resources`] functions.
 
 ## Methods
 
-###### ByType
+### ByType
 
 (`resource.Resources`) Returns a collection of page resources of the given [media type], or nil if none found. The media type is typically one of `image`, `text`, `audio`, `video`, or `application`.
 
@@ -33,7 +27,7 @@ To work with global or remote resources, see the [`resources`] functions.
 
 When working with global resources instead of page resources, use the [`resources.ByType`] function.
 
-###### Get
+### Get
 
 (`resource.Resource`) Returns a page resource from the given path, or nil if none found.
 
@@ -45,9 +39,9 @@ When working with global resources instead of page resources, use the [`resource
 
 When working with global resources instead of page resources, use the [`resources.Get`] function.
 
-###### GetMatch
+### GetMatch
 
-(`resource.Resource`) Returns the first page resource from paths matching the given [glob pattern], or nil if none found.
+(`resource.Resource`) Returns the first page resource from paths matching the given [glob](g) pattern, or nil if none found.
 
 ```go-html-template
 {{ with .Resources.GetMatch "images/*.jpg" }}
@@ -57,9 +51,9 @@ When working with global resources instead of page resources, use the [`resource
 
 When working with global resources instead of page resources, use the [`resources.GetMatch`] function.
 
-###### Match
+### Match
 
-(`resource.Resources`) Returns a collection of page resources from paths matching the given [glob pattern], or nil if none found.
+(`resource.Resources`) Returns a collection of page resources from paths matching the given [glob](g) pattern, or nil if none found.
 
 ```go-html-template
 {{ range .Resources.Match "images/*.jpg" }}
@@ -69,7 +63,7 @@ When working with global resources instead of page resources, use the [`resource
 
 When working with global resources instead of page resources, use the [`resources.Match`] function.
 
-###### Mount
+### Mount
 
 {{< new-in 0.140.0 />}}
 
@@ -84,14 +78,13 @@ This method is currently only useful in [js.Batch](/functions/js/batch/#import-c
 
 ## Pattern matching
 
-With the `GetMatch` and `Match` methods, Hugo determines a match using a case-insensitive [glob pattern].
+With the `GetMatch` and `Match` methods, Hugo determines a match using a case-insensitive [glob](g) pattern.
 
-{{% include "functions/_common/glob-patterns.md" %}}
+{{% include "/_common/glob-patterns.md" %}}
 
 [`resources.ByType`]: /functions/resources/ByType/
 [`resources.GetMatch`]: /functions/resources/ByType/
 [`resources.Get`]: /functions/resources/ByType/
 [`resources.Match`]: /functions/resources/ByType/
 [`resources`]: /functions/resources/
-[glob pattern]: https://github.com/gobwas/glob#example
 [media type]: https://en.wikipedia.org/wiki/Media_type
index 436005a946e14912795f5bf8cf3af4599fb9da98..61c5dc19eb06c632d03857c09fbbdf965d006433 100644 (file)
@@ -3,14 +3,14 @@ title: Scratch
 description: Returns a "scratch pad" to store and manipulate data, scoped to the current page.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: maps.Scratch
-  signatures: [PAGE.Scratch]
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [PAGE.Scratch]
 expiryDate: 2026-11-18 # deprecated 2024-11-18 (soft)
 ---
 
-{{% deprecated-in 0.138.0 %}}
+{{< deprecated-in 0.138.0 >}}
 Use the [`PAGE.Store`] method instead.
 
 This is a soft deprecation. This method will be removed in a future release, but the removal date has not been established. Although Hugo will not emit a warning if you continue to use this method, you should begin using `PAGE.Store` as soon as possible.
@@ -18,4 +18,4 @@ This is a soft deprecation. This method will be removed in a future release, but
 Beginning with v0.138.0 the `PAGE.Scratch` method is aliased to `PAGE.Store`.
 
 [`PAGE.Store`]: /methods/page/store/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 31cfb1e6fac989fad840b0238907ebeb2c8600bf..04c6a8a241b9e03d29eec96ebff4cd33e2937c65 100644 (file)
@@ -1,15 +1,16 @@
 ---
 title: Section
-description: Returns the name of the top level section in which the given page resides.
+description: Returns the name of the top-level section in which the given page resides.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Type
-  returnType: string
-  signatures: [PAGE.Section]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Section]
 ---
 
+{{% glossary-term section %}}
+
 With this content structure:
 
 ```text
@@ -29,7 +30,7 @@ When rendering lesson-1.md:
 {{ .Section }} → lessons
 ```
 
-In the example above "lessons" is the top level section.
+In the example above "lessons" is the top-level section.
 
 The `Section` method is often used with the [`where`] function to build a page collection.
 
index 921e4eb4e495164eedcb595c68dc0388117c978a..12f0a8c241bec488a4f04beabdffda495e347c04 100644 (file)
@@ -3,20 +3,13 @@ title: Sections
 description: Returns a collection of section pages, one for each immediate descendant section of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Ancestors
-    - methods/page/CurrentSection
-    - methods/page/FirstSection
-    - methods/page/InSection
-    - methods/page/IsAncestor
-    - methods/page/IsDescendant
-    - methods/page/Parent
-  returnType: page.Pages
-  signatures: [PAGE.Sections]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.Sections]
 ---
 
-{{% glossary-term section %}}
+The `Sections` method on a `Page` object is available to these [page kinds](g): `home`, `section`, and `taxonomy`. The templates for these page kinds receive a page [collection](g) in [context](g), in the [default sort order](g).
 
 With this content structure:
 
index d83c45e0a603541bc3a46e0c723232d7e201eecf..4649e5e0002e98f65c980d34a4ec217e24b0765f 100644 (file)
@@ -3,11 +3,10 @@ title: Site
 description: Returns the Site object.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Sites
-  returnType: page.siteWrapper
-  signatures: [PAGE.Site]
+params:
+  functions_and_methods:
+    returnType: page.siteWrapper
+    signatures: [PAGE.Site]
 ---
 
 See [Site methods].
index 065c07c35f75da84c0608ebdcff2f6bb4e0435bc..bb13604938ab074feee694085390d7dcf0d8b9fc 100644 (file)
@@ -3,33 +3,37 @@ title: Sitemap
 description: Returns the sitemap settings for the given page as defined in front matter, falling back to the sitemap settings as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: config.SitemapConfig
-  signatures: [PAGE.Sitemap]
-toc: true
+params:
+  functions_and_methods:
+    returnType: config.SitemapConfig
+    signatures: [PAGE.Sitemap]
 ---
 
 Access to the `Sitemap` method on a `Page` object is restricted to [sitemap templates].
 
 ## Methods
 
-changefreq
-: (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#changefreqdef).
+### ChangeFreq
+
+(`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#changefreqdef).
 
 ```go-html-template
 {{ .Sitemap.ChangeFreq }}
 ```
 
-disable {{< new-in 0.125.0 />}}
-: (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
+### Disable
+
+{{< new-in 0.125.0 />}}
+
+(`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
 
 ```go-html-template
 {{ .Sitemap.Disable }}
 ```
 
-priority
-: (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0.  With the default value of `-1` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#priority).
+### Priority
+
+(`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#prioritydef).
 
 ```go-html-template
 {{ .Sitemap.Priority }}
@@ -54,7 +58,7 @@ changeFreq = 'hourly'
 
 And this simplistic sitemap template:
 
-{{< code file=layouts/_default/sitemap.xml >}}
+```xml {file="layouts/_default/sitemap.xml"}
 {{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
   xmlns:xhtml="http://www.w3.org/1999/xhtml">
@@ -70,7 +74,7 @@ And this simplistic sitemap template:
     </url>
   {{ end }}
 </urlset>
-{{< /code >}}
+```
 
 The change frequency will be `hourly` for the news page, and `monthly` for other pages.
 
index cd240655e3edf4787d54b02775af0f6a102d867f..8677226d7c55a9979f5dc17446f75cd54f92db12 100644 (file)
@@ -3,11 +3,10 @@ title: Sites
 description: Returns a collection of all Site objects, one for each language, ordered by language weight.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Site
-  returnType: page.Sites
-  signatures: [PAGE.Sites]
+params:
+  functions_and_methods:
+    returnType: page.Sites
+    signatures: [PAGE.Sites]
 ---
 
 This is a convenience method to access `.Site.Sites`.
index 9fdb09b5774071416beab3733f5a456bb4d4d80d..34000b6601a39f83340262ad17fa8de4126ca043 100644 (file)
@@ -3,10 +3,10 @@ title: Slug
 description: Returns the URL slug of the given page as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [PAGE.Slug]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Slug]
 ---
 
 {{< code-toggle file=content/recipes/spicy-tuna-hand-rolls.md fm=true >}}
index 769a554f1ec701e7c98b43235cc8cdfece04ee79..0b1049b0ae540a4fa01cd1e8de97add3faa85348 100644 (file)
@@ -3,15 +3,10 @@ title: Store
 description: Returns a "scratch pad" to store and manipulate data, scoped to the current page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/Store
-    - methods/shortcode/Store
-    - functions/hugo/Store
-    - functions/collections/NewScratch
-  returnType: maps.Scratch
-  signatures: [PAGE.Store]
-toc: true
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [PAGE.Store]
 aliases: [/functions/store/,/extras/scratch/,/doc/scratch/,/functions/scratch]
 ---
 
index a875d62f057021fe8175c192cc222cbe79d99da5..9158e571d1b468f2462837f1274727007d344334 100644 (file)
@@ -3,14 +3,10 @@ title: Summary
 description: Returns the summary of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Truncated
-    - methods/page/Content
-    - methods/page/ContentWithoutSummary
-    - methods/page/Description
-  returnType: template.HTML
-  signatures: [PAGE.Summary]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.Summary]
 ---
 
 <!-- Do not remove the manual summary divider below. -->
@@ -20,8 +16,6 @@ action:
 
 You can define a [summary] manually, in front matter, or automatically. A manual summary takes precedence over a front matter summary, and a front matter summary takes precedence over an automatic summary.
 
-[summary]: /content-management/summaries/
-
 To list the pages in a section with a summary beneath each link:
 
 ```go-html-template
@@ -33,8 +27,6 @@ To list the pages in a section with a summary beneath each link:
 
 Depending on content length and how you define the summary, the summary may be equivalent to the content itself. To determine whether the content length exceeds the summary length, use the [`Truncated`] method on a `Page` object. This is useful for conditionally rendering a “read more” link:
 
-[`Truncated`]: /methods/page/truncated
-
 ```go-html-template
 {{ range .Pages }}
   <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
@@ -45,6 +37,8 @@ Depending on content length and how you define the summary, the summary may be e
 {{ end }}
 ```
 
-{{% note %}}
-The `Truncated` method returns `false` if you define the summary in front matter.
-{{% /note %}}
+> [!note]
+> The `Truncated` method returns `false` if you define the summary in front matter.
+
+[`Truncated`]: /methods/page/truncated
+[summary]: /content-management/summaries/
index 38c3ff17bd1edb59ff05dd65c4a32778742ae94b..7ec9fe61416c7d4641673f4130ded3008f7cb385 100644 (file)
@@ -3,11 +3,10 @@ title: TableOfContents
 description: Returns a table of contents for the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Fragments
-  returnType: template.HTML
-  signatures: [PAGE.TableOfContents]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [PAGE.TableOfContents]
 aliases: [/content-management/toc/]
 ---
 
index 08fc9f9eb9d66fced662049164ddc72bf5be7cf0..dae4ba6ddfd9042521e3f365f6a43179db348845 100644 (file)
@@ -3,11 +3,10 @@ title: Title
 description: Returns the title of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/LinkTitle
-  returnType: string
-  signatures: [PAGE.Title]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Title]
 ---
 
 With pages backed by a file, the `Title` method returns the `title` field as defined in front matter:
@@ -35,6 +34,6 @@ titleCaseStyle = "firstupper"
 
  See&nbsp;[details].
 
-[`capitalizeListTitles`]: /getting-started/configuration/#capitalizelisttitles
-[`pluralizeListTitles`]: /getting-started/configuration/#pluralizelisttitles
-[details]: /getting-started/configuration/#configure-title-case
+[`capitalizeListTitles`]: /configuration/all/#capitalizelisttitles
+[`pluralizeListTitles`]: /configuration/all/#pluralizelisttitles
+[details]: /configuration/all/#title-case-style
index a9e4b97e9aaeced1903eb629c13e9cb14d3b53b7..1e930687e97ab4c1c7852044e8c5c4f6361a6448 100644 (file)
@@ -3,13 +3,10 @@ title: TranslationKey
 description: Returns the translation key of the given page.
 categories: []
 keywords: []
-action:
-  related:
-   - methods/page/Translations
-   - methods/page/AllTranslations
-   - methods/page/IsTranslated
-  returnType: string
-  signatures: [PAGE.TranslationKey]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.TranslationKey]
 ---
 
 The translation key creates a relationship between all translations of a given page. The translation key is derived from the file path, or from the `translationKey` parameter if defined in front matter.
index 597a9aeb60492143f04a4473ae70fdbb110461e7..4bab9fe11f4b6941a7b5873f7a5b5ce0ced57394 100644 (file)
@@ -1,15 +1,12 @@
 ---
 title: Translations
-description: Returns all translations of the given page, excluding the current language.  
+description: Returns all translations of the given page, excluding the current language.
 categories: []
 keywords: []
-action:
-  related:
-   - methods/page/AllTranslations
-   - methods/page/IsTranslated
-   - methods/page/TranslationKey
-  returnType: page.Pages
-  signatures: [PAGE.Translations]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGE.Translations]
 ---
 
 With this site configuration:
index b4ec7ce165e9193bd59a742e2d814883d1740366..8c25730697313582cdf2a1910115c9457b3f7d13 100644 (file)
@@ -3,11 +3,10 @@ title: Truncated
 description: Reports whether the content length exceeds the summary length.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Summary
-  returnType: bool
-  signatures: [PAGE.Truncated]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGE.Truncated]
 ---
 
 You can define a [summary] manually, in front matter, or automatically. A manual summary takes precedence over a front matter summary, and a front matter summary takes precedence over an automatic summary.
@@ -26,6 +25,5 @@ The `Truncated` method returns `true` if the content length exceeds the summary
 {{ end }}
 ```
 
-{{% note %}}
-The `Truncated` method returns `false` if you define the summary in front matter.
-{{% /note %}}
+> [!note]
+> The `Truncated` method returns `false` if you define the summary in front matter.
index 2a2a5c7318cc068377f087ced6014ceb735fb85d..6f855fbe33988f0d7861b140f8a186e0a1e53078 100644 (file)
@@ -3,15 +3,13 @@ title: Type
 description: Returns the content type of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Kind
-    - methods/page/Layout
-  returnType: string
-  signatures: [PAGE.Type]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGE.Type]
 ---
 
-The `Type` method on a `Page` object returns the [content type](g) of the given page. The content type is defined by the `type` field in front matter,  or inferred from the top-level directory name if the `type` field in front matter is not defined.
+The `Type` method on a `Page` object returns the [content type](g) of the given page. The content type is defined by the `type` field in front matter, or inferred from the top-level directory name if the `type` field in front matter is not defined.
 
 With this content structure:
 
index 10f481baf6b4fe0394dbf0f054ab6d686cd60c4d..c14af025715eed85839facae161959b928841329 100644 (file)
@@ -3,10 +3,10 @@ title: Weight
 description: Returns the weight of the given page as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [PAGE.Weight]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGE.Weight]
 ---
 
 The `Weight` method on a `Page` object returns the [weight](g) of the given page as defined in front matter.
index 70fe407ab857b4e5f02e4d35a15a7097cb6f7ec8..3950244ca8402e28b746ba846ea378b1484b63f6 100644 (file)
@@ -3,12 +3,10 @@ title: WordCount
 description: Returns the number of words in the content of the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/FuzzyWordCount
-    - methods/page/ReadingTime
-  returnType: int
-  signatures: [PAGE.WordCount]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGE.WordCount]
 ---
 
 ```go-html-template
diff --git a/content/en/methods/page/_common/_index.md b/content/en/methods/page/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/methods/page/_common/next-and-prev.md b/content/en/methods/page/_common/next-and-prev.md
deleted file mode 100644 (file)
index 0a30222..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Hugo determines the _next_ and _previous_ page by sorting the site's collection of regular pages according to this sorting hierarchy:
-
-Field|Precedence|Sort direction
-:--|:--|:--
-[`weight`]|1|descending
-[`date`]|2|descending
-[`linkTitle`]|3|descending
-[`path`]|4|descending
-
-[`date`]: /methods/page/date/
-[`weight`]: /methods/page/weight/
-[`linkTitle`]: /methods/page/linktitle/
-[`path`]: /methods/page/path/
-
-The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
-
-For example, with this content structure:
-
-```text
-content/
-├── pages/
-│   ├── _index.md
-│   ├── page-1.md   <-- front matter: weight = 10
-│   ├── page-2.md   <-- front matter: weight = 20
-│   └── page-3.md   <-- front matter: weight = 30
-└── _index.md
-```
-
-And these templates:
-
-{{< code file=layouts/_default/list.html >}}
-{{ range .Pages.ByWeight }}
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-{{ end }}
-{{< /code >}}
-
-{{< code file=layouts/_default/single.html >}}
-{{ with .Prev }}
-  <a href="{{ .RelPermalink }}">Previous</a>
-{{ end }}
-
-{{ with .Next }}
-  <a href="{{ .RelPermalink }}">Next</a>
-{{ end }}
-{{< /code >}}
-
-When you visit page-2:
-
-- The `Prev` method points to page-3
-- The `Next` method points to page-1
-
-To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
-
-[site configuration]: /getting-started/configuration/#configure-page
-[`Next`]: /methods/pages/prev
-[`Prev`]: /methods/pages/prev
diff --git a/content/en/methods/page/_common/nextinsection-and-previnsection.md b/content/en/methods/page/_common/nextinsection-and-previnsection.md
deleted file mode 100644 (file)
index 1d1f543..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Hugo determines the _next_ and _previous_ page by sorting the current section's regular pages according to this sorting hierarchy:
-
-Field|Precedence|Sort direction
-:--|:--|:--
-[`weight`]|1|descending
-[`date`]|2|descending
-[`linkTitle`]|3|descending
-[`path`]|4|descending
-
-[`date`]: /methods/page/date/
-[`weight`]: /methods/page/weight/
-[`linkTitle`]: /methods/page/linktitle/
-[`path`]: /methods/page/path/
-
-The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
-
-For example, with this content structure:
-
-```text
-content/
-├── pages/
-│   ├── _index.md
-│   ├── page-1.md   <-- front matter: weight = 10
-│   ├── page-2.md   <-- front matter: weight = 20
-│   └── page-3.md   <-- front matter: weight = 30
-└── _index.md
-```
-
-And these templates:
-
-{{< code file=layouts/_default/list.html >}}
-{{ range .Pages.ByWeight }}
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-{{ end }}
-{{< /code >}}
-
-{{< code file=layouts/_default/single.html >}}
-{{ with .PrevInSection }}
-  <a href="{{ .RelPermalink }}">Previous</a>
-{{ end }}
-
-{{ with .NextInSection }}
-  <a href="{{ .RelPermalink }}">Next</a>
-{{ end }}
-{{< /code >}}
-
-When you visit page-2:
-
-- The `PrevInSection` method points to page-3
-- The `NextInSection` method points to page-1
-
-To reverse the meaning of _next_ and _previous_ you can change the sort direction in your [site configuration], or use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
-
-[site configuration]: /getting-started/configuration/#configure-page
-[`Next`]: /methods/pages/prev
-[`Prev`]: /methods/pages/prev
-
-## Example
-
-Code defensively by checking for page existence:
-
-```go-html-template
-{{ with .PrevInSection }}
-  <a href="{{ .RelPermalink }}">Previous</a>
-{{ end }}
-
-{{ with .NextInSection }}
-  <a href="{{ .RelPermalink }}">Next</a>
-{{ end }}
-```
-
-## Alternative
-
-Use the [`Next`] and [`Prev`] methods on a `Pages` object for more flexibility.
diff --git a/content/en/methods/page/_common/output-format-methods.md b/content/en/methods/page/_common/output-format-methods.md
deleted file mode 100644 (file)
index 5390e7b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Get IDENTIFIER
-: (`any`) Returns the `OutputFormat` object with the given identifier.
-
-MediaType
-: (`media.Type`) Returns the media type of the output format.
-
-MediaType.MainType
-: (`string`) Returns the main type of the output format's media type.
-
-MediaType.SubType
-: (`string`) Returns the subtype of the current format's media type.
-
-Name
-: (`string`) Returns the output identifier of the output format.
-
-Permalink
-: (`string`) Returns the permalink of the page generated by the current output format.
-
-Rel
-: (`string`) Returns the `rel` value of the output format, either the default or as defined in the site configuration.
-
-RelPermalink
-: (`string`) Returns the relative permalink of the page generated by the current output format.
index 6dfaad9ae7dc03120eaf781d81e14196af00a6dc..c7ae7ad5d4cbbd653344fb6ace4b759bba7e57b2 100644 (file)
@@ -4,10 +4,5 @@ linkTitle: Page
 description: Use these methods with a Page object.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 aliases: [/variables/page/]
 ---
-
-Use these methods with a Page object.
index 85e2e0dd3763677e1aa2b2d0c187aad55f87366f..9cd58989bdbe8a1a74a1e1231ca5af68821725fb 100644 (file)
@@ -3,16 +3,10 @@ title: First
 description: Returns the first pager in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/Last
-    - methods/pager/Prev
-    - methods/pager/Next
-    - methods/pager/HasPrev
-    - methods/pager/HasNext
-    - methods/page/Paginate
-  returnType: page.Pager
-  signatures: [PAGER.First]
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: [PAGER.First]
 ---
 
 Use the `First` method to build navigation between pagers.
index e7550d788ee726117075019ee5a7dbfed3610c2f..cf3688efd93fac8545069281af0d1f031790bc96 100644 (file)
@@ -3,16 +3,10 @@ title: HasNext
 description: Reports whether there is a pager after the current pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/HasPrev
-    - methods/pager/Prev
-    - methods/pager/Next
-    - methods/pager/First
-    - methods/pager/Last
-    - methods/page/Paginate
-  returnType: bool
-  signatures: [PAGER.HasNext]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGER.HasNext]
 ---
 
 Use the `HasNext` method to build navigation between pagers.
index 00d5c1deaf4ab33a2689fc9a8378de3e673752e2..4b486b7c52eb2e8118a8a9a682b74f98a043f00d 100644 (file)
@@ -3,16 +3,10 @@ title: HasPrev
 description: Reports whether there is a pager before the current pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/HasNext
-    - methods/pager/Prev
-    - methods/pager/Next
-    - methods/pager/First
-    - methods/pager/Last
-    - methods/page/Paginate
-  returnType: bool
-  signatures: [PAGER.HasPrev]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [PAGER.HasPrev]
 ---
 
 Use the `HasPrev` method to build navigation between pagers.
index 074a469433aa51e5015c814c62e615ad7fa773ba..71dea183d4f73f5af90897162067f3ea930a2eb7 100644 (file)
@@ -3,16 +3,10 @@ title: Last
 description: Returns the last pager in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/First
-    - methods/pager/Prev
-    - methods/pager/Next
-    - methods/pager/HasPrev
-    - methods/pager/HasNext
-    - methods/page/Paginate
-  returnType: page.Pager
-  signatures: [PAGER.Last]
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: [PAGER.Last]
 ---
 
 Use the `Last` method to build navigation between pagers.
index 099ac198e99c69cd9e8608ef6c393c3e7d30d1aa..d7ea9caa43bcd07c393bc834dcda906c1d2b2bcc 100644 (file)
@@ -3,16 +3,10 @@ title: Next
 description: Returns the next pager in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/Prev
-    - methods/pager/HasPrev
-    - methods/pager/HasNext
-    - methods/pager/First
-    - methods/pager/Last
-    - methods/page/Paginate
-  returnType: page.Pager
-  signatures: [PAGER.Next]
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: [PAGER.Next]
 ---
 
 Use the `Next` method to build navigation between pagers.
index 3980cdfe23f907f2855daadb3051e2e304cc9852..9f88126fc992d9ef5cfa69fec8669ae484e4d072 100644 (file)
@@ -3,12 +3,10 @@ title: NumberOfElements
 description: Returns the number of pages in the current pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/TotalNumberOfElements
-    - methods/page/Paginate
-  returnType: int
-  signatures: [PAGER.NumberOfElements]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.NumberOfElements]
 ---
 
 ```go-html-template
index 9dee18c0d065a6a451e840bf82780b71291c5066..46f6d81cb311fcdc19c35f573ec1742d3ff56804 100644 (file)
@@ -3,11 +3,10 @@ title: PageGroups
 description: Returns the page groups in the current pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: page.PagesGroup
-  signatures: [PAGER.PageGroups]
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: [PAGER.PageGroups]
 ---
 
 Use the `PageGroups` method with any of the [grouping methods].
index 0d99c5a1591cc8e477e18adfb92181658a0e4c3f..6d0b8e35d19d655a6becc92c3430e166e53c28f3 100644 (file)
@@ -3,12 +3,10 @@ title: PageNumber
 description: Returns the current pager's number within the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/TotalPages
-    - methods/page/Paginate
-  returnType: int
-  signatures: [PAGER.PageNumber]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.PageNumber]
 ---
 
 Use the `PageNumber` method to build navigation between pagers.
index d69c312079fe667c9d88f051249175d87018a20e..5aad88682391b5464d8b7a378f107ca36628a16a 100644 (file)
@@ -3,15 +3,15 @@ title: PageSize
 description: Returns the number of pages per pager.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [PAGER.PageSize]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.PageSize]
 expiryDate: 2026-06-09 # deprecated 2024-06-09 in v0.128.0
 ---
 
-{{% deprecated-in 0.128.0 %}}
+{{< deprecated-in 0.128.0 >}}
 Use [`PAGER.PagerSize`] instead.
 
 [`PAGER.PagerSize`]: /methods/pager/pagersize/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 5f5f7d3a813dc79e3bb952037a065df861acd62b..b2397a3e8406ca2fa8b043a04f810dc93e6f4bf6 100644 (file)
@@ -3,11 +3,10 @@ title: PagerSize
 description: Returns the number of pages per pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: int
-  signatures: [PAGER.PagerSize]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.PagerSize]
 ---
 
 {{< new-in 0.128.0 />}}
index 5f167c13e06fd672d82e9144f44f06b9cf872d90..e431069f463620e6e9b4d1064b1f2ffc75f25d0e 100644 (file)
@@ -3,11 +3,10 @@ title: Pagers
 description: Returns the pagers collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: page.pagers
-  signatures: [PAGER.Pagers]
+params:
+  functions_and_methods:
+    returnType: page.pagers
+    signatures: [PAGER.Pagers]
 ---
 
 Use the `Pagers` method to build navigation between pagers.
index 1c049d53ba93659e498d112cc6348f2598649e85..6e5772a4898be13866bef12080f9c7465edf82c1 100644 (file)
@@ -3,11 +3,10 @@ title: Pages
 description: Returns the pages in the current pager.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: page.Pages
-  signatures: [PAGER.Pages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGER.Pages]
 ---
 
 ```go-html-template
index c129c6a5a58b698db18f79793a67e54a5e82c492..eb79f96e9fd6e06722f48da52f75db2269754c0c 100644 (file)
@@ -3,16 +3,10 @@ title: Prev
 description: Returns the previous pager in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/Next
-    - methods/pager/HasPrev
-    - methods/pager/HasNext
-    - methods/pager/First
-    - methods/pager/Last
-    - methods/page/Paginate
-  returnType: page.Pager
-  signatures: [PAGER.Prev]
+params:
+  functions_and_methods:
+    returnType: page.Pager
+    signatures: [PAGER.Prev]
 ---
 
 Use the `Prev` method to build navigation between pagers.
index 3cd1c8dad42b0cbf3dabac2cea5ab04ecf66e83a..ad29a01f378ad81c1896cab435349862e80b1bbb 100644 (file)
@@ -3,12 +3,10 @@ title: TotalNumberOfElements
 description: Returns the number of pages in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/NumberOfElements
-    - methods/page/Paginate
-  returnType: int
-  signatures: [PAGER.TotalNumberOfElements]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.TotalNumberOfElements]
 ---
 
 ```go-html-template
index e305beeffa0b4a333001ad636bb4ea71397d0d4b..63da5d7862044a5b8263f90deed6082d179656a8 100644 (file)
@@ -3,12 +3,10 @@ title: TotalPages
 description: Returns the number of pagers in the pager collection.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pager/PageNumber
-    - methods/page/Paginate
-  returnType: int
-  signatures: [PAGER.TotalPages]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGER.TotalPages]
 ---
 
 Use the `TotalPages` method to build navigation between pagers.
index 3daddbbd5aaf559986f823f001b92b4a8ee0f27a..a3558ba7cd59529e44b413b60bc23409992bb7f6 100644 (file)
@@ -3,11 +3,10 @@ title: URL
 description: Returns the URL of the current pager relative to the site root.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Paginate
-  returnType: string
-  signatures: [PAGER.URL]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [PAGER.URL]
 ---
 
 Use the `URL` method to build navigation between pagers.
index 58a1def7b170271350ccfa81a8779d5c76725878..7a79bf42fac1e0ebc91bd9d443b3d878ca691ac4 100644 (file)
@@ -1,14 +1,6 @@
 ---
 title: Pager methods
 linkTitle: Pager
-description: Use these methods with Pager objects when paginating a list page.
+description: Use these methods with Pager objects when building navigation for a paginated list page.
 keywords: []
-menu:
-  docs:
-    identifier:
-    parent: methods
 ---
-
-Use these methods with Pager objects when building navigation for a [paginated] list page.
-
-[paginated]: /templates/pagination/
index eb4e8653547562423d7740b39d82d5dbc2223fac..18f1b985ee7f9ba0a55181e98a9f592722391f49 100644 (file)
@@ -3,18 +3,15 @@ title: ByDate
 description: Returns the given page collection sorted by date in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByExpiryDate
-    - methods/pages/ByLastMod
-    - methods/pages/ByPublishDate
-  returnType: page.Pages
-  signatures: [PAGES.ByDate]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByDate]
 ---
 
 When sorting by date, the value is determined by your [site configuration], defaulting to the `date` field in front matter.
 
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
 ```go-html-template
 {{ range .Pages.ByDate }}
index 41753c340055e8460595e82edf209a23d3d4412a..703988c4e367f14bb847bc3bb2a734df882d6c6c 100644 (file)
@@ -3,18 +3,15 @@ title: ByExpiryDate
 description: Returns the given page collection sorted by expiration date in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByDate
-    - methods/pages/ByLastMod
-    - methods/pages/ByPublishDate
-  returnType: page.Pages
-  signatures: [PAGES.ByExpiryDate]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByExpiryDate]
 ---
 
 When sorting by expiration date, the value is determined by your [site configuration], defaulting to the `expiryDate` field in front matter.
 
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
 ```go-html-template
 {{ range .Pages.ByExpiryDate }}
index 30d87f95434fc220190f25f4885a246b689167e6..36244eb4dda482cdd8d3e76e341029900e2c1778 100644 (file)
@@ -3,10 +3,10 @@ title: ByLanguage
 description: Returns the given page collection sorted by language in ascending order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGES.ByLanguage]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByLanguage]
 ---
 
 ```go-html-template
index 385093134e01106a38582cca3e32277b757b0894..3c03d2a6e277b0ea80c5bb420e6222ae5058b641 100644 (file)
@@ -3,18 +3,15 @@ title: ByLastmod
 description: Returns the given page collection sorted by last modification date in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByDate
-    - methods/pages/ByExpiryDate
-    - methods/pages/ByPublishDate
-  returnType: page.Pages
-  signatures: [PAGES.ByLastmod]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByLastmod]
 ---
 
 When sorting by last modification date, the value is determined by your [site configuration], defaulting to the `lastmod` field in front matter.
 
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
 ```go-html-template
 {{ range .Pages.ByLastmod }}
index 602b548c26134e2e4c9d7cc7f92d5fd51d094c10..c47bf98ba7c26f8e8259798a7cdde5fa59ea98d5 100644 (file)
@@ -3,10 +3,10 @@ title: ByLength
 description: Returns the given page collection sorted by content length in ascending order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGES.ByLength]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByLength]
 ---
 
 ```go-html-template
index 073b1e1ba336777939ed771c451d26b51db8bea1..4a024d25a14d81b79b996abf728d0d1aa528f8fd 100644 (file)
@@ -3,12 +3,10 @@ title: ByLinkTitle
 description: Returns the given page collection sorted by link title in ascending order, falling back to title if link title is not defined.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByTitle
-    - methods/pages/ByParam
-  returnType: page.Pages
-  signatures: [PAGES.ByLinkTitle]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByLinkTitle]
 ---
 
 ```go-html-template
index 9a919cc886f86845cdd17ae35afce22827e7dcdb..9544122a6b1971d37c9995e56baa8a9fa084b872 100644 (file)
@@ -3,12 +3,10 @@ title: ByParam
 description: Returns the given page collection sorted by the given parameter in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByTitle
-    - methods/pages/ByLinkTitle
-  returnType: page.Pages
-  signatures: [PAGES.ByParam PARAM]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByParam PARAM]
 ---
 
 If the given parameter is not present in front matter, Hugo will use the matching parameter in your site configuration if present.
index e622636a28fa466af613da66ed2f7edf462e6b37..3dde6fd954025942f12c98ae94186cadf0feb43e 100644 (file)
@@ -3,18 +3,15 @@ title: ByPublishDate
 description: Returns the given page collection sorted by publish date in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByDate
-    - methods/pages/ByExpiryDate
-    - methods/pages/ByLastMod
-  returnType: page.Pages
-  signatures: [PAGES.ByPublishDate]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByPublishDate]
 ---
 
 When sorting by publish date, the value is determined by your [site configuration], defaulting to the `publishDate` field in front matter.
 
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
 ```go-html-template
 {{ range .Pages.ByPublishDate }}
index ee54d5cdaec62043bf1efbc486cef6e94439a75e..e10c4171458bad476ef2624b8dd656724623f427 100644 (file)
@@ -3,12 +3,10 @@ title: ByTitle
 description: Returns the given page collection sorted by title in ascending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/ByLinkTitle
-    - methods/pages/ByParam
-  returnType: page.Pages
-  signatures: [PAGES.ByTitle]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByTitle]
 ---
 
 ```go-html-template
index 76d12e196a83717991f2906029c0faad7cbc8ecf..ba255d3c33202a74eb766e035c1aff80ec85718e 100644 (file)
@@ -3,10 +3,10 @@ title: ByWeight
 description: Returns the given page collection sorted by weight in ascending order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGES.ByWeight]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.ByWeight]
 ---
 
 Assign a [weight](g) to a page using the `weight` field in front matter. The weight must be a non-zero integer. Lighter items float to the top, while heavier items sink to the bottom. Unweighted or zero-weighted pages are placed at the end of the collection.
index b46a39bdfb21b937c23fd92bb88132a8d9d0ff96..aff0800e947ce5dec69c0230199683cdf7fedfa8 100644 (file)
@@ -3,13 +3,13 @@ title: GroupBy
 description: Returns the given page collection grouped by the given field in ascending order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupBy FIELD [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupBy FIELD [SORT]']
 ---
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 ```go-html-template
 {{ range .Pages.GroupBy "Section" }}
index b29b908434df24273eb732702a0dc956a8fbf1bb..7ef4843a4ea84803eee9cb1d3dcc7a3c3356d985 100644 (file)
@@ -3,14 +3,10 @@ title: GroupByDate
 description: Returns the given page collection grouped by date in descending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/GroupByExpiryDate
-    - methods/pages/GroupByLastMod
-    - methods/pages/GroupByParamDate
-    - methods/pages/GroupByPublishDate
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByDate LAYOUT [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByDate LAYOUT [SORT]']
 ---
 
 When grouping by date, the value is determined by your [site configuration], defaulting to the `date` field in front matter.
@@ -19,9 +15,9 @@ The [layout string] has the same format as the layout string for the [`time.Form
 
 [`time.Format`]: /functions/time/format/
 [layout string]: #layout-string
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 To group content by year and month:
 
@@ -64,4 +60,4 @@ The pages within each group will also be sorted by date, either ascending or des
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
index 261d15fb560cf2c5641548977add6d2178901da9..d209e6c2b7d1f4c31d2544a43c576d8a386b0294 100644 (file)
@@ -3,14 +3,10 @@ title: GroupByExpiryDate
 description: Returns the given page collection grouped by expiration date in descending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/GroupByDate
-    - methods/pages/GroupByLastMod
-    - methods/pages/GroupByParamDate
-    - methods/pages/GroupByPublishDate
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByExpiryDate LAYOUT [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByExpiryDate LAYOUT [SORT]']
 ---
 
 When grouping by expiration date, the value is determined by your [site configuration], defaulting to the `expiryDate` field in front matter.
@@ -19,9 +15,9 @@ The [layout string] has the same format as the layout string for the [`time.Form
 
 [`time.Format`]: /functions/time/format/
 [layout string]: #layout-string
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 To group content by year and month:
 
@@ -64,4 +60,4 @@ The pages within each group will also be sorted by expiration date, either ascen
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
index 4f9afdded71165eaa6431a60036033e497bfe353..8729cd3c965417e4f00fa77cb0fab4727a78662b 100644 (file)
@@ -3,14 +3,10 @@ title: GroupByLastmod
 description: Returns the given page collection grouped by last modification date in descending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/GroupByDate
-    - methods/pages/GroupByExpiryDate
-    - methods/pages/GroupByParamDate
-    - methods/pages/GroupByPublishDate
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByLastmod LAYOUT [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByLastmod LAYOUT [SORT]']
 ---
 
 When grouping by last modification date, the value is determined by your [site configuration], defaulting to the `lastmod` field in front matter.
@@ -19,9 +15,9 @@ The [layout string] has the same format as the layout string for the [`time.Form
 
 [`time.Format`]: /functions/time/format/
 [layout string]: #layout-string
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 To group content by year and month:
 
@@ -64,4 +60,4 @@ The pages within each group will also be sorted by last modification date, eithe
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
index 9c63ab902d7d9872714b44dbf24d4154c2585f2d..6764144d6fe875963cc98d6589d21cfa2004ebfc 100644 (file)
@@ -3,13 +3,13 @@ title: GroupByParam
 description: Returns the given page collection grouped by the given parameter in ascending order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByParam PARAM [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByParam PARAM [SORT]']
 ---
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 ```go-html-template
 {{ range .Pages.GroupByParam "color" }}
index 826d3c83ed3cd4fc800766544dce637aa44683c2..b05a096d285edfa1b9738c351f98a7c36d8b67b6 100644 (file)
@@ -3,14 +3,10 @@ title: GroupByParamDate
 description: Returns the given page collection grouped by the given date parameter in descending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/GroupByDate
-    - methods/pages/GroupByExpiryDate
-    - methods/pages/GroupByLastMod
-    - methods/pages/GroupByPublishDate
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByParamDate PARAM LAYOUT [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByParamDate PARAM LAYOUT [SORT]']
 ---
 
 The [layout string] has the same format as the layout string for the [`time.Format`] function. The resulting group key is [localized](g) for language and region.
@@ -18,7 +14,7 @@ The [layout string] has the same format as the layout string for the [`time.Form
 [`time.Format`]: /functions/time/format/
 [layout string]: #layout-string
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 To group content by year and month:
 
@@ -61,4 +57,4 @@ The pages within each group will also be sorted by the parameter date, either as
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
index 40e43c3b87c4f83f753c4c85466d76d635b44166..50e12f0850dc4dc87ad3b79573d37e14d11171b1 100644 (file)
@@ -3,14 +3,10 @@ title: GroupByPublishDate
 description: Returns the given page collection grouped by publish date in descending order.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/GroupByDate
-    - methods/pages/GroupByExpiryDate
-    - methods/pages/GroupByLastMod
-    - methods/pages/GroupByParamDate
-  returnType: page.PagesGroup
-  signatures: ['PAGES.GroupByPublishDate LAYOUT [SORT]']
+params:
+  functions_and_methods:
+    returnType: page.PagesGroup
+    signatures: ['PAGES.GroupByPublishDate LAYOUT [SORT]']
 ---
 
 When grouping by publish date, the value is determined by your [site configuration], defaulting to the `publishDate` field in front matter.
@@ -19,9 +15,9 @@ The [layout string] has the same format as the layout string for the [`time.Form
 
 [`time.Format`]: /functions/time/format/
 [layout string]: #layout-string
-[site configuration]: /getting-started/configuration/#configure-dates
+[site configuration]: /configuration/front-matter/#dates
 
-{{% include "methods/pages/_common/group-sort-order.md" %}}
+{{% include "/_common/methods/pages/group-sort-order.md" %}}
 
 To group content by year and month:
 
@@ -64,4 +60,4 @@ The pages within each group will also be sorted by publish date, either ascendin
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
index 0a5989a1a6792a1078633e00abf4fb47cda53f86..85b3267cd270624358639a813b58aefaeea5be0c 100644 (file)
@@ -3,10 +3,10 @@ title: Len
 description: Returns the number of pages in the given page collection.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [PAGES.Len]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [PAGES.Len]
 ---
 
 ```go-html-template
index bf889fd7eb41ed520ec601bfbab25f8ab038d6b3..6ee3de24db994bf9a88e64b347518ce8abcf593f 100644 (file)
@@ -3,10 +3,10 @@ title: Limit
 description: Returns the first N pages from the given page collection.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGES.Limit NUMBER]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.Limit NUMBER]
 ---
 
 ```go-html-template
index dcf1231ac70480e86f11bbd0b715a7754880f851..ce091c1abaa32e84c96a5fbc5cf228b3a444fdd5 100644 (file)
@@ -3,15 +3,10 @@ title: Next
 description: Returns the next page in a page collection, relative to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/Prev
-    - methods/page/Next
-    - methods/page/Prev
-    - methods/page/NextInSection
-    - methods/page/PrevInSection
-  returnType: page.Page
-  signatures: [PAGES.Next PAGE]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [PAGES.Next PAGE]
 ---
 
-{{% include "methods/pages/_common/next-and-prev.md" %}}
+{{% include "/_common/methods/pages/next-and-prev.md" %}}
index 2d873852179cc99d58989709bdccecdc12fc9e45..004b9496d30d22c1e823d461e050c27a861c9b5f 100644 (file)
@@ -3,15 +3,10 @@ title: Prev
 description: Returns the previous page in a page collection, relative to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/pages/Next
-    - methods/page/Next
-    - methods/page/Prev
-    - methods/page/NextInSection
-    - methods/page/PrevInSection
-  returnType: page.Pages
-  signatures: [PAGES.Prev PAGE]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.Prev PAGE]
 ---
 
-{{% include "methods/pages/_common/next-and-prev.md" %}}
+{{% include "/_common/methods/pages/next-and-prev.md" %}}
index a80722a0ec1296e99afc5e93833d2a041dbaa67e..22eeb4dfa7780fc97235dbf517fff3854f6741a7 100644 (file)
@@ -3,21 +3,19 @@ title: Related
 description: Returns a collection of pages related to the given page.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/HeadingsFiltered
-    - functions/collections/KeyVals
-  returnType: page.Pages
-  signatures:
-    - PAGES.Related PAGE
-    - PAGES.Related OPTIONS
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures:
+      - PAGES.Related PAGE
+      - PAGES.Related OPTIONS
 ---
 
 Based on front matter, Hugo uses several factors to identify content related to the given page. Use the default [related content configuration], or tune the results to the desired indices and parameters. See&nbsp;[details].
 
 The argument passed to the `Related` method may be a `Page` or an options map. For example, to pass the current page:
 
-{{< code file=layouts/_default/single.html  >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ with .Site.RegularPages.Related . | first 5 }}
   <p>Related pages:</p>
   <ul>
@@ -26,11 +24,11 @@ The argument passed to the `Related` method may be a `Page` or an options map. F
     {{ end }}
   </ul>
 {{ end }}
-{{< /code >}}
+```
 
 To pass an options map:
 
-{{< code file=layouts/_default/single.html  >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ $opts := dict
   "document" .
   "indices" (slice "tags" "keywords")
@@ -43,7 +41,7 @@ To pass an options map:
     {{ end }}
   </ul>
 {{ end }}
-{{< /code >}}
+```
 
 ## Options
 
@@ -73,5 +71,5 @@ A contrived example using all of the above:
 }}
 ```
 
-[details]: /content-management/related/
-[related content configuration]: /content-management/related/
+[details]: /content-management/related-content/
+[related content configuration]: /configuration/related-content/
index e03e0ea472f8ad2ca225d8d0057d91bb17db4389..23c4b03243f011150d93ae7648668a9cd809a765 100644 (file)
@@ -3,10 +3,10 @@ title: Reverse
 description: Returns the given page collection in reverse order.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Pages
-  signatures: [PAGES.Reverse]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [PAGES.Reverse]
 ---
 
 ```go-html-template
diff --git a/content/en/methods/pages/_common/_index.md b/content/en/methods/pages/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/methods/pages/_common/group-sort-order.md b/content/en/methods/pages/_common/group-sort-order.md
deleted file mode 100644 (file)
index e2997a1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-For the optional sort order, specify either `asc` for ascending order, or `desc` for descending order.
diff --git a/content/en/methods/pages/_common/next-and-prev.md b/content/en/methods/pages/_common/next-and-prev.md
deleted file mode 100644 (file)
index 5407839..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Hugo determines the _next_ and _previous_ page by sorting the page collection according to this sorting hierarchy:
-
-Field|Precedence|Sort direction
-:--|:--|:--
-[`weight`]|1|descending
-[`date`]|2|descending
-[`linkTitle`]|3|descending
-[`path`]|4|descending
-
-[`date`]: /methods/page/date/
-[`weight`]: /methods/page/weight/
-[`linkTitle`]: /methods/page/linktitle/
-[`path`]: /methods/page/path/
-
-The sorted page collection used to determine the _next_ and _previous_ page is independent of other page collections, which may lead to unexpected behavior.
-
-For example, with this content structure:
-
-```text
-content/
-├── pages/
-│   ├── _index.md
-│   ├── page-1.md   <-- front matter: weight = 10
-│   ├── page-2.md   <-- front matter: weight = 20
-│   └── page-3.md   <-- front matter: weight = 30
-└── _index.md
-```
-
-And these templates:
-
-{{< code file=layouts/_default/list.html >}}
-{{ range .Pages.ByWeight}}
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-{{ end }}
-{{< /code >}}
-
-{{< code file=layouts/_default/single.html >}}
-{{ $pages := .CurrentSection.Pages.ByWeight }}
-
-{{ with $pages.Prev . }}
-  <a href="{{ .RelPermalink }}">Previous</a>
-{{ end }}
-
-{{ with $pages.Next . }}
-  <a href="{{ .RelPermalink }}">Next</a>
-{{ end }}
-{{< /code >}}
-
-When you visit page-2:
-
-- The `Prev` method points to page-3
-- The `Next` method points to page-1
-
-To reverse the meaning of _next_ and _previous_ you can chain the [`Reverse`] method to the page collection definition:
-
-{{< code file=layouts/_default/single.html >}}
-{{ $pages := .CurrentSection.Pages.ByWeight.Reverse }}
-
-{{ with $pages.Prev . }}
-  <a href="{{ .RelPermalink }}">Previous</a>
-{{ end }}
-
-{{ with $pages.Next . }}
-  <a href="{{ .RelPermalink }}">Next</a>
-{{ end }}
-{{< /code >}}
-
-[`Reverse`]: /methods/pages/reverse/
index d8a64f5d5f8f8d86dc8b816b7ec7260819b54080..f2495ae49e0122ec6dd4f2fddafc114f0a82fe43 100644 (file)
@@ -4,10 +4,5 @@ linkTitle: Pages
 description: Use these methods with a collection of Page objects.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 aliases: [/variables/pages]
 ---
-
-Use these methods with a collection of Page objects.
index 08f63ae3f56bcfb9d5348f081846a76b1ccbfe61..14d0a40d8c5c610bacbfa5cdf448d6f7eede095f 100644 (file)
@@ -3,42 +3,36 @@ title: Colors
 description: Applicable to images, returns a slice of the most dominant colors using a simple histogram method.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: '[]images.Color'
-  signatures: [RESOURCE.Colors]
-toc: true
-math: true
+params:
+  functions_and_methods:
+    returnType: '[]images.Color'
+    signatures: [RESOURCE.Colors]
 ---
 
-The `Resources.Colors` method returns a slice of the most dominant colors in an image, ordered from most dominant to least dominant. This method is fast, but if you also downsize your image you can improve performance by extracting the colors from the scaled image.
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
+The `Resources.Colors` method returns a slice of the most dominant colors in an image, ordered from most dominant to least dominant. This method is fast, but if you also downsize your image you can improve performance by extracting the colors from the scaled image.
 
 ## Methods
 
 Each color is an object with the following methods:
 
-ColorHex
-{{< new-in 0.125.0 />}}
-: (`string`) Returns the [hexadecimal color] value, prefixed with a hash sign.
+### ColorHex
 
-Luminance
 {{< new-in 0.125.0 />}}
-: (`float64`) Returns the [relative luminance] of the color in the sRGB colorspace in the range [0, 1]. A value of `0` represents the darkest black, while a value of `1` represents the lightest white.
 
-{{% note %}}
-Image filters such as [`images.Dither`], [`images.Padding`], and [`images.Text`] accept either hexadecimal color values or `images.Color` objects as arguments.
+(`string`) Returns the [hexadecimal color] value, prefixed with a hash sign.
 
-Hugo renders an `images.Color` object as a hexadecimal color value.
+### Luminance
 
-[`images.Dither`]: /functions/images/dither/
-[`images.Padding`]: /functions/images/padding/
-[`images.Text`]: /functions/images/text/
-{{% /note %}}
+{{< new-in 0.125.0 />}}
 
-[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
-[relative luminance]: https://www.w3.org/TR/WCAG21/#dfn-relative-luminance
+(`float64`) Returns the [relative luminance] of the color in the sRGB colorspace in the range [0, 1]. A value of `0` represents the darkest black, while a value of `1` represents the lightest white.
+
+> [!note]
+> Image filters such as [`images.Dither`], [`images.Padding`], and [`images.Text`] accept either hexadecimal color values or `images.Color` objects as arguments.
+>
+> Hugo renders an `images.Color` object as a hexadecimal color value.
 
 ## Sorting
 
@@ -169,7 +163,12 @@ Calculate the contrast ratio to determine WCAG conformance:
 {{ end }}
 ```
 
-[WCAG]: https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines
+[`images.Dither`]: /functions/images/dither/
+[`images.Padding`]: /functions/images/padding/
+[`images.Text`]: /functions/images/text/
 [contrast ratio]: https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio
 [enhanced]: https://www.w3.org/WAI/WCAG22/quickref/?showtechniques=145#contrast-enhanced
+[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
 [minimum]: https://www.w3.org/WAI/WCAG22/quickref/?showtechniques=145#contrast-minimum
+[relative luminance]: https://www.w3.org/TR/WCAG21/#dfn-relative-luminance
+[WCAG]: https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines
index 4135113e973323dc1c6542bfdbd80a2d0ba8670b..2c2c12d3ae5af4a081cd5cc375dbe5445b937833 100644 (file)
@@ -3,20 +3,21 @@ title: Content
 description: Returns the content of the given resource.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: any
-  signatures: [RESOURCE.Content]
-toc:
+params:
+  functions_and_methods:
+    returnType: any
+    signatures: [RESOURCE.Content]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 The `Content` method on a `Resource` object returns `template.HTML` when the resource type is `page`, otherwise it returns a `string`.
 
 [resource type]: /methods/resource/resourcetype/
 
-{{< code file=assets/quotations/kipling.txt >}}
+```text {file="assets/quotations/kipling.txt"}
 He travels the fastest who travels alone.
-{{< /code >}}
+```
 
 To get the content:
 
@@ -57,5 +58,3 @@ To create inline JavaScript:
   <script>{{ .Content | safeJS }}</script>
 {{ end }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
index 711fc07b0d8cc8263dd1d65f3d78ddc173d37b54..97b3b95d3b2cdc227665da072d533df0681b0086 100644 (file)
@@ -3,18 +3,14 @@ title: Crop
 description: Applicable to images, returns an image resource cropped to the given dimensions without resizing.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Fit
-    - methods/resource/Fill
-    - methods/resource/Resize
-    - methods/resource/Process
-    - functions/images/Process
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Crop SPEC]
-toc: true
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Crop SPEC]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Crop an image to match the given dimensions without resizing. You must provide both width and height.
 
 ```go-html-template
@@ -25,9 +21,7 @@ Crop an image to match the given dimensions without resizing. You must provide b
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-{{% include "/methods/resource/_common/processing-spec.md" %}}
+{{% include "/_common/methods/resource/processing-spec.md" %}}
 
 ## Example
 
index b6744d1be5d9aeefbf88a3a7d1bf0547684374b9..0709ca50abaf2d5f51d259b422118ea763e012ea 100644 (file)
@@ -3,18 +3,18 @@ title: Data
 description: Applicable to resources returned by the resources.GetRemote function, returns information from the HTTP response.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/resources/GetRemote
-    - methods/resource/Err
-  returnType: map
-  signatures: [RESOURCE.Data]
+params:
+  functions_and_methods:
+    returnType: map
+    signatures: [RESOURCE.Data]
 ---
 
 The `Data` method on a resource returned by the [`resources.GetRemote`] function returns information from the HTTP response.
 
 [`resources.GetRemote`]: /functions/resources/getremote/
 
+## Example
+
 ```go-html-template
 {{ $url := "https://example.org/images/a.jpg" }}
 {{ $opts := dict "responseHeaders" (slice "Server") }}
@@ -36,30 +36,31 @@ The `Data` method on a resource returned by the [`resources.GetRemote`] function
 {{ end }}
 ```
 
-###### ContentLength
+## Methods
+
+### ContentLength
 
 (`int`) The content length in bytes.
 
-###### ContentType
+### ContentType
 
 (`string`) The content type.
 
-###### Headers
+### Headers
 
 (`map[string][]string`) A map of response headers matching those requested in the [`responseHeaders`] option passed to the `resources.GetRemote` function. The header name matching is case-insensitive. In most cases there will be one value per header key.
 
-[`responseHeaders`]: /functions/resources/getremote/#responseheaders
-
-###### Status
+### Status
 
 (`string`) The HTTP status text.
 
-###### StatusCode
+### StatusCode
 
 (`int`) The HTTP status code.
 
-###### TransferEncoding
+### TransferEncoding
 
 (`string`) The transfer encoding.
 
 [`resources.GetRemote`]: /functions/resources/getremote/
+[`responseHeaders`]: /functions/resources/getremote/#responseheaders
index 34ba6f9bcbdf5e74b0a9344fc64c159f940b4bc1..591af82666f3bb8012c62fa01aa124858478934c 100644 (file)
@@ -1,22 +1,20 @@
 ---
 title: Err
-description: Applicable to resources returned by the resources.GetRemote function, returns an error message if the HTTP request fails, else nil. 
+description: Applicable to resources returned by the resources.GetRemote function, returns an error message if the HTTP request fails, else nil.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/resources/GetRemote
-    - methods/resource/Data
-  returnType: resource.resourceError
-  signatures: [RESOURCE.Err]
+params:
+  functions_and_methods:
+    returnType: resource.resourceError
+    signatures: [RESOURCE.Err]
 expiryDate: 2027-01-16 # deprecated 2025-01-16 in v0.141.0
 ---
 
-{{% deprecated-in 0.141.0 %}}
+{{< deprecated-in 0.141.0 >}}
 Use the `try` statement instead. See [example].
 
 [example]: /functions/go-template/try/#example
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
 
 The `Err` method on a resource returned by the [`resources.GetRemote`] function returns an error message if the HTTP request fails, else nil. If you do not handle the error yourself, Hugo will fail the build.
 
@@ -58,6 +56,5 @@ To log an error as a warning instead of an error:
 {{ end }}
 ```
 
-{{% note %}}
-An HTTP response with a 404 status code is not an HTTP request error. To handle 404 status codes, code defensively using the nested `with-else-end` construct as shown above.
-{{% /note %}}
+> [!note]
+> An HTTP response with a 404 status code is not an HTTP request error. To handle 404 status codes, code defensively using the nested `with-else-end` construct as shown above.
index a8e5a42aa601fa327411e8a4e7ca83940e75a31c..443a0ee1a769185ae26828c000e77123cd17e7ff 100644 (file)
@@ -3,28 +3,35 @@ title: Exif
 description: Applicable to JPEG, PNG, TIFF, and WebP images, returns an EXIF object containing image metadata.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: exif.ExifInfo
-  signatures: [RESOURCE.Exif]
-toc: true
+params:
+  functions_and_methods:
+    returnType: exif.ExifInfo
+    signatures: [RESOURCE.Exif]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Applicable to JPEG, PNG, TIFF, and WebP images, the `Exif` method on an image `Resource` object returns an [EXIF] object containing image metadata.
 
 ## Methods
 
-Date
-: (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`] function.
+### Date
+
+(`time.Time`) Returns the image creation date/time. Format with the [`time.Format`] function.
+
+### Lat
+
+(`float64`) Returns the GPS latitude in degrees.
 
-Lat
-: (`float64`) Returns the GPS latitude in degrees.
+### Long
 
-Long
-: (`float64`) Returns the GPS longitude in degrees.
+(`float64`) Returns the GPS longitude in degrees.
 
-Tags
-: (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration].
+### Tags
+
+(`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection. See [configure imaging].
+
+[configure imaging]: /configuration/imaging/#exif-data
 
 ## Examples
 
@@ -71,8 +78,5 @@ To list specific values:
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
 [exif]: https://en.wikipedia.org/wiki/Exif
-[site configuration]: /content-management/image-processing/#exif-data
 [`time.Format`]: /functions/time/format/
index 8bbaf93eec5c8192f2810f83536c4bf0a78bcacb..82c696c91226236ffbf56e885c076c355773da6a 100644 (file)
@@ -1,20 +1,16 @@
 ---
 title: Fill
-description:  Applicable to images, returns an image resource cropped and resized to the given dimensions.
+description: Applicable to images, returns an image resource cropped and resized to the given dimensions.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Crop
-    - methods/resource/Fit
-    - methods/resource/Resize
-    - methods/resource/Process
-    - functions/images/Process
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Fill SPEC]
-toc: true
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Fill SPEC]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Crop and resize an image to match the given dimensions. You must provide both width and height.
 
 ```go-html-template
@@ -25,9 +21,7 @@ Crop and resize an image to match the given dimensions. You must provide both wi
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-{{% include "/methods/resource/_common/processing-spec.md" %}}
+{{% include "/_common/methods/resource/processing-spec.md" %}}
 
 ## Example
 
index 2b059c993445c6a0c8ac201f391484450f2673c6..b83c3d8cba2df01411aa315f07767e302b7d863c 100644 (file)
@@ -3,14 +3,14 @@ title: Filter
 description: Applicable to images, applies one or more image filters to the given image resource.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/images/Filter
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Filter FILTER...]
-toc: true
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Filter FILTER...]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Apply one or more [image filters](#image-filters) to the given image.
 
 To apply a single filter:
@@ -41,8 +41,6 @@ You can also apply image filters using the [`images.Filter`] function.
 
 [`images.Filter`]: /functions/images/filter/
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
 ## Example
 
 ```go-html-template
@@ -65,4 +63,4 @@ You can also apply image filters using the [`images.Filter`] function.
 
 Use any of these filters with the `Filter` method.
 
-{{< list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude >}}
+{{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}}
index 13354fe5a3137853f4dfb9d0db08f83d2f78394d..7b416c4a12ffbc620d4b3a85a67f176b32d0a076 100644 (file)
@@ -1,20 +1,16 @@
 ---
 title: Fit
-description: Applicable to images, returns an image resource downscaled to fit the given dimensions while maintaining aspect ratio. 
+description: Applicable to images, returns an image resource downscaled to fit the given dimensions while maintaining aspect ratio.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Crop
-    - methods/resource/Fill
-    - methods/resource/Resize
-    - methods/resource/Process
-    - functions/images/Process
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Fit SPEC]
-toc: true
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Fit SPEC]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height.
 
 ```go-html-template
@@ -25,9 +21,7 @@ Downscale an image to fit the given dimensions while maintaining aspect ratio. Y
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-{{% include "/methods/resource/_common/processing-spec.md" %}}
+{{% include "/_common/methods/resource/processing-spec.md" %}}
 
 ## Example
 
index dcaf6c514ff261f65ec236f0ce273bbef133fd26..cc131378a6fbff79acbe3561e14d3a948f8c29ba 100644 (file)
@@ -3,13 +3,14 @@ title: Height
 description: Applicable to images, returns the height of the given resource.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Width
-  returnType: int
-  signatures: [RESOURCE.Height]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [RESOURCE.Height]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
   {{ .Height }} → 400
@@ -23,5 +24,3 @@ Use the `Width` and `Height` methods together when rendering an `img` element:
   <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 {{ end }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
diff --git a/content/en/methods/resource/Key.md b/content/en/methods/resource/Key.md
deleted file mode 100644 (file)
index 2dbd371..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Key
-description: Returns the unique key for the given resource, equivalent to its publishing path.
-draft: true
-categories: []
-keywords: []
-action:
-  related:
-    - methods/resource/Permalink
-    - methods/resource/RelPermalink
-    - methods/resource/Publish
-  returnType: string
-  signatures: [RESOURCE.Key]
----
-
-By way of example, consider this site configuration:
-
-{{< code-toggle file=hugo >}}
-baseURL = 'https://example.org/docs/'
-{{< /code-toggle >}}
-
-And this template:
-
-```go-html-template
-  {{ with resources.Get "images/a.jpg" }}
-    {{ with resources.Copy "foo/bar/b.jpg" . }}
-      {{ .Key }} → foo/bar/b.jpg
-
-      {{ .Name }} → images/a.jpg
-      {{ .Title }} → images/a.jpg
-
-      {{ .RelPermalink }} → /docs/foo/bar/b.jpg
-    {{ end }}
-  {{ end }}
-```
-
-We used the [`resources.Copy`] function to change the publishing path. The `Key` method returns the updated path, but note that it is different than the value returned by [`RelPermalink`]. The `RelPermalink` value includes the subdirectory segment of the `baseURL` in the site configuration.
-
-The `Key` method is useful if you need to get the resource's publishing path without publishing the resource. Unlike the `Permalink`, `RelPermalink`, or `Publish` methods, calling `Key` will not publish the resource.
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-[`Permalink`]: /methods/resource/permalink/
-[`RelPermalink`]: /methods/resource/relpermalink/
-[`resources.Copy`]: /functions/resources/copy/
index 6dea8706cd958215564570094b876d8ad589fca4..7721f69ba1b6828fcc523d95f64365deef5efcd6 100644 (file)
@@ -3,18 +3,21 @@ title: MediaType
 description: Returns a media type object for the given resource.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: media.Type
-  signatures: [RESOURCE.MediaType]
+params:
+  functions_and_methods:
+    returnType: media.Type
+    signatures: [RESOURCE.MediaType]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 The `MediaType` method on a `Resource` object returns an object with additional methods.
 
 ## Methods
 
-Type
-: (`string`) The resource's media type.
+### Type
+
+(`string`) The resource's media type.
 
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
@@ -22,8 +25,9 @@ Type
 {{ end }}
 ```
 
-MainType
-: (`string`) The main type of the resource’s media type.
+### MainType
+
+(`string`) The main type of the resource's media type.
 
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
@@ -31,8 +35,9 @@ MainType
 {{ end }}
 ```
 
-SubType
-: (`string`) The subtype of the resource’s media type. This may or may not correspond to the file suffix.
+### SubType
+
+(`string`) The subtype of the resource's media type. This may or may not correspond to the file suffix.
 
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
@@ -40,8 +45,9 @@ SubType
 {{ end }}
 ```
 
-Suffixes
-: (`slice`) A slice of possible file suffixes for the resource’s media type.
+### Suffixes
+
+(`slice`) A slice of possible file suffixes for the resource's media type.
 
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
@@ -49,4 +55,12 @@ Suffixes
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
+### FirstSuffix.Suffix
+
+(`string`) The first of the possible file suffixes for the resource's media type.
+
+```go-html-template
+{{ with resources.Get "images/a.jpg" }}
+  {{ .MediaType.FirstSuffix.Suffix }} → jpg
+{{ end }}
+```
index 28ccf3abf278a4447c65db8a2f52a40eb67e7889..c678c96c9a8d13b937195ffab2b93624f0fbf71c 100644 (file)
@@ -3,12 +3,10 @@ title: Name
 description: Returns the name of the given resource as optionally defined in front matter, falling back to its file path.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Title
-  returnType: string
-  signatures: [RESOURCE.Name]
-toc: true
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [RESOURCE.Name]
 ---
 
 The value returned by the `Name` method on a `Resource` object depends on the resource type.
index a171b3ddf9a1f26b3a2cccbf19b13c8a6d46fc65..38f2ef6c27e54f61553951e5c207db8f34000cc6 100644 (file)
@@ -3,10 +3,10 @@ title: Params
 description: Returns a map of resource parameters as defined in front matter.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: map
-  signatures: [RESOURCE.Params]
+params:
+  functions_and_methods:
+    returnType: map
+    signatures: [RESOURCE.Params]
 ---
 
 Use the `Params` method with [page resources](g). It is not applicable to either [global resources](g) or [remote resources](g).
index 4c87b4b46498267a53d171f2267a499747322027..a8ec2d323ce649de74c37232eda879dd5bc1bd49 100644 (file)
@@ -1,16 +1,16 @@
 ---
 title: Permalink
-description:  Publishes the given resource and returns its permalink.
+description: Publishes the given resource and returns its permalink.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/RelPermalink
-    - methods/resource/Publish
-  returnType: string
-  signatures: [RESOURCE.Permalink]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [RESOURCE.Permalink]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 The `Permalink` method on a `Resource` object writes the resource to the publish directory, typically `public`, and returns its [permalink](g).
 
 ```go-html-template
@@ -18,5 +18,3 @@ The `Permalink` method on a `Resource` object writes the resource to the publish
   {{ .Permalink }} → https://example.org/images/a.jpg
 {{ end }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
index 550b06401e41119da008b10adf2dcdc01cd837c3..fb27da54eced8b5fe87b7ab1ceff03d30b34308d 100644 (file)
@@ -3,18 +3,14 @@ title: Process
 description: Applicable to images, returns an image resource processed with the given specification.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Crop
-    - methods/resource/Fit
-    - methods/resource/Fill
-    - methods/resource/Resize
-    - functions/images/Process
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Process SPEC]
-toc: true
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Process SPEC]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Process an image with the given specification. The specification can contain an optional action, one of `crop`, `fill`, `fit`, or `resize`. This means that you can use this method instead of [`Crop`], [`Fill`], [`Fit`], or [`Resize`].
 
 ```go-html-template
@@ -37,9 +33,7 @@ You can also use this method to apply simple transformations such as rotation an
 
 The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [`images.Process`].
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-{{% include "/methods/resource/_common/processing-spec.md" %}}
+{{% include "/_common/methods/resource/processing-spec.md" %}}
 
 ## Example
 
index 05344c658229f56873697997833703a5846c0e56..0ecdf7e7449cf4ec489daf8a94a33b819daf1743 100644 (file)
@@ -3,14 +3,14 @@ title: Publish
 description: Publishes the given resource.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Permalink
-    - methods/resource/RelPermalink
-  returnType: nil
-  signatures: [RESOURCE.Publish]
+params:
+  functions_and_methods:
+    returnType: nil
+    signatures: [RESOURCE.Publish]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 The `Publish` method on a `Resource` object writes the resource to the publish directory, typically `public`.
 
 ```go-html-template
@@ -30,5 +30,3 @@ Instead of this:
 ```go-html-template
 {{ $noop := $resource.Permalink }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
index a7226b0579abc2ab35a39399e111b24477d46966..d4c907bff0ca3ecc1a70d32b0515c74daf238f21 100644 (file)
@@ -3,14 +3,14 @@ title: RelPermalink
 description: Publishes the given resource and returns its relative permalink.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Permalink
-    - methods/resource/Publish
-  returnType: string
-  signatures: [RESOURCE.RelPermalink]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [RESOURCE.RelPermalink]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 The `Permalink` method on a `Resource` object writes the resource to the publish directory, typically `public`, and returns its [relative permalink](g).
 
 ```go-html-template
@@ -18,5 +18,3 @@ The `Permalink` method on a `Resource` object writes the resource to the publish
   {{ .RelPermalink }} → /images/a.jpg
 {{ end }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
index 4ba054bb5029beb3c97529545ff73c4857a327fb..93c029ba6b7c0f4e192262ebaab5afdba2efebf9 100644 (file)
@@ -3,17 +3,14 @@ title: Resize
 description: Applicable to images, returns an image resource resized to the given width and/or height.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Crop
-    - methods/resource/Fit
-    - methods/resource/Fill
-    - methods/resource/Process
-    - functions/images/Process
-  returnType: images.ImageResource
-  signatures: [RESOURCE.Resize SPEC]
+params:
+  functions_and_methods:
+    returnType: images.ImageResource
+    signatures: [RESOURCE.Resize SPEC]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Resize an image to the given width and/or height.
 
 If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio.
@@ -26,9 +23,7 @@ If you specify both width and height, the resulting image will be disproportiona
 {{ end }}
 ```
 
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
-
-{{% include "/methods/resource/_common/processing-spec.md" %}}
+{{% include "/_common/methods/resource/processing-spec.md" %}}
 
 ## Example
 
index db52e7b10b29a2d1a94ef474e559a55da243ef3d..0ea9c0cf94cadcdbbf85d04d976caf16efa38cbb 100644 (file)
@@ -3,12 +3,14 @@ title: ResourceType
 description: Returns the main type of the given resource's media type.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [RESOURCE.ResourceType]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [RESOURCE.ResourceType]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 Common resource types include `audio`, `image`, `text`, and `video`.
 
 ```go-html-template
@@ -34,10 +36,8 @@ content/
 
 With the structure above, we can range through page resources of type `page` to build content:
 
-{{< code file=layouts/lessons/single.html  >}}
+```go-html-template {file="layouts/lessons/single.html"}
 {{ range .Resources.ByType "page" }}
   {{ .Content }}
 {{ end }}
-{{< /code >}}
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
+```
index 1a984f90240f22a43095e9e124892661bd697aae..c02d29ff8fde8bb404d93d8c0ddb9981c48207fd 100644 (file)
@@ -3,12 +3,10 @@ title: Title
 description: Returns the title of the given resource as optionally defined in front matter, falling back to a relative path or hashed file name depending on resource type.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Name
-  returnType: string
-  signatures: [RESOURCE.Title]
-toc: true
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [RESOURCE.Title]
 ---
 
 The value returned by the `Title` method on a `Resource` object depends on the resource type.
index 8b96c95e84242051f815a689e5524dcc3a360333..e1b43f44c6ba637766b7dab0e7bf4da84b18c5e7 100644 (file)
@@ -3,13 +3,14 @@ title: Width
 description: Applicable to images, returns the width of the given resource.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/resource/Height
-  returnType: int
-  signatures: [RESOURCE.Width]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [RESOURCE.Width]
 ---
 
+{{% include "/_common/methods/resource/global-page-remote-resources.md" %}}
+
 ```go-html-template
 {{ with resources.Get "images/a.jpg" }}
   {{ .Width }} → 600
@@ -23,5 +24,3 @@ Use the `Width` and `Height` methods together when rendering an `img` element:
   <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 {{ end }}
 ```
-
-{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
diff --git a/content/en/methods/resource/_common/_index.md b/content/en/methods/resource/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/methods/resource/_common/global-page-remote-resources.md b/content/en/methods/resource/_common/global-page-remote-resources.md
deleted file mode 100644 (file)
index e410df0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-{{% note %}}
-Use this method with [global resources](g), [page resources](g), or [remote resources](g).
-{{% /note %}}
diff --git a/content/en/methods/resource/_common/processing-spec.md b/content/en/methods/resource/_common/processing-spec.md
deleted file mode 100644 (file)
index 3952173..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-## Process specification
-
-The process specification is a space-delimited, case-insensitive list of one or more of the following in any sequence:
-
-action
-: Applicable to the [`Process`](/methods/resource/process) method only. Specify zero or one of `crop`, `fill`, `fit`, or `resize`. If you specify an action you must also provide dimensions.
-
-dimensions
-: Provide width _or_ height when using the [`Resize`](/methods/resource/resize) method, else provide both width _and_ height. See&nbsp;[details](/content-management/image-processing/#dimensions).
-
-anchor
-: Use with the [`Crop`](/methods/resource/crop) and [`Fill`](/methods/resource/fill) methods. Specify zero or one of `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. Default is `Smart`. See&nbsp;[details](/content-management/image-processing/#anchor).
-
-rotation
-: Typically specify zero or one of `r90`, `r180`, or `r270`. Also supports arbitrary rotation angles. See&nbsp;[details](/content-management/image-processing/#rotation).
-
-target format
-: Specify zero or one of `gif`, `jpeg`, `png`, `tiff`, or `webp`. See&nbsp;[details](/content-management/image-processing/#target-format).
-
-quality
-: Applicable to JPEG and WebP images. Optionally specify `qN` where `N` is an integer in the range [0, 100]. Default is `75`. See&nbsp;[details](/content-management/image-processing/#quality).
-
-hint
-: Applicable to WebP images and equivalent to the `-preset` flag for the [`cwebp`] encoder. Specify zero or one of `drawing`, `icon`, `photo`, `picture`, or `text`. Default is `photo`. See&nbsp;[details](/content-management/image-processing/#hint).
-
-[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
-
-background color
-: When converting a PNG or WebP with transparency to a format that does not support transparency, optionally specify a background color using a 3-digit or a 6-digit hexadecimal color code. Default is `#ffffff` (white). See&nbsp;[details](/content-management/image-processing/#background-color).
-
-resampling filter
-: Typically specify zero or one of `Box`, `Lanczos`, `CatmullRom`, `MitchellNetravali`, `Linear`, or `NearestNeighbor`. Other resampling filters are available. See&nbsp;[details](/content-management/image-processing/#resampling-filter).
index e9426e1a59bd970e9b971a92f6bb3e9a49a85850..edfbc5b140d459c24442856d1e8f08bee70015f6 100644 (file)
@@ -4,9 +4,4 @@ linkTitle: Resource
 description: Use these methods with global, page, and remote Resource objects.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 ---
-
-Use these methods with global, page, and remote Resource objects.
index 8874c764961dcf94a1afb0fe9a04b285d1d4ed62..b9c01cfc41f8b78da130da9dd45299f7586525f5 100644 (file)
@@ -3,49 +3,44 @@ title: Get
 description: Returns the value of the given argument.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/IsNamedParams
-    - methods/shortcode/Params
-  returnType: any
-  signatures: [SHORTCODE.Get ARG]
-toc: true
+params:
+  functions_and_methods:
+    returnType: any
+    signatures: [SHORTCODE.Get ARG]
 ---
 
 Specify the argument by position or by name. When calling a shortcode within Markdown, use either positional or named argument, but not both.
 
-{{% note %}}
-Some shortcodes support positional arguments, some support named arguments, and others support both. Refer to the shortcode's documentation for usage details.
-{{% /note %}}
+> [!note]
+> Some shortcodes support positional arguments, some support named arguments, and others support both. Refer to the shortcode's documentation for usage details.
 
 ## Positional arguments
 
 This shortcode call uses positional arguments:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* myshortcode "Hello" "world" */>}}
-{{< /code >}}
+```
 
 To retrieve arguments by position:
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ printf "%s %s." (.Get 0) (.Get 1) }} → Hello world.
-{{< /code >}}
+```
 
 ## Named arguments
 
 This shortcode call uses named arguments:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* myshortcode greeting="Hello" firstName="world" */>}}
-{{< /code >}}
+```
 
 To retrieve arguments by name:
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ printf "%s %s." (.Get "greeting") (.Get "firstName") }} → Hello world.
-{{< /code >}}
+```
 
-{{% note %}}
-Argument names are case-sensitive.
-{{% /note %}}
+> [!note]
+> Argument names are case-sensitive.
index ef8d05ecb9c392fe6d737d745dc4eea3cd6accb1..cdce4c1c3d17c6f48b684388caa5d35a4b760e41 100644 (file)
@@ -3,28 +3,23 @@ title: Inner
 description: Returns the content between opening and closing shortcode tags, applicable when the shortcode call includes a closing tag.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/strings/Trim
-    - methods/page/RenderString
-    - functions/transform/Markdownify
-    - methods/shortcode/InnerDeindent
-  returnType: template.HTML
-  signatures: [SHORTCODE.Inner]
-toc: true
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [SHORTCODE.Inner]
 ---
 
 This content:
 
-{{< code file=content/services.md lang=md >}}
+```text {file="content/services.md"}
 {{</* card title="Product Design" */>}}
 We design the **best** widgets in the world.
 {{</* /card */>}}
-{{< /code >}}
+```
 
 With this shortcode:
 
-{{< code file=layouts/shortcodes/card.html  >}}
+```go-html-template {file="layouts/shortcodes/card.html"}
 <div class="card">
   {{ with .Get "title" }}
     <div class="card-title">{{ . }}</div>
@@ -33,7 +28,7 @@ With this shortcode:
     {{ .Inner | strings.TrimSpace }}
   </div>
 </div>
-{{< /code >}}
+```
 
 Is rendered to:
 
@@ -46,23 +41,17 @@ Is rendered to:
 </div>
 ```
 
-{{% note %}}
-Content between opening and closing shortcode tags may include leading and/or trailing newlines, depending on placement within the Markdown. Use the [`strings.TrimSpace`] function as shown above to remove both carriage returns and newlines.
-
-[`strings.TrimSpace`]: /functions/strings/trimspace/
-{{% /note %}}
+> [!note]
+> Content between opening and closing shortcode tags may include leading and/or trailing newlines, depending on placement within the Markdown. Use the [`strings.TrimSpace`] function as shown above to remove carriage returns and newlines.
 
-{{% note %}}
-In the example above, the value returned by `Inner` is Markdown, but it was rendered as plain text. Use either of the following approaches to render Markdown to HTML.
-{{% /note %}}
+> [!note]
+> In the example above, the value returned by `Inner` is Markdown, but it was rendered as plain text. Use either of the following approaches to render Markdown to HTML.
 
 ## Use RenderString
 
 Let's modify the example above to pass the value returned by `Inner` through the [`RenderString`] method on the `Page` object:
 
-[`RenderString`]: /methods/page/renderstring/
-
-{{< code file=layouts/shortcodes/card.html  >}}
+```go-html-template {file="layouts/shortcodes/card.html"}
 <div class="card">
   {{ with .Get "title" }}
     <div class="card-title">{{ . }}</div>
@@ -71,7 +60,7 @@ Let's modify the example above to pass the value returned by `Inner` through the
     {{ .Inner | strings.TrimSpace | .Page.RenderString }}
   </div>
 </div>
-{{< /code >}}
+```
 
 Hugo renders this to:
 
@@ -86,18 +75,15 @@ Hugo renders this to:
 
 You can use the [`markdownify`] function instead of the `RenderString` method, but the latter is more flexible. See&nbsp;[details].
 
-[details]: /methods/page/renderstring/
-[`markdownify`]: /functions/transform/markdownify/
-
 ## Alternative notation
 
 Instead of calling the shortcode with the `{{</* */>}}` notation, use the `{{%/* */%}}` notation:
 
-{{< code file=content/services.md lang=md >}}
+```text {file="content/services.md"}
 {{%/* card title="Product Design" */%}}
 We design the **best** widgets in the world.
 {{%/* /card */%}}
-{{< /code >}}
+```
 
 When you use the `{{%/* */%}}` notation, Hugo renders the entire shortcode as Markdown, requiring the following changes.
 
@@ -112,7 +98,7 @@ This configuration is not unsafe if _you_ control the content. Read more about H
 
 Second, because we are rendering the entire shortcode as Markdown, we must adhere to the rules governing [indentation] and inclusion of [raw HTML blocks] as provided in the [CommonMark] specification.
 
-{{< code file=layouts/shortcodes/card.html  >}}
+```go-html-template {file="layouts/shortcodes/card.html"}
 <div class="card">
   {{ with .Get "title" }}
   <div class="card-title">{{ . }}</div>
@@ -122,7 +108,7 @@ Second, because we are rendering the entire shortcode as Markdown, we must adher
   {{ .Inner | strings.TrimSpace }}
   </div>
 </div>
-{{< /code >}}
+```
 
 The difference between this and the previous example is subtle but required. Note the change in indentation, the addition of a blank line, and removal of the `RenderString` method.
 
@@ -143,11 +129,15 @@ The difference between this and the previous example is subtle but required. Not
  </div>
 ```
 
-{{% note %}}
-When using the `{{%/* */%}}` notation, do not pass the value returned by `Inner` through the `RenderString` method or  the `markdownify` function.
-{{% /note %}}
+> [!note]
+> Don't process the `Inner` value with `RenderString` or `markdownify` when using [Markdown notation] to call the shortcode.
 
-[commonmark]: https://commonmark.org/
+[`markdownify`]: /functions/transform/markdownify/
+[`RenderString`]: /methods/page/renderstring/
+[`strings.TrimSpace`]: /functions/strings/trimspace/
+[CommonMark]: https://spec.commonmark.org/current/
+[details]: /methods/page/renderstring/
 [indentation]: https://spec.commonmark.org/0.30/#indented-code-blocks
-[raw html blocks]: https://spec.commonmark.org/0.30/#html-blocks
+[Markdown notation]: /content-management/shortcodes/#notation
+[raw HTML blocks]: https://spec.commonmark.org/0.31.2/#html-blocks
 [security model]: /about/security/
index ab4263709efe9ae9138b89b0912bd2374846957e..0b8c8e2d884b5c3fbfcb7ec72ac6f7c1819f0d66 100644 (file)
@@ -1,13 +1,12 @@
 ---
 title: InnerDeindent
-description: Returns the content between opening and closing shortcode tags, with indentation removed, applicable when the shortcode call includes a closing tag. 
+description: Returns the content between opening and closing shortcode tags, with indentation removed, applicable when the shortcode call includes a closing tag.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Inner
-  returnType: template.HTML
-  signatures: [SHORTCODE.InnerDeindent]
+params:
+  functions_and_methods:
+    returnType: template.HTML
+    signatures: [SHORTCODE.InnerDeindent]
 ---
 
 Similar to the [`Inner`] method, `InnerDeindent` returns the content between opening and closing shortcode tags. However, with `InnerDeindent`, indentation before the content is removed.
@@ -16,7 +15,7 @@ This allows us to effectively bypass the rules governing [indentation] as provid
 
 Consider this Markdown, an unordered list with a small gallery of thumbnail images within each list item:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 - Gallery one
 
     {{</* gallery */>}}
@@ -30,17 +29,17 @@ Consider this Markdown, an unordered list with a small gallery of thumbnail imag
     ![kitten c](thumbnails/c.jpg)
     ![kitten d](thumbnails/d.jpg)
     {{</* /gallery */>}}
-{{< /code >}}
+```
 
 In the example above, notice that the content between the opening and closing shortcode tags is indented by four spaces. Per the CommonMark specification, this is treated as an indented code block.
 
 With this shortcode, calling `Inner` instead of `InnerDeindent`:
 
-{{< code file=layouts/shortcodes/gallery.html  >}}
+```go-html-template {file="layouts/shortcodes/gallery.html"}
 <div class="gallery">
   {{ .Inner | strings.TrimSpace | .Page.RenderString }}
 </div>
-{{< /code >}}
+```
 
 Hugo renders the Markdown to:
 
@@ -67,11 +66,11 @@ Hugo renders the Markdown to:
 
 Although technically correct per the CommonMark specification, this is not what we want. If we remove the indentation using the `InnerDeindent` method:
 
-{{< code file=layouts/shortcodes/gallery.html  >}}
+```go-html-template {file="layouts/shortcodes/gallery.html"}
 <div class="gallery">
   {{ .InnerDeindent | strings.TrimSpace | .Page.RenderString }}
 </div>
-{{< /code >}}
+```
 
 Hugo renders the Markdown to:
 
index a1d93ddac5961c3e8b5d3576d80febe8afc58bc9..1e0a7f00ee3ee2f25f1d547b1fc647ccfdb35509 100644 (file)
@@ -3,28 +3,27 @@ title: IsNamedParams
 description: Reports whether the shortcode call uses named arguments.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Get
-  returnType: bool
-  signatures: [SHORTCODE.IsNamedParams]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [SHORTCODE.IsNamedParams]
 ---
 
 To support both positional and named arguments when calling a shortcode, use the `IsNamedParams` method to determine how the shortcode was called.
 
 With this shortcode template:
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ if .IsNamedParams }}
   {{ printf "%s %s." (.Get "greeting") (.Get "firstName") }}
 {{ else }}
   {{ printf "%s %s." (.Get 0) (.Get 1) }}
 {{ end }}
-{{< /code >}}
+```
 
 Both of these calls return the same value:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* myshortcode greeting="Hello" firstName="world" */>}}
 {{</* myshortcode "Hello" "world" */>}}
-{{< /code >}}
+```
index fcf92718f4e8583d695004e5cd11fdd47163e276..b5f9b6c17071c923c0837c7dd3bec8c6431c0ce4 100644 (file)
@@ -3,24 +3,22 @@ title: Name
 description: Returns the shortcode file name, excluding the file extension.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Position
-    - functions/fmt/Errorf
-  returnType: string
-  signatures: [SHORTCODE.Name]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SHORTCODE.Name]
 ---
 
 The `Name` method is useful for error reporting. For example, if your shortcode requires a "greeting" argument:
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ $greeting := "" }}
 {{ with .Get "greeting" }}
   {{ $greeting = . }}
 {{ else }}
   {{ errorf "The %q shortcode requires a 'greeting' argument. See %s" .Name .Position }}
 {{ end }}
-{{< /code >}}
+```
 
 In the absence of a "greeting" argument, Hugo will throw an error message and fail the build:
 
index 41393fa222c8cc0389df623f297f167d3b5072ce..def0c016fd74033d1614946f9b611c51a0689c6e 100644 (file)
@@ -3,29 +3,28 @@ title: Ordinal
 description: Returns the zero-based ordinal of the shortcode in relation to its parent.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [SHORTCODE.Ordinal]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [SHORTCODE.Ordinal]
 ---
 
 The `Ordinal` method returns the zero-based ordinal of the shortcode in relation to its parent. If the parent is the page itself, the ordinal represents the position of this shortcode in the page content.
 
-{{% note %}}
-Hugo  increments the ordinal with each shortcode call, regardless of the specific shortcode type. This means that the ordinal value is tracked sequentially across all shortcodes within a given page.
-{{% /note %}}
+> [!note]
+> Hugo increments the ordinal with each shortcode call, regardless of the specific shortcode type. This means that the ordinal value is tracked sequentially across all shortcodes within a given page.
 
 This method is useful for, among other things, assigning unique element IDs when a shortcode is called two or more times from the same page. For example:
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* img src="images/a.jpg" */>}}
 
 {{</* img src="images/b.jpg" */>}}
-{{< /code >}}
+```
 
 This shortcode performs error checking, then renders an HTML `img` element with a unique `id` attribute:
 
-{{< code file=layouts/shortcodes/img.html  >}}
+```go-html-template {file="layouts/shortcodes/img.html"}
 {{ $src := "" }}
 {{ with .Get "src" }}
   {{ $src = . }}
@@ -38,7 +37,7 @@ This shortcode performs error checking, then renders an HTML `img` element with
 {{ else }}
   {{ errorf "The %q shortcode requires a 'src' argument. See %s" .Name .Position }}
 {{ end }}
-{{< /code >}}
+```
 
 Hugo renders the page to:
 
@@ -47,8 +46,7 @@ Hugo renders the page to:
 <img id="img-001" src="/images/b.jpg" width="600" height="400" alt="">
 ```
 
-{{% note %}}
-In the shortcode template above, the [`with`] statement is used to create conditional blocks. Remember that the `with` statement binds context (the dot) to its expression. Inside of a `with` block, preface shortcode method calls with a `$` to access the top level context passed into the template.
+> [!note]
+> In the shortcode template above, the [`with`] statement is used to create conditional blocks. Remember that the `with` statement binds context (the dot) to its expression. Inside of a `with` block, preface shortcode method calls with a `$` to access the top-level context passed into the template.
 
 [`with`]: /functions/go-template/with/
-{{% /note %}}
index 8bb58fa18e4fa70735999062fba0eae6f61243e2..774caf9fc23df2caeb0fafc1c43245d416ba6d12 100644 (file)
@@ -3,10 +3,10 @@ title: Page
 description: Returns the Page object from which the shortcode was called.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: hugolib.pageForShortcode
-  signatures: [SHORTCODE.Page]
+params:
+  functions_and_methods:
+    returnType: hugolib.pageForShortcode
+    signatures: [SHORTCODE.Page]
 ---
 
 With this content:
@@ -26,11 +26,11 @@ Calling this shortcode:
 
 We can access the front matter values using the `Page` method:
 
-{{< code file=layouts/shortcodes/book-details.html  >}}
+```go-html-template {file="layouts/shortcodes/book-details.html"}
 <ul>
   <li>Title: {{ .Page.Title }}</li>
   <li>Author: {{ .Page.Params.author }}</li>
   <li>Published: {{ .Page.Params.publication_year }}</li>
   <li>ISBN: {{ .Page.Params.isbn }}</li>
 </ul>
-{{< /code >}}
+```
index c0772e36a3f5f74348dc6a9c12fc9028241baf0e..f001e737f93da2c640f0d7cdbc44cfa5c8aca2ad 100644 (file)
@@ -3,31 +3,30 @@ title: Params
 description: Returns a collection of the shortcode arguments.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Get
-  returnType: any
-  signatures: [SHORTCODE.Params]
+params:
+  functions_and_methods:
+    returnType: any
+    signatures: [SHORTCODE.Params]
 ---
 
 When you call a shortcode using positional arguments, the `Params` method returns a slice.
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* myshortcode "Hello" "world" */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ index .Params 0 }} → Hello
 {{ index .Params 1 }} → world
-{{< /code >}}
+```
 
 When you call a shortcode using named arguments, the `Params` method returns a map.
 
-{{< code file=content/about.md lang=md >}}
+```text {file="content/about.md"}
 {{</* myshortcode greeting="Hello" name="world" */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ .Params.greeting }} → Hello
 {{ .Params.name }} → world
-{{< /code >}}
+```
index 740b1ad7e1e5f8d6800adda6b3bf603846a84fbf..91c445d2a365dcb234a7db863d8919d110662bf9 100644 (file)
@@ -1,31 +1,31 @@
 ---
 title: Parent
-description:  Returns the parent shortcode context in nested shortcodes.
+description: Returns the parent shortcode context in nested shortcodes.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: hugolib.ShortcodeWithPage
-  signatures: [SHORTCODE.Parent]
+params:
+  functions_and_methods:
+    returnType: hugolib.ShortcodeWithPage
+    signatures: [SHORTCODE.Parent]
 ---
 
 This is useful for inheritance of common shortcode arguments from the root.
 
 In this contrived example, the "greeting" shortcode is the parent, and the "now" shortcode is child.
 
-{{< code file=content/welcome.md lang=md >}}
+```text {file="content/welcome.md"}
 {{</* greeting dateFormat="Jan 2, 2006" */>}}
 Welcome. Today is {{</* now */>}}.
 {{</* /greeting */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/greeting.html  >}}
+```go-html-template {file="layouts/shortcodes/greeting.html"}
 <div class="greeting">
   {{ .Inner | strings.TrimSpace | .Page.RenderString }}
 </div>
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/now.html  >}}
+```go-html-template {file="layouts/shortcodes/now.html"}
 {{- $dateFormat := "January 2, 2006 15:04:05" }}
 
 {{- with .Params }}
@@ -41,7 +41,7 @@ Welcome. Today is {{</* now */>}}.
 {{- end }}
 
 {{- now | time.Format $dateFormat -}}
-{{< /code >}}
+```
 
 The "now" shortcode formats the current time using:
 
index 6f047c01b1af9bcaefdae168319c51169405d73a..24810e8254c37cd579f947de70c064b51eed0386 100644 (file)
@@ -1,26 +1,24 @@
 ---
 title: Position
-description: Returns the filename and position from which the shortcode was called.
+description: Returns the file name and position from which the shortcode was called.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Name
-    - functions/fmt/Errorf
-  returnType: text.Position
-  signatures: [SHORTCODE.Position]
+params:
+  functions_and_methods:
+    returnType: text.Position
+    signatures: [SHORTCODE.Position]
 ---
 
 The `Position` method is useful for error reporting. For example, if your shortcode requires a "greeting" argument:
 
-{{< code file=layouts/shortcodes/myshortcode.html  >}}
+```go-html-template {file="layouts/shortcodes/myshortcode.html"}
 {{ $greeting := "" }}
 {{ with .Get "greeting" }}
   {{ $greeting = . }}
 {{ else }}
   {{ errorf "The %q shortcode requires a 'greeting' argument. See %s" .Name .Position }}
 {{ end }}
-{{< /code >}}
+```
 
 In the absence of a "greeting" argument, Hugo will throw an error message and fail the build:
 
@@ -28,6 +26,5 @@ In the absence of a "greeting" argument, Hugo will throw an error message and fa
 ERROR The "myshortcode" shortcode requires a 'greeting' argument. See "/home/user/project/content/about.md:11:1"
 ```
 
-{{% note %}}
-The position can be expensive to calculate. Limit its use to error reporting.
-{{% /note %}}
+> [!note]
+> The position can be expensive to calculate. Limit its use to error reporting.
index 305e1e7d89d77e8cbe0ad96e41c57abf484f2b3f..3a877d568fef7876b09fb56b2d713b6de2df30e7 100644 (file)
@@ -3,27 +3,23 @@ title: Ref
 description: Returns the absolute URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/RelRef
-    - functions/urls/RelRef
-    - functions/urls/Ref
-  returnType: string
-  signatures: [SHORTCODE.Ref OPTIONS]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SHORTCODE.Ref OPTIONS]
 ---
 
-The map of option contains:
+## Usage
 
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
+The `Ref` method accepts a single argument: an options map.
 
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+## Options
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-The examples below show the rendered output when visiting a page on the English language version of the site:
+## Examples
+
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
 {{ $opts := dict "path" "/books/book-1" }}
@@ -36,9 +32,6 @@ The examples below show the rendered output when visiting a page on the English
 {{ .Ref $opts }} → https://example.org/de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 4e367312bbc0f64d7537e7d385ba72acb1a843a1..273705a95c55e7461ceb99ce02a3f19a19b177c6 100644 (file)
@@ -3,27 +3,23 @@ title: RelRef
 description: Returns the relative URL of the page with the given path, language, and output format.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/shortcode/Ref
-    - functions/urls/Ref
-    - functions/urls/RelRef
-  returnType: string
-  signatures: [SHORTCODE.RelRef OPTIONS]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SHORTCODE.RelRef OPTIONS]
 ---
 
-The map of option contains:
+## Usage
 
-path
-: (`string`) The path to the page, relative to the `content` directory. Required.
+The `RelRef` method accepts a single argument: an options map.
 
-lang
-: (`string`) The language (site) to search for the page. Default is the current language. Optional.
+## Options
 
-outputFormat
-: (`string`) The output format to search for the page. Default is the current output format. Optional.
+{{% include "_common/ref-and-relref-options.md" %}}
 
-The examples below show the rendered output when visiting a page on the English language version of the site:
+## Examples
+
+The following examples show the rendered output for a page on the English version of the site:
 
 ```go-html-template
 {{ $opts := dict "path" "/books/book-1" }}
@@ -36,9 +32,6 @@ The examples below show the rendered output when visiting a page on the English
 {{ .RelRef $opts }} → /de/books/book-1/index.json
 ```
 
-By default, Hugo will throw an error and fail the build if it cannot resolve the path. You can change this to a warning in your site configuration, and specify a URL to return when the path cannot be resolved.
+## Error handling
 
-{{< code-toggle file=hugo >}}
-refLinksErrorLevel = 'warning'
-refLinksNotFoundURL = '/some/other/url'
-{{< /code-toggle >}}
+{{% include "_common/ref-and-relref-error-handling.md" %}}
index 6dd882e24e2988df7c2c010d20b6017aa12d8938..6efec2097fe912637161218b2978446318b9d552 100644 (file)
@@ -3,14 +3,14 @@ title: Scratch
 description: Returns a "scratch pad" to store and manipulate data, scoped to the current shortcode.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: maps.Scratch
-  signatures: [SHORTCODE.Scratch]
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [SHORTCODE.Scratch]
 expiryDate: 2026-11-18 # deprecated 2024-11-18 (soft)
 ---
 
-{{% deprecated-in 0.139.0 %}}
+{{< deprecated-in 0.139.0 >}}
 Use the [`SHORTCODE.Store`] method instead.
 
 This is a soft deprecation. This method will be removed in a future release, but the removal date has not been established. Although Hugo will not emit a warning if you continue to use this method, you should begin using `SHORTCODE.Store` as soon as possible.
@@ -18,4 +18,4 @@ This is a soft deprecation. This method will be removed in a future release, but
 Beginning with v0.139.0 the `SHORTCODE.Scratch` method is aliased to `SHORTCODE.Store`.
 
 [`SHORTCODE.Store`]: /methods/shortcode/store/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index af2a755ee8095022129605d6283d3450bf16a991..4c5a9a9b5fed48e808f9afeee925de3b6ef85636 100644 (file)
@@ -3,11 +3,10 @@ title: Site
 description: Returns the Site object.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Sites
-  returnType: page.siteWrapper
-  signatures: [SHORTCODE.Site]
+params:
+  functions_and_methods:
+    returnType: page.siteWrapper
+    signatures: [SHORTCODE.Site]
 ---
 
 See [Site methods].
index 8d9a8596b8f0c35de89bcd106339d985d0d58d05..76cb9237d6ed48dc1ee5ac39409c3d4d28934608 100644 (file)
@@ -3,28 +3,22 @@ title: Store
 description: Returns a "scratch pad" to store and manipulate data, scoped to the current shortcode.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/Store
-    - methods/site/Store
-    - functions/hugo/Store
-    - functions/collections/NewScratch
-  returnType: maps.Scratch
-  signatures: [SHORTCODE.Store]
-toc: true
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [SHORTCODE.Store]
 ---
 
 {{< new-in 0.139.0 />}}
 
 Use the `Store` method to create a [scratch pad](g) to store and manipulate data, scoped to the current shortcode. To create a scratch pad with a different [scope](g), refer to the [scope](#scope) section below.
 
-{{% note %}}
-With the introduction of the [`newScratch`] function, and the ability to [assign values to template variables] after initialization, the `Store` method within a shortcode is mostly obsolete.
-
-[assign values to template variables]: https://go.dev/doc/go1.11#text/template
-[`newScratch`]: /functions/collections/newScratch/
-{{% /note %}}
+> [!note]
+> With the introduction of the [`newScratch`] function, and the ability to [assign values to template variables] after initialization, the `Store` method within a shortcode is mostly obsolete.
 
 {{% include "_common/store-methods.md" %}}
 
 {{% include "_common/scratch-pad-scope.md" %}}
+
+[`newScratch`]: /functions/collections/newScratch/
+[assign values to template variables]: https://go.dev/doc/go1.11#texttemplatepkgtexttemplate
index 1c99adba7b81df7fd93d0a3de35bc8d05a73313a..0064f42aa1ab4428182b822a689e8213bc26dc0f 100644 (file)
@@ -4,10 +4,5 @@ linkTitle: Shortcode
 description: Use these methods in your shortcode templates.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 aliases: [/variables/shortcodes]
 ---
-
-Use these methods in your shortcode templates.
index 7c6c21b570b128a8f49f869136531bd246f5d107..90cceee8c9c208198b87c1c14146d3bdcdbfc1a5 100644 (file)
@@ -3,16 +3,13 @@ title: AllPages
 description: Returns a collection of all pages in all languages.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/Pages
-    - methods/site/RegularPages
-    - methods/site/Sections
-  returnType: page.Pages
-  signatures: [SITE.AllPages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [SITE.AllPages]
 ---
 
-This method returns all page [kinds](g) in all languages. That includes the home page, section pages, taxonomy pages, term pages, and regular pages.
+This method returns all page [kinds](g) in all languages, in the [default sort order](g). That includes the home page, section pages, taxonomy pages, term pages, and regular pages.
 
 In most cases you should use the [`RegularPages`] method instead.
 
index ea965a56889f55c299b6a286d81ecc540d459ae7..3644443cb84fafce746cd29f7b05fb6439ff0164 100644 (file)
@@ -3,14 +3,10 @@ title: BaseURL
 description: Returns the base URL as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/urls/AbsURL
-    - functions/urls/AbsLangURL
-    - functions/urls/RelURL
-    - functions/urls/RelLangURL
-  returnType: string
-  signatures: [SITE.BaseURL]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.BaseURL]
 ---
 
 Site configuration:
@@ -25,13 +21,12 @@ Template:
 {{ .Site.BaseURL }} → https://example.org/docs/
 ```
 
-{{% note %}}
-There is almost never a good reason to use this method in your templates. Its usage tends to be fragile due to misconfiguration.
+> [!note]
+> There is almost never a good reason to use this method in your templates. Its usage tends to be fragile due to misconfiguration.
+>
+> Use the [`absURL`], [`absLangURL`], [`relURL`], or [`relLangURL`] functions instead.
 
-Use the [`absURL`], [`absLangURL`], [`relURL`], or [`relLangURL`] functions instead.
-
-[`absURL`]: /functions/urls/absURL/
 [`absLangURL`]: /functions/urls/absLangURL/
-[`relURL`]: /functions/urls/relURL/
+[`absURL`]: /functions/urls/absURL/
 [`relLangURL`]: /functions/urls/relLangURL/
-{{% /note %}}
+[`relURL`]: /functions/urls/relURL/
index 0d85c78fda3f789f7de415b2ab817d467ec5afec..4beceeb6b0a69d7b5e3631223b7460c38f159ca3 100644 (file)
@@ -3,10 +3,10 @@ title: BuildDrafts
 description: Reports whether the current build includes draft pages.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [SITE.BuildDrafts]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [SITE.BuildDrafts]
 ---
 
 By default, draft pages are not published when building a site. You can change this behavior with a command line flag:
index 0ff4cddecbfaf85ad672ee678ec0e6ba2be024c0..d1b4d1f421af4f945b032b941603bf633d111640 100644 (file)
@@ -3,20 +3,17 @@ title: Config
 description: Returns a subset of the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.SiteConfig
-  signatures: [SITE.Config]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.SiteConfig
+    signatures: [SITE.Config]
 ---
 
 The `Config` method on a `Site` object provides access to a subset of the site configuration, specifically the `services` and `privacy` keys.
 
 ## Services
 
-These are the default service settings, typically used by Hugo's built-in templates and shortcodes.
-
-{{< code-toggle config=services />}}
+See [configure services](/configuration/services).
 
 For example, to use Hugo's built-in Google Analytics template you must add a [Google tag ID]:
 
@@ -37,9 +34,7 @@ You must capitalize each identifier as shown above.
 
 ## Privacy
 
-These are the default privacy settings, typically used by Hugo's built-in templates and shortcodes:
-
-{{< code-toggle config=privacy />}}
+See [configure privacy](/configuration/privacy).
 
 For example, to disable usage of the built-in YouTube shortcode:
 
index e2ae7d2a5a3c2aa944eb1e8f11e8b295cf16a93e..dd8bdb4a3619c332102754cec4f81e08c2ae7634 100644 (file)
@@ -1,12 +1,12 @@
 ---
 title: Copyright
-description:  Returns the copyright notice as defined in the site configuration.
+description: Returns the copyright notice as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [SITE.Copyright]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.Copyright]
 ---
 
 Site configuration:
index 1021aad7d2de3a8a3c4c4cc3ae650db19efc05c1..296851874060959a74aafd8de9a148e32b2c7107 100644 (file)
@@ -3,25 +3,16 @@ title: Data
 description: Returns a data structure composed from the files in the data directory.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/collections/IndexFunction
-    - functions/transform/Unmarshal
-    - functions/collections/Where
-    - functions/collections/Sort
-  returnType: map
-  signatures: [SITE.Data]
+params:
+  functions_and_methods:
+    returnType: map
+    signatures: [SITE.Data]
 ---
 
 Use the `Data` method on a `Site` object to access data within the `data` directory, or within any directory [mounted] to the `data` directory. Supported data formats include JSON, TOML, YAML, and XML.
 
-[mounted]: /hugo-modules/configuration/#module-configuration-mounts
-
-{{% note %}}
-Although Hugo can unmarshal CSV files with the [`transform.Unmarshal`] function, do not place CSV files in the `data` directory. You cannot access data within CSV files using this method.
-
-[`transform.Unmarshal`]: /functions/transform/unmarshal/
-{{% /note %}}
+> [!note]
+> Although Hugo can unmarshal CSV files with the [`transform.Unmarshal`] function, do not place CSV files in the `data` directory. You cannot access data within CSV files using this method.
 
 Consider this `data` directory:
 
@@ -37,23 +28,23 @@ data/
 
 And these data files:
 
-{{< code file=data/books/fiction.yaml lang=yaml >}}
+```yaml {file="data/books/fiction.yaml"}
 - title: The Hunchback of Notre Dame
   author: Victor Hugo
   isbn: 978-0140443530
 - title: Les Misérables
   author: Victor Hugo
   isbn: 978-0451419439
-{{< /code >}}
+```
 
-{{< code file=data/books/nonfiction.yaml lang=yaml >}}
+```yaml {file="data/books/nonfiction.yaml"}
 - title: The Ancien Régime and the Revolution
   author: Alexis de Tocqueville
   isbn: 978-0141441641
 - title: Interpreting the French Revolution
   author: François Furet
   isbn: 978-0521280495
-{{< /code >}}
+```
 
 Access the data by [chaining](g) the [identifiers](g):
 
@@ -108,3 +99,5 @@ In the template examples above, each of the keys is a valid identifier. For exam
 ```
 
 [`index`]: /functions/collections/indexfunction/
+[`transform.Unmarshal`]: /functions/transform/unmarshal/
+[mounted]: /configuration/module/#mounts
index f6fedf4e93eb4a1a7171d170e61c457aba0617fc..de679fd7e5ed164ba3bebd1c9fb632e25339e705 100644 (file)
@@ -3,15 +3,15 @@ title: DisqusShortname
 description: Returns the Disqus shortname as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [SITE.DisqusShortname]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.DisqusShortname]
 expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0
 ---
 
-{{% deprecated-in 0.120.0 %}}
+{{< deprecated-in 0.120.0 >}}
 Use [`Site.Config.Services.Disqus.Shortname`] instead.
 
 [`Site.Config.Services.Disqus.Shortname`]: /methods/site/config/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index a439a578b9a2af0b4a302e446f835e39c2344930..2a3bd7d59763556269fca284c22b3d5aeae28e27 100644 (file)
@@ -3,12 +3,10 @@ title: GetPage
 description: Returns a Page object from the given path.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/GetPage
-  returnType: page.Page
-  signatures: [SITE.GetPage PATH]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [SITE.GetPage PATH]
 ---
 
 The `GetPage` method is also available on `Page` objects, allowing you to specify a path relative to the current page. See&nbsp;[details].
index f87e1787eb9539673c602c155eb51eb7a3877cd7..e4d28bcce136ffc3188ecf3b224b381d72a009e9 100644 (file)
@@ -3,15 +3,15 @@ title: GoogleAnalytics
 description: Returns the Google Analytics tracking ID as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [SITE.GoogleAnalytics]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.GoogleAnalytics]
 expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0
 ---
 
-{{% deprecated-in 0.120.0 %}}
+{{< deprecated-in 0.120.0 >}}
 Use [`Site.Config.Services.GoogleAnalytics.ID`] instead.
 
 [`Site.Config.Services.GoogleAnalytics.ID`]: /methods/site/config/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index a25491a8e8a28ac637a38ad339835c5608b5c445..19ab617471885d40fccb1e56ad44c3cecf9513d8 100644 (file)
@@ -3,10 +3,10 @@ title: Home
 description: Returns the home Page object for the given site.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Page
-  signatures: [SITE.Home]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [SITE.Home]
 ---
 
 This method is useful for obtaining a link to the home page.
index 51783efb96097d669cab3abf1f0a198c708f9bda..cddd188182ee49f38c618d7b94a046fe89009db1 100644 (file)
@@ -3,15 +3,15 @@ title: IsDevelopment
 description: Reports whether the current running environment is “development”.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [SITE.IsDevelopment]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [SITE.IsDevelopment]
 expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0
 ---
 
-{{% deprecated-in 0.120.0 %}}
+{{< deprecated-in 0.120.0 >}}
 Use [`hugo.IsDevelopment`] instead.
 
 [`hugo.IsDevelopment`]: /functions/hugo/isdevelopment/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 10968f14d0fda9c0903f12a4a3d61235d0912c4d..3f9723f1c7dd9954a16eb7272622cb103d39e7d3 100644 (file)
@@ -3,15 +3,15 @@ title: IsMultiLingual
 description: Reports whether there are two or more configured languages.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [SITE.IsMultiLingual]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [SITE.IsMultiLingual]
 expiryDate: 2026-03-16 # deprecated 2024-03-16 in 0.124.0
 ---
 
-{{% deprecated-in 0.124.0 %}}
+{{< deprecated-in 0.124.0 >}}
 Use [`hugo.IsMultilingual`] instead.
 
 [`hugo.IsMultilingual`]: /functions/hugo/ismultilingual/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 8fb5b7bf6d8c07aec2be674fa2df3cbc27e20971..8b09c849278f0d23862d07675ed8ea4c06e71cd4 100644 (file)
@@ -3,15 +3,15 @@ title: IsServer
 description: Reports whether the built-in development server is running.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: bool
-  signatures: [SITE.IsServer]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [SITE.IsServer]
 expiryDate: 2025-10-30 # deprecated 2023-10-30 in v0.120.0
 ---
 
-{{% deprecated-in 0.120.0 %}}
+{{< deprecated-in 0.120.0 >}}
 Use [`hugo.IsServer`] instead.
 
 [`hugo.IsServer`]: /functions/hugo/isserver/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index 2400c225a3aefd469df9444548766c487b945851..31f15b8cb3957b1f84813aa745e6b1a0e958dd77 100644 (file)
@@ -1,14 +1,12 @@
 ---
 title: Language
-description: Returns the language object for the given site. 
+description: Returns the language object for the given site.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/language
-  returnType: langs.Language
-  signatures: [SITE.Language]
-toc: true
+params:
+  functions_and_methods:
+    returnType: langs.Language
+    signatures: [SITE.Language]
 ---
 
 The `Language` method on a `Site` object returns the language object for the given site. The language object points to the language definition in the site configuration.
@@ -27,7 +25,7 @@ languageName = 'Deutsch'
 weight = 1
 {{< /code-toggle >}}
 
-###### Lang
+### Lang
 
 (`string`) The language tag as defined by [RFC 5646].
 
@@ -35,7 +33,7 @@ weight = 1
 {{ .Site.Language.Lang }} → de
 ```
 
-###### LanguageCode
+### LanguageCode
 
 (`string`) The language code from the site configuration. Falls back to `Lang` if not defined.
 
@@ -43,7 +41,7 @@ weight = 1
 {{ .Site.Language.LanguageCode }} → de-DE
 ```
 
-###### LanguageDirection
+### LanguageDirection
 
 (`string`) The language direction from the site configuration, either `ltr` or `rtl`.
 
@@ -51,7 +49,7 @@ weight = 1
 {{ .Site.Language.LanguageDirection }} → ltr
 ```
 
-###### LanguageName
+### LanguageName
 
 (`string`) The language name from the site configuration.
 
@@ -59,7 +57,7 @@ weight = 1
 {{ .Site.Language.LanguageName }} → Deutsch
 ```
 
-###### Weight
+### Weight
 
 (`int`) The language weight from the site configuration which determines its order in the slice of languages returned by the `Languages` method on a `Site` object.
 
index 88808eda01f48d28f70bfa9953c782d4e551082c..81a5e8607fe30353cbbee0b1fc61a45144b4eba7 100644 (file)
@@ -3,12 +3,10 @@ title: LanguagePrefix
 description: Returns the URL language prefix, if any, for the given site.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/urls/AbsLangURL
-    - functions/urls/RelLangURL
-  returnType: string
-  signatures: [SITE.LanguagePrefix]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.LanguagePrefix]
 ---
 
 Consider this site configuration:
index cfa1ade6bd86259b213347d6987b735e2cbeb1f2..056d6193a19afb5d8cc63e47bf4cecd85c125bda 100644 (file)
@@ -3,11 +3,10 @@ title: Languages
 description: Returns a collection of language objects for all sites, ordered by language weight.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/Language
-  returnType: langs.Languages
-  signatures: [SITE.Languages]
+params:
+  functions_and_methods:
+    returnType: langs.Languages
+    signatures: [SITE.Languages]
 ---
 
 The `Languages` method on a `Site` object returns a collection of language objects for all sites, ordered by language weight. Each language object points to its language definition in the site configuration.
index f6017df04dfbbb9e392c8d939508933d20a0d5dc..e02937bf18b7dbe1fbfdfa6fd7ae89247380aa7d 100644 (file)
@@ -3,15 +3,15 @@ title: LastChange
 description: Returns the last modification date of site content.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: time.Time
-  signatures: [SITE.LastChange]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [SITE.LastChange]
 expiryDate: 2026-02-19 # deprecated 2024-02-19 in v0.123.0
 ---
 
-{{% deprecated-in 0.123.0 %}}
+{{< deprecated-in 0.123.0 >}}
 Use [`.Site.Lastmod`] instead.
 
 [`.Site.Lastmod`]: /methods/site/lastmod/
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
index f1663db490ca04dcc851e5b117f051ac33b29af9..38f6da2fa25329c26c30ffc7f297027a4d546885 100644 (file)
@@ -3,10 +3,10 @@ title: Lastmod
 description: Returns the last modification date of site content.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: time.Time
-  signatures: [SITE.Lastmod]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [SITE.Lastmod]
 ---
 
 {{< new-in 0.123.0 />}}
index aa6e84bda57cd26376002c0818331c2b1874cf11..bee4f2d57c6cad60fe0e3ef694dcee1361237fc9 100644 (file)
@@ -1,18 +1,17 @@
 ---
 title: MainSections
-description: Returns a slice of the main section names as defined in the site configuration, falling back to the top level section with the most pages.
+description: Returns a slice of the main section names as defined in the site configuration, falling back to the top-level section with the most pages.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: '[]string'
-  signatures: [SITE.MainSections]
+params:
+  functions_and_methods:
+    returnType: '[]string'
+    signatures: [SITE.MainSections]
 ---
 
 Site configuration:
 
 {{< code-toggle file=hugo >}}
-[params]
 mainSections = ['books','films']
 {{< /code-toggle >}}
 
@@ -22,7 +21,7 @@ Template:
 {{ .Site.MainSections }} → [books films]
 ```
 
-If `params.mainSections` is not defined in the site configuration, this method returns a slice with one element---the top level section with the most pages.
+If `mainSections` is not defined in the site configuration, this method returns a slice with one element---the top-level section with the most pages.
 
 With this content structure, the "films" section has the most pages:
 
@@ -44,7 +43,7 @@ Template:
 {{ .Site.MainSections }} → [films]
 ```
 
-When creating a theme, instead of hardcoding section names when listing the most relevant pages on the front page, instruct site authors to set `params.mainSections` in their site configuration.
+When creating a theme, instead of hardcoding section names when listing the most relevant pages on the front page, instruct site authors to set `mainSections` in their site configuration.
 
 Then your home template can do something like this:
 
index e51980c2e27be8933a6fbf7bd76247ce8d690026..398a9b022352eb2d06d73b9b6711b5040b1f8c7f 100644 (file)
@@ -3,21 +3,16 @@ title: Menus
 description: Returns a collection of menu objects for the given site.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/page/IsMenuCurrent
-    - methods/page/HasMenuCurrent
-  returnType: navigation.Menus
-  signatures: [SITE.Menus]
+params:
+  functions_and_methods:
+    returnType: navigation.Menus
+    signatures: [SITE.Menus]
 ---
 
 The `Menus` method on a `Site` object returns a collection of menus, where each menu contains one or more entries, either flat or nested. Each entry points to a page within the site, or to an external resource.
 
-{{% note %}}
-Menus can be defined and localized in several ways. Please see the [menus] section for a complete explanation and examples.
-
-[menus]: /content-management/menus/
-{{% /note %}}
+> [!note]
+> Menus can be defined and localized in several ways. Please see the [menus] section for a complete explanation and examples.
 
 A site can have multiple menus. For example, a main menu and a footer menu:
 
@@ -88,7 +83,7 @@ You will typically render a menu using a partial template. As the active menu en
 
 The example above is simplistic. Please see the [menu templates] section for more information.
 
-[menu templates]: /templates/menu/
-
 [`partial`]: /functions/partials/include/
 [`partialCached`]: /functions/partials/includecached/
+[menu templates]: /templates/menu/
+[menus]: /content-management/menus/
index bb684a96da75ae22367bf27ab854c272b0f298c7..a6ba5e029239887c25200b2dcb44d960c2124a2f 100644 (file)
@@ -3,16 +3,13 @@ title: Pages
 description: Returns a collection of all pages.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/AllPages
-    - methods/site/RegularPages
-    - methods/site/Sections
-  returnType: page.Pages
-  signatures: [SITE.Pages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [SITE.Pages]
 ---
 
-This method returns all page [kinds](g) in the current language. That includes the home page, section pages, taxonomy pages, term pages, and regular pages.
+This method returns all page [kinds](g) in the current language, in the [default sort order](g). That includes the home page, section pages, taxonomy pages, term pages, and regular pages.
 
 In most cases you should use the [`RegularPages`] method instead.
 
index 0c2f621c8b2b4f783170c37ce9cba056facd6af3..929e30e987d3270c98db7a1313d97ef14157bb85 100644 (file)
@@ -3,10 +3,10 @@ title: Param
 description: Returns the site parameter with the given key.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: any
-  signatures: [SITE.Param KEY]
+params:
+  functions_and_methods:
+    returnType: any
+    signatures: [SITE.Param KEY]
 ---
 
 The `Param` method on a `Site` object is a convenience method to return the value of a user-defined parameter in the site configuration.
index 418118ee3b1a98736641b2af6671643051bf53c6..8467be41dea3b9a32a06c8b66d12580956cd839b 100644 (file)
@@ -3,13 +3,10 @@ title: Params
 description: Returns a map of custom parameters as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/collections/indexFunction
-    - methods/page/Params
-    - methods/page/Param
-  returnType: maps.Params
-  signatures: [SITE.Params]
+params:
+  functions_and_methods:
+    returnType: maps.Params
+    signatures: [SITE.Params]
 ---
 
 With this site configuration:
index 65bafef6cfbbae95f93a6935e6c0ed4de2c678f4..69a460529e684b8283caadd0c481d89ec8a9e1a2 100644 (file)
@@ -3,16 +3,13 @@ title: RegularPages
 description: Returns a collection of all regular pages.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/AllPages
-    - methods/site/RegularPages
-    - methods/site/Sections
-  returnType: page.Pages
-  signatures: [SITE.RegularPages]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [SITE.RegularPages]
 ---
 
-The `RegularPages` method on a `Site` object returns a collection of all [regular pages](g).
+The `RegularPages` method on a `Site` object returns a collection of all [regular pages](g), in the [default sort order](g).
 
 ```go-html-template
 {{ range .Site.RegularPages }}
@@ -20,14 +17,9 @@ The `RegularPages` method on a `Site` object returns a collection of all [regula
 {{ end }}
 ```
 
-By default, Hugo sorts page collections by:
+{{% glossary-term "default sort order" %}}
 
-1. The page `weight` as defined in front matter
-1. The page `date` as defined in front matter
-1. The page `linkTitle` as defined in front matter
-1. The file path
-
-If the `linkTitle` is not defined, Hugo evaluates the `title` instead.
+[default sort order](g)
 
 To change the sort order, use any of the `Pages` [sorting methods]. For example:
 
index a397c5926b42ecc34312063a165d5def846c5d29..0ddaf0626539ab3c8dd2a40de1b5d763a4a5bdd6 100644 (file)
@@ -1,17 +1,16 @@
 ---
 title: Sections
-description: Returns a collection of first level section pages.
+description: Returns a collection of top-level section pages.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/site/AllPages
-    - methods/site/Pages
-    - methods/site/RegularPages
-  returnType: page.Pages
-  signatures: [SITE.Sections]
+params:
+  functions_and_methods:
+    returnType: page.Pages
+    signatures: [SITE.Sections]
 ---
 
+The `Sections` method on a `Site` object returns a collection of top-level [section pages](g), in the [default sort order](g).
+
 Given this content structure:
 
 ```text
index ac287d3b4df8f002410b666e3ee5674ef7bda8b2..cca71a40a0d5a4f9cdfa8f53675b861bceaccca6 100644 (file)
@@ -3,10 +3,10 @@ title: Sites
 description: Returns a collection of all Site objects, one for each language, ordered by default content language then by language weight.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Sites
-  signatures: [SITE.Sites]
+params:
+  functions_and_methods:
+    returnType: page.Sites
+    signatures: [SITE.Sites]
 ---
 
 With this site configuration:
index dcc3a0bedaf76d7eef30882752b492eb0a73dd40..7dcf7d095b3804fe2f58add76d15d3b975c60ae0 100644 (file)
@@ -3,14 +3,10 @@ title: Store
 description: Returns a "scratch pad" to store and manipulate data, scoped to the current site.
 categories: []
 keywords: []
-action:
-  related:
-  - methods/page/store
-  - functions/hugo/store
-  - functions/collections/NewScratch
-  returnType: maps.Scratch
-  signatures: [site.Store]
-toc: true
+params:
+  functions_and_methods:
+    returnType: maps.Scratch
+    signatures: [site.Store]
 ---
 
 {{< new-in 0.139.0 />}}
@@ -19,7 +15,7 @@ Use the `Store` method on a `Site` object to create a [scratch pad](g) to store
 
 ## Methods
 
-###### Set
+### Set
 
 Sets the value of a given key.
 
@@ -27,7 +23,7 @@ Sets the value of a given key.
 {{ site.Store.Set "greeting" "Hello" }}
 ```
 
-###### Get
+### Get
 
 Gets the value of a given key.
 
@@ -36,7 +32,7 @@ Gets the value of a given key.
 {{ site.Store.Get "greeting" }} → Hello
 ```
 
-###### Add
+### Add
 
 Adds a given value to existing value(s) of the given key.
 
@@ -58,9 +54,9 @@ For single values, `Add` accepts values that support Go's `+` operator. If the f
 {{ site.Store.Set "greetings" (slice "Hello") }}
 {{ site.Store.Add "greetings" (slice "Welcome" "Cheers") }}
 {{ site.Store.Get "greetings" }} → [Hello Welcome Cheers]
-```
+  ```
 
-###### SetInMap
+### SetInMap
 
 Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`.
 
@@ -70,7 +66,7 @@ Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to th
 {{ site.Store.Get "greetings" }} → map[english:Hello french:Bonjour]
 ```
 
-###### DeleteInMap
+### DeleteInMap
 
 Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 
@@ -81,7 +77,7 @@ Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
 {{ site.Store.Get "greetings" }} → map[french:Bonjour]
 ```
 
-###### GetSortedMapValues
+### GetSortedMapValues
 
 Returns an array of values from `key` sorted by `mapKey`.
 
@@ -91,7 +87,7 @@ Returns an array of values from `key` sorted by `mapKey`.
 {{ site.Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]
 ```
 
-###### Delete
+### Delete
 
 Removes the given key.
 
index ee98d2ac56d51ed6f59e7b2ee6da62e7dab3c15b..92dc41a9b1346785939db7e8bd5df43e023a2aa7 100644 (file)
@@ -3,15 +3,15 @@ title: Taxonomies
 description: Returns a data structure containing the site's Taxonomy objects, the terms within each Taxonomy object, and the pages to which the terms are assigned.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.TaxonomyList
-  signatures: [SITE.Taxonomies]
+params:
+  functions_and_methods:
+    returnType: page.TaxonomyList
+    signatures: [SITE.Taxonomies]
 ---
 
 Conceptually, the `Taxonomies` method on a `Site` object returns a data structure such&nbsp;as:
 
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
 taxonomy a:
   - term 1:
     - page 1
@@ -50,7 +50,7 @@ content/
 
 Conceptually, the taxonomies data structure looks like:
 
-{{< code-toggle >}}
+{{< code-toggle file=hugo >}}
 genres:
   - suspense:
     - And Then There Were None
@@ -89,13 +89,10 @@ Hugo renders this to:
 </ul>
 ```
 
-{{% note %}}
-Hugo's taxonomy system is powerful, allowing you to classify content and create relationships between pages.
-
-Please see the [taxonomies] section for a complete explanation and examples.
-
-[taxonomies]: /content-management/taxonomies/
-{{% /note %}}
+> [!note]
+> Hugo's taxonomy system is powerful, allowing you to classify content and create relationships between pages.
+>
+> Please see the [taxonomies] section for a complete explanation and examples.
 
 ## Examples
 
@@ -143,7 +140,7 @@ The following example displays all terms in a site's tags taxonomy:
 ```
 This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms.
 
-{{< code file=layouts/partials/all-taxonomies.html >}}
+```go-html-template {file="layouts/partials/all-taxonomies.html"}
 {{ with .Site.Taxonomies }}
   {{ $numberOfTerms := 0 }}
   {{ range $taxonomy, $terms := . }}
@@ -174,4 +171,6 @@ This example will list all taxonomies and their terms, as well as all the conten
     </ul>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
+
+[taxonomies]: /content-management/taxonomies/
index a357286c1f87a3682fb0c1dae050f82d13b11ccb..935edda0c59147d1ff408ef6d53dc73420ee2e2e 100644 (file)
@@ -3,10 +3,10 @@ title: Title
 description: Returns the title as defined in the site configuration.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: string
-  signatures: [SITE.Title]
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [SITE.Title]
 ---
 
 Site configuration:
index bf322ee07487c23c30596ea61d0f275238e2b712..f395a369333a2a2f49395c6a2288161ee6844a15 100644 (file)
@@ -4,10 +4,5 @@ linkTitle: Site
 description: Use these methods with Site objects.
 categories: []
 keywords: []
-menu:
-  docs:
-    parent: methods
 aliases: [/variables/site/]
 ---
-
-Use these methods with Site objects. A multilingual project will have two or more sites, one for each language.
index 72cd1c355f7f45759a7b8127979a6bd3fcdb14cc..af4af596c3815f39e2f119f62a1c2d7e26ac4406 100644 (file)
@@ -3,23 +3,21 @@ title: Alphabetical
 description: Returns an ordered taxonomy, sorted alphabetically by term.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/taxonomy/ByCount
-  returnType: page.OrderedTaxonomy
-  signatures: [TAXONOMY.Alphabetical]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.OrderedTaxonomy
+    signatures: [TAXONOMY.Alphabetical]
 ---
 
 The `Alphabetical` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted alphabetically by [term](g).
 
 While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g).
 
-{{% include "methods/taxonomy/_common/get-a-taxonomy-object.md" %}}
+{{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}}
 
 ## Get the ordered taxonomy
 
-Now that we have captured the “genres” Taxonomy object, lets get the ordered taxonomy sorted alphabetically by term:
+Now that we have captured the “genres” Taxonomy object, let's get the ordered taxonomy sorted alphabetically by term:
 
 ```go-html-template
 {{ $taxonomyObject.Alphabetical }}
@@ -37,7 +35,7 @@ To inspect the data structure:
 <pre>{{ debug.Dump $taxonomyObject.Alphabetical }}</pre>
 ```
 
-{{% include "methods/taxonomy/_common/ordered-taxonomy-element-methods.md" %}}
+{{% include "/_common/methods/taxonomy/ordered-taxonomy-element-methods.md" %}}
 
 ## Example
 
index 930f8953bbe5fe52b99b0e34de015457adc308b9..fbf9bb4a1cf2c8febfe40a333cef995b56f34e95 100644 (file)
@@ -3,23 +3,21 @@ title: ByCount
 description: Returns an ordered taxonomy, sorted by the number of pages associated with each term.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/taxonomy/Alphabetical
-  returnType: page.OrderedTaxonomy
-  signatures: [TAXONOMY.ByCount]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.OrderedTaxonomy
+    signatures: [TAXONOMY.ByCount]
 ---
 
 The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g).
 
 While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g).
 
-{{% include "methods/taxonomy/_common/get-a-taxonomy-object.md" %}}
+{{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}}
 
 ## Get the ordered taxonomy
 
-Now that we have captured the “genres” Taxonomy object, lets get the ordered taxonomy sorted by the number of pages associated with each term:
+Now that we have captured the “genres” Taxonomy object, let's get the ordered taxonomy sorted by the number of pages associated with each term:
 
 ```go-html-template
 {{ $taxonomyObject.ByCount }}
@@ -37,7 +35,7 @@ To inspect the data structure:
 <pre>{{ debug.Dump $taxonomyObject.ByCount }}</pre>
 ```
 
-{{% include "methods/taxonomy/_common/ordered-taxonomy-element-methods.md" %}}
+{{% include "/_common/methods/taxonomy/ordered-taxonomy-element-methods.md" %}}
 
 ## Example
 
index 4b756f254a364b3e312b8e8edb4958a1f7cf162b..76af8ee04cf3ac90c48d5d1ab177c9471b4b162a 100644 (file)
@@ -3,16 +3,15 @@ title: Count
 description: Returns the number of number of weighted pages to which the given term has been assigned.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [TAXONOMY.Count TERM]
-toc: true
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TAXONOMY.Count TERM]
 ---
 
 The `Count` method on a `Taxonomy` object returns the number of number of [weighted pages](g) to which the given [term](g) has been assigned.
 
-{{% include "methods/taxonomy/_common/get-a-taxonomy-object.md" %}}
+{{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}}
 
 ## Count the weighted pages
 
index 107912493dccdf9844a9f70a6bce8eae80e1544f..03c184868c156bda09dd1ed7afd118eca62e177c 100644 (file)
@@ -3,16 +3,15 @@ title: Get
 description: Returns a slice of weighted pages to which the given term has been assigned.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.WeightedPages
-  signatures: [TAXONOMY.Get TERM]
-toc: true
+params:
+  functions_and_methods:
+    returnType: page.WeightedPages
+    signatures: [TAXONOMY.Get TERM]
 ---
 
 The `Get` method on a `Taxonomy` object returns a slice of [weighted pages](g) to which the given [term](g) has been assigned.
 
-{{% include "methods/taxonomy/_common/get-a-taxonomy-object.md" %}}
+{{% include "/_common/methods/taxonomy/get-a-taxonomy-object.md" %}}
 
 ## Get the weighted pages
 
index 039719b933565368a4f82efb21d386363b467abb..b0b5d3affb3d0da6f909a5f1da7fc12061d6c402 100644 (file)
@@ -3,10 +3,10 @@ title: Page
 description: Returns the taxonomy page or nil if the taxonomy has no terms.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: page.Page
-  signatures: [TAXONOMY.Page]
+params:
+  functions_and_methods:
+    returnType: page.Page
+    signatures: [TAXONOMY.Page]
 ---
 
 {{< new-in 0.125.0 />}}
diff --git a/content/en/methods/taxonomy/_common/_index.md b/content/en/methods/taxonomy/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/methods/taxonomy/_common/get-a-taxonomy-object.md b/content/en/methods/taxonomy/_common/get-a-taxonomy-object.md
deleted file mode 100644 (file)
index 9ef2585..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-Before we can use a `Taxonomy` method, we need to capture a `Taxonomy` object.
-
-## Capture a Taxonomy object
-
-Consider this site configuration:
-
-{{< code-toggle file=hugo >}}
-[taxonomies]
-genre = 'genres'
-author = 'authors'
-{{< /code-toggle >}}
-
-And this content structure:
-
-```text
-content/
-├── books/
-│   ├── and-then-there-were-none.md --> genres: suspense
-│   ├── death-on-the-nile.md        --> genres: suspense
-│   └── jamaica-inn.md              --> genres: suspense, romance
-│   └── pride-and-prejudice.md      --> genres: romance
-└── _index.md
-```
-
-To capture the "genres" `Taxonomy` object from within any template, use the [`Taxonomies`] method on a `Site` object.
-
-```go-html-template
-{{ $taxonomyObject := .Site.Taxonomies.genres }}
-```
-
-To capture the "genres" `Taxonomy` object when rendering its page with a taxonomy template, use the [`Terms`] method on the page's [`Data`] object:
-
-{{< code file=layouts/_default/taxonomy.html  >}}
-{{ $taxonomyObject := .Data.Terms }}
-{{< /code >}}
-
-To inspect the data structure:
-
-```go-html-template
-<pre>{{ debug.Dump $taxonomyObject }}</pre>
-```
-
-Although the [`Alphabetical`] and [`ByCount`] methods provide a better data structure for ranging through the taxonomy, you can render the weighted pages by term directly from the `Taxonomy` object:
-
-```go-html-template
-{{ range $term, $weightedPages := $taxonomyObject }}
-  <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
-  <ul>
-    {{ range $weightedPages }}
-      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
-    {{ end }}
-  </ul>
-{{ end }}
-```
-
-In the example above, the first anchor element is a link to the term page.
-
-[`Alphabetical`]: /methods/taxonomy/alphabetical/
-[`ByCount`]: /methods/taxonomy/bycount/
-
-[`data`]: /methods/page/data/
-[`terms`]: /methods/page/data/#in-a-taxonomy-template
-[`taxonomies`]: /methods/site/taxonomies/
diff --git a/content/en/methods/taxonomy/_common/ordered-taxonomy-element-methods.md b/content/en/methods/taxonomy/_common/ordered-taxonomy-element-methods.md
deleted file mode 100644 (file)
index ec5f8e4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-An ordered taxonomy is a slice, where each element is an object that contains the term and a slice of its weighted pages.
-
-Each element of the slice provides these methods:
-
-Count
-: (`int`) Returns the number of pages to which the term is assigned.
-
-Page
-: (`page.Page`) Returns the term's `Page` object, useful for linking to the term page.
-
-Pages
-: (`page.Pages`) Returns a `Pages` object containing the `Page` objects to which the term is assigned, sorted by [taxonomic weight](g). To sort or group, use any of the [methods] available to the `Pages` object. For example, sort by the last modification date.
-
-Term
-: (`string`) Returns the term name.
-
-WeightedPages
-: (`page.WeightedPages`) Returns a slice of weighted pages to which the term is assigned, sorted by taxonomic weight. The `Pages` method above is more flexible, allowing you to sort and group.
-
-[methods]: /methods/pages/
index 18c7f12c9a4aba9a46f6ba71d6e3d46c93281d25..13acdb10caca9e4afa0fb1886dbb4541d61378c1 100644 (file)
@@ -3,11 +3,5 @@ title: Taxonomy methods
 linkTitle: Taxonomy
 description: Use these methods with Taxonomy objects.
 keywords: []
-menu:
-  docs:
-    identifier:
-    parent: methods
 aliases: [/variables/taxonomy/]
 ---
-
-Use these methods with Taxonomy objects.
index 8fd755244a2cffec83217d75af245d49c81ebe56..e518a16332b144653c42eff163cf16a660a1309d 100644 (file)
@@ -3,13 +3,10 @@ title: Add
 description: Returns the given time plus the given duration.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-    - functions/time/Duration
-    - functions/time/ParseDuration
-  returnType: time.Time
-  signatures: [TIME.Add DURATION]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.Add DURATION]
 ---
 
 ```go-html-template
index 8537d6e25fcad9fa8715b8e1fd27cd8e69344605..ffc93c712a7418ac2a0123d651398ff21401d814 100644 (file)
@@ -3,11 +3,10 @@ title: AddDate
 description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related: []
-  returnType: time.Time
-  signatures: [TIME.AddDate YEARS MONTHS DAYS]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.AddDate YEARS MONTHS DAYS]
 aliases: [/functions/adddate]
 ---
 
@@ -21,11 +20,10 @@ aliases: [/functions/adddate]
 {{ $d.AddDate -1 -1 -1 | time.Format "2006-01-02" }} → 2020-11-30
 ```
 
-{{% note %}}
-When adding months or years, Hugo normalizes the final `time.Time` value if the resulting day does not exist. For example, adding one month to 31 January produces 2 March or 3 March, depending on the year.
-
-See [this explanation](https://github.com/golang/go/issues/31145#issuecomment-479067967) from the Go team.
-{{% /note %}}
+> [!note]
+> When adding months or years, Hugo normalizes the final `time.Time` value if the resulting day does not exist. For example, adding one month to 31 January produces 2 March or 3 March, depending on the year.
+>
+> See [this explanation](https://github.com/golang/go/issues/31145#issuecomment-479067967) from the Go team.
 
 ```go-html-template
 {{ $d := "2023-01-31" | time.AsTime }}
index 64c6cfe67904887909fbf8f9e8b647dd72ae1f15..1c8d41f640c2cb62e2981a7f506007954c9e9e86 100644 (file)
@@ -3,13 +3,10 @@ title: After
 description: Reports whether TIME1 is after TIME2.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Before
-    - methods/time/Equal
-    - functions/time/AsTime
-  returnType: bool
-  signatures: [TIME1.After TIME2]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [TIME1.After TIME2]
 ---
 
 ```go-html-template
index c3d582860ca9ad91e5acf061b215c6e2d0ea7319..f6dc3a8e70d02ba96035f69bafc14abb75ed3532 100644 (file)
@@ -3,13 +3,10 @@ title: Before
 description: Reports whether TIME1 is before TIME2.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/After
-    - methods/time/Equal
-    - functions/time/AsTime
-  returnType: bool
-  signatures: [TIME1.Before TIME2]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [TIME1.Before TIME2]
 ---
 
 ```go-html-template
index 1173b8489aa2dedcff4c83f0b1bf163f93d4244d..e9e67873cab23173e8d806d2a504a4acba12d623 100644 (file)
@@ -3,16 +3,10 @@ title: Day
 description: Returns the day of the month of the given time.Time value.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Year
-    - methods/time/Month
-    - methods/time/Hour
-    - methods/time/Minute
-    - methods/time/Second
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Day]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Day]
 ---
 
 ```go-html-template
index 4d45a3ada032ff5034abd66fcdd990558cb79344..6db10423c310c15459442fd7e175bf3bde95ff6f 100644 (file)
@@ -3,13 +3,10 @@ title: Equal
 description: Reports whether TIME1 is equal to TIME2.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/After
-    - methods/time/Before
-    - functions/time/AsTime
-  returnType: bool
-  signatures: [TIME1.Equal TIME2]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [TIME1.Equal TIME2]
 ---
 
 ```go-html-template
index 9a718b53b144ea92897c120864c68a34c7155e84..8a484b74e17a3e44f7c015b10ac243f286f7526f 100644 (file)
@@ -3,15 +3,10 @@ title: Format
 description: Returns a textual representation of the time.Time value formatted according to the layout string.
 categories: []
 keywords: []
-action:
-  aliases: []
-  related:
-    - functions/time/AsTime
-    - methods/time/UTC
-    - methods/time/Local
-  returnType: string
-  signatures: [TIME.Format LAYOUT]
-toc: true
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [TIME.Format LAYOUT]
 aliases: [/methods/time/format]
 ---
 
@@ -23,11 +18,8 @@ aliases: [/methods/time/format]
 {{ $t.Format $format }} → 27 Jan 2023
 ```
 
-{{% note %}}
-To [localize](g) the return value, use the [`time.Format`] function instead.
-
-[`time.Format`]: /functions/time/format/
-{{% /note %}}
+> [!note]
+> To [localize](g) the return value, use the [`time.Format`] function instead.
 
 Use the `Format` method with any `time.Time` value, including the four predefined front matter dates:
 
@@ -40,15 +32,12 @@ Use the `Format` method with any `time.Time` value, including the four predefine
 {{ .Lastmod.Format $format }}
 ```
 
-{{% note %}}
-Use the [`time.Format`] function to format string representations of dates, and to format raw TOML dates that exclude time and time zone offset.
-
-[`time.Format`]: /functions/time/format/
-{{% /note %}}
+> [!note]
+> Use the [`time.Format`] function to format string representations of dates, and to format raw TOML dates that exclude time and time zone offset.
 
 ## Layout string
 
-{{% include "functions/_common/time-layout-string.md" %}}
+{{% include "/_common/time-layout-string.md" %}}
 
 ## Examples
 
@@ -95,3 +84,5 @@ Use the [`humanize`](/functions/inflect/humanize) function to render the day of
 
 {{ humanize $t.Day }} of {{ $t.Format "January 2006" }} → 27th of January 2023
 ```
+
+[`time.Format`]: /functions/time/format/
index 58ed00260583a4509e6d5084dfaf19f44e6b42f0..28ecf62ace64f19b21377fba63a07142269575b7 100644 (file)
@@ -3,16 +3,10 @@ title: Hour
 description: Returns the hour within the day of the given time.Time value, in the range [0, 23].
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Year
-    - methods/time/Month
-    - methods/time/Day
-    - methods/time/Minute
-    - methods/time/Second
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Hour]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Hour]
 ---
 
 ```go-html-template
index df2b84cae89f252c23c32e7d1c452dc43b0899c7..28177b105f7243cc7fe6e7417f7d1fc40928489d 100644 (file)
@@ -3,11 +3,10 @@ title: IsDST
 description: Reports whether the given time.Time value is in Daylight Savings Time.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-  returnType: bool
-  signatures: [TIME.IsDST]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [TIME.IsDST]
 ---
 
 ```go-html-template
index 2026f3b2eefc0260bd1d0b87ffaa1417f7448690..400172794ab9b483c4084fb32d7b70ee8548a7e3 100644 (file)
@@ -3,11 +3,10 @@ title: IsZero
 description: Reports whether the given time.Time value represents the zero time instant, January 1, year 1, 00:00:00 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-  returnType: bool
-  signatures: [TIME.IsZero]
+params:
+  functions_and_methods:
+    returnType: bool
+    signatures: [TIME.IsZero]
 ---
 
 ````go-html-template
index bd40e3a44209eeedf355375072861baf9094b673..74fe889e0dde0225fa37019d8775dc0e69635a97 100644 (file)
@@ -3,12 +3,10 @@ title: Local
 description: Returns the given time.Time value with the location set to local time.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/UTC
-    - functions/time/AsTime
-  returnType: time.Time
-  signatures: [TIME.Local]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.Local]
 ---
 
 ```go-html-template
index d482fab5db4db3f5b9dfd444bfbb4794155085cc..b53db6d835211c7bec570e0cdf351f057080df80 100644 (file)
@@ -3,16 +3,10 @@ title: Minute
 description: Returns the minute offset within the hour of the given time.Time value, in the range [0, 59].
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Year
-    - methods/time/Month
-    - methods/time/Day
-    - methods/time/Hour
-    - methods/time/Second
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Minute]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Minute]
 ---
 
 ```go-html-template
index 0a01d1a700ac3b508ddc87a2187d0334f8af2923..b0ccea9c398b2630130f4034e641341abc8d882d 100644 (file)
@@ -3,16 +3,10 @@ title: Month
 description: Returns the month of the year of the given time.Time value.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Year
-    - methods/time/Day
-    - methods/time/Hour
-    - methods/time/Minute
-    - methods/time/Second
-    - functions/time/AsTime
-  returnType: time.Month
-  signatures: [TIME.Month]
+params:
+  functions_and_methods:
+    returnType: time.Month
+    signatures: [TIME.Month]
 ---
 
 To convert the `time.Month` value to a string:
index 606143139679432fc46b537f3d4fc833e9507213..d895f962211ed5f3d2fa7990affc820f8e32d175 100644 (file)
@@ -3,11 +3,10 @@ title: Nanosecond
 description: Returns the nanosecond offset within the second of the given time.Time value, in the range [0, 999999999].
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Nanosecond]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Nanosecond]
 ---
 
 ```go-html-template
index 16bd2009f9551bfee90ea7dcd7d99202c6b8338a..816d41b445c6f93eb68015a20166ab9ba05b7a9b 100644 (file)
@@ -3,13 +3,10 @@ title: Round
 description: Returns the result of rounding TIME to the nearest multiple of DURATION since January 1, 0001, 00:00:00 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-    - functions/time/ParseDuration
-    - methods/time/Truncate
-  returnType: time.Time
-  signatures: [TIME.Round DURATION]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.Round DURATION]
 ---
 
 The rounding behavior for halfway values is to round up.
index e326c64bce3159acaed71f59f9243ba419968436..3af086fd3ca4cb44bcc993b373c79ea51f29227d 100644 (file)
@@ -3,16 +3,10 @@ title: Second
 description: Returns the second offset within the minute of the given time.Time value, in the range [0, 59].
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Year
-    - methods/time/Month
-    - methods/time/Day
-    - methods/time/Hour
-    - methods/time/Minute
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Second]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Second]
 ---
 
 ```go-html-template
index 9678365eb13c2bf213c0bf340290218bb0ba3f43..d48bf34672de65d7279f88f74d49d688f819a435 100644 (file)
@@ -3,11 +3,10 @@ title: Sub
 description: Returns the duration computed by subtracting TIME2 from TIME1.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-  returnType: time.Duration
-  signatures: [TIME1.Sub TIME2]
+params:
+  functions_and_methods:
+    returnType: time.Duration
+    signatures: [TIME1.Sub TIME2]
 ---
 
 ```go-html-template
index 64751f2c14feefecb0c794aba0d59cfdfb4448e5..b797afec0b99d9135a5ae1def61b1b75325798d8 100644 (file)
@@ -3,13 +3,10 @@ title: Truncate
 description: Returns the result of rounding TIME down to a multiple of DURATION since January 1, 0001, 00:00:00 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-    - functions/time/ParseDuration
-    - methods/time/Round
-  returnType: time.Time
-  signatures: [TIME.Truncate DURATION]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.Truncate DURATION]
 ---
 
 The `Truncate` method operates on TIME as an absolute duration since the [zero time](g); it does not operate on the presentation form of the time. If DURATION is a multiple of one hour, `Truncate` may return a time with a non-zero minute, depending on the time zone.
index 6fd7b526dd1c5919fb5bab5285b0765cdf319194..e131a003eafd6ac3c118b7e05ab8713851f438ae 100644 (file)
@@ -3,12 +3,10 @@ title: UTC
 description: Returns the given time.Time value with the location set to UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Local
-    - functions/time/AsTime
-  returnType: time.Time
-  signatures: [TIME.UTC]
+params:
+  functions_and_methods:
+    returnType: time.Time
+    signatures: [TIME.UTC]
 ---
 
 ```go-html-template
index fcfc661fe853878163bbd0c127b154fa2777f537..73deb524ee796b12d047d66dc3581622292f445d 100644 (file)
@@ -1,15 +1,11 @@
 ---
 title: Unix
-description: Returns the given time.Time value expressed as the number of seconds elapsed since January 1, 1970 UTC. 
+description: Returns the given time.Time value expressed as the number of seconds elapsed since January 1, 1970 UTC.
 categories: []
-action:
-  related:
-    - methods/time/UnixMilli
-    - methods/time/UnixMicro
-    - methods/time/UnixNano
-    - functions/time/AsTime
-  returnType: int64
-  signatures: [TIME.Unix]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [TIME.Unix]
 aliases: [/functions/unix]
 ---
 
index 150497cd357227784131c02ec71d001ffb602ba7..fadb0916c90f5d2079a65fd19de0d4dec7a3a91b 100644 (file)
@@ -1,16 +1,12 @@
 ---
 title: UnixMicro
-description: Returns the given time.Time value expressed as the number of microseconds elapsed since January 1, 1970 UTC. 
+description: Returns the given time.Time value expressed as the number of microseconds elapsed since January 1, 1970 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Unix
-    - methods/time/UnixMilli
-    - methods/time/UnixNano
-    - functions/time/AsTime
-  returnType: int64
-  signatures: [TIME.UnixMicro]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [TIME.UnixMicro]
 ---
 
 See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).
index e5e90ba25f9c392b0ed417778329b95cdb811b81..9d2261d91671f39026aaa806470bc1c883b1895a 100644 (file)
@@ -1,16 +1,12 @@
 ---
 title: UnixMilli
-description: Returns the given time.Time value expressed as the number of milliseconds elapsed since January 1, 1970 UTC. 
+description: Returns the given time.Time value expressed as the number of milliseconds elapsed since January 1, 1970 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Unix
-    - methods/time/UnixMicro
-    - methods/time/UnixNano
-    - functions/time/AsTime
-  returnType: int64
-  signatures: [TIME.UnixMilli]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [TIME.UnixMilli]
 ---
 
 See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).
index 63db320a350fa93a79ebe027caad6b1888682c42..4159ddee254919287a325a0480b6b56a4470dbd9 100644 (file)
@@ -1,16 +1,12 @@
 ---
 title: UnixNano
-description: Returns the given time.Time value expressed as the number of nanoseconds elapsed since January 1, 1970 UTC. 
+description: Returns the given time.Time value expressed as the number of nanoseconds elapsed since January 1, 1970 UTC.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Unix
-    - methods/time/UnixMilli
-    - methods/time/UnixMicro
-    - functions/time/AsTime
-  returnType: int64
-  signatures: [TIME.UnixNano]
+params:
+  functions_and_methods:
+    returnType: int64
+    signatures: [TIME.UnixNano]
 ---
 
 See [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).
index b2a95fe9c168043ffbe73c73938fc1440981ad84..da939ff8750355ae6a45028929ece4b3d2b7f01d 100644 (file)
@@ -1,13 +1,12 @@
 ---
 title: Weekday
-description:  Returns the day of the week of the given time.Time value.
+description: Returns the day of the week of the given time.Time value.
 categories: []
 keywords: []
-action:
-  related:
-    - functions/time/AsTime
-  returnType: time.Weekday
-  signatures: [TIME.Weekday]
+params:
+  functions_and_methods:
+    returnType: time.Weekday
+    signatures: [TIME.Weekday]
 ---
 
 To convert the `time.Weekday` value to a string:
index b046896f456ee99f0f33dc70cbb391f060da7f77..3f647ea343a7e30b7f691b2e2e0a6ad8c78d71bc 100644 (file)
@@ -3,16 +3,10 @@ title: Year
 description: Returns the year of the given time.Time value.
 categories: []
 keywords: []
-action:
-  related:
-    - methods/time/Month
-    - methods/time/Day
-    - methods/time/Hour
-    - methods/time/Minute
-    - methods/time/Second
-    - functions/time/AsTime
-  returnType: int
-  signatures: [TIME.Year]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.Year]
 ---
 
 ```go-html-template
index f380cdffe9e6b6c9f939c656159847c6e412dacd..a93158b45535ddddbc66fefc7a4c4c1b6e0bc2a5 100644 (file)
@@ -3,10 +3,10 @@ title: YearDay
 description: Returns the day of the year of the given time.Time value, in the range [1, 365] for non-leap years, and [1, 366] in leap years.
 categories: []
 keywords: []
-action:
-  related: []
-  returnType: int
-  signatures: [TIME.YearDay]
+params:
+  functions_and_methods:
+    returnType: int
+    signatures: [TIME.YearDay]
 ---
 
 ```go-html-template
index 81d4690e0e4611c738532aeadf3de5ecf0f6b661..8114664d3a05c992e6417ae5938f37035d4292c2 100644 (file)
@@ -4,10 +4,4 @@ linkTitle: Time
 description: Use these methods with time.Time values.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: time-methods
-    parent: methods
 ---
-
-Use these methods with time.Time values.
diff --git a/content/en/myshowcase/bio.md b/content/en/myshowcase/bio.md
deleted file mode 100644 (file)
index 6b8f7e1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Add some **general info** about Myshowcase here.
-
-The site is built by:
-
-* [Person 1](https://example.org)
-* [Person 1](https://example.org)
diff --git a/content/en/myshowcase/featured.png b/content/en/myshowcase/featured.png
deleted file mode 100644 (file)
index 4f39013..0000000
Binary files a/content/en/myshowcase/featured.png and /dev/null differ
diff --git a/content/en/myshowcase/index.md b/content/en/myshowcase/index.md
deleted file mode 100644 (file)
index abb4ad6..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
----
-
-title: Myshowcase
-date: 2021-01-14
-draft: true
-
-description: "A short description of this page."
-
-# The URL to the site on the internet.
-siteURL: https://gohugo.io/
-
-# Link to the site's Hugo source code if public and you can/want to share.
-# Remove or leave blank if not needed/wanted.
-siteSource: https://github.com/gohugoio/hugoDocs
-
-# Add credit to the article author. Leave blank or remove if not needed/wanted.
-byline: "[bep](https://github.com/bep), Hugo Lead"
-
----
-
-To complete this showcase:
-
-1. Write the story about your site in this file.
-1. Add a summary to the `bio.md` file in this directory.
-1. Replace the `featured-template.png` with a screenshot of your site. You can rename it, but it must contain the word `featured`.
-1. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls
-
-The content of this bundle explained:
-
-index.md
-: The main content file. Fill in required front matter metadata and write your story. I does not have to be a novel. It can even be self-promotional, but it should include Hugo in some form.
-
-bio.md
-: A short summary of the website. Site credits (who built it) fits nicely here.
-
-featured.png
-: A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio).
diff --git a/content/en/news/_content.gotmpl b/content/en/news/_content.gotmpl
new file mode 100644 (file)
index 0000000..f979c9a
--- /dev/null
@@ -0,0 +1,30 @@
+{{/* Get releases from GitHub. */}}
+{{ $u := "https://api.github.com/repos/gohugoio/hugo/releases" }}
+{{ $releases := partial "helpers/funcs/get-remote-data.html" $u }}
+{{ $releases = where $releases "draft" false }}
+{{ $releases = where $releases "prerelease" false }}
+
+{{/* Add pages. */}}
+{{ range $releases | first 24 }}
+  {{ $publishDate := .published_at | time.AsTime }}
+
+  {{/* Correct the v0.138.0 release date. See https://github.com/gohugoio/hugo/issues/13066. */}}
+  {{ if eq .name "v0.138.0" }}
+    {{ $publishDate = "2024-11-06T11:22:34Z" }}
+  {{ end }}
+
+  {{ $content := dict "mediaType" "text/markdown" "value" "" }}
+  {{ $dates := dict "publishDate" (time.AsTime $publishDate) }}
+  {{ $params := dict "permalink" .html_url }}
+  {{ $build := dict "render" "never" "list" "local" }}
+  {{ $page := dict
+    "build" $build
+    "content" $content
+    "dates" $dates
+    "kind" "page"
+    "params" $params
+    "path" .name
+    "title" (printf "Release %s" .name)
+  }}
+  {{ $.AddPage $page }}
+{{ end }}
index c170a69a4aa82da4589c497ad2e723a4a5bd3a27..23c082cb73830ab317f4905cd156b8992fc07788 100644 (file)
@@ -4,6 +4,6 @@ description: Stay up-to-date with the latest news and announcements.
 outputs:
   - html
   - rss
-aliases: [/release-notes/]
 weight: 10
+aliases: [/release-notes/]
 ---
index f2673ba3787636faceb6b5d933a65385adcebfc5..98f978f4fcb2014f2ec44f417d8155faf5d615bd 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Quick reference guides
-linktitle: Quick reference
+linkTitle: Quick reference
 description: Use these quick reference guides for quick access to key information.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: quick-reference-in-this-section
-    parent: quick-reference
-    weight: 10
 weight: 10
-showSectionMenu: false
 ---
-
-{{% param description %}}
index 946a490693c0a4f159c7e55ce4d3891de49019a9..15c2e60e6b7d8b7295acbf13fdd435283a373c4a 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Emojis
 description: Include emoji shortcodes in your Markdown or templates.
-categories: [quick reference]
-keywords: [emoji]
-menu:
-  docs:
-    parent: quick-reference
-    weight: 20
-weight: 20
-toc: true
+categories: []
+keywords: []
 ---
 
 ## Attribution
index 42eafedd3273ec1922d3090fd8a0e5020b5d148e..72235d0f3482d8143592294efd512a2ff34c81c0 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Functions
 description: A quick reference guide to Hugo's functions, grouped by namespace. Aliases, if any, appear in parentheses to the right of the function name.
-categories: [quick reference]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: quick-reference
-    weight: 30
-weight: 30
-toc: true
 ---
 
 {{% quick-reference section="functions" %}}
index 1b5111e8eb8b81fa158f314dddd4ad954369133f..42894c4da96920afc0546828081d8e1a0b4e66d2 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Glossary
 description: Terms commonly used throughout the documentation.
-categories: [quick-reference]
-keywords: [glossary]
-hide_in_this_section: true
-menu:
-  docs:
-    parent: quick-reference
-    weight: 40
-aliases: [/getting-started/glossary/]
-weight: 40
-layout: single
+categories: []
+keywords: []
 build:
   render: always
   list: always
@@ -18,6 +10,10 @@ cascade:
   build:
     render: never
     list: local
+layout: single
+params:
+  hide_in_this_section: true
+aliases: [/getting-started/glossary/]
 ---
 
 {{% glossary %}}
diff --git a/content/en/quick-reference/glossary/cicd.md b/content/en/quick-reference/glossary/cicd.md
new file mode 100644 (file)
index 0000000..355097b
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: CI/CD
+params:
+  reference: https://en.wikipedia.org/wiki/CI/CD
+---
+
+The term _CI/CD_ is an abbreviation for Continuous Integration and Continuous Delivery or Continuous Deployment depending on context.
index 61269dc8e32a9204eb9ecf058f955f7f560bb5c2..8f898e364ed3b310c66f7350066c13ad430864a3 100644 (file)
@@ -2,4 +2,4 @@
 title: CLI
 ---
 
-_CLI_ is an abbreviation of Command Line Interface.
+_CLI_ stands for command-line interface, a text-based method for interacting with computer programs or operating systems.
index 2b5588d56edad5963009fe63e0ce1681d02d306e..9b981a7e9ffd69055c1bd12ca0c7acb23d1f6e8d 100644 (file)
@@ -2,4 +2,9 @@
 title: default sort order
 ---
 
-The _default sort order_ is the default order in which Hugo sorts page collections: by [_weight_](g), then by date (descending), then by link title, and then by file path.
+The _default sort order_ for [_page collections_](g), used when no other criteria are set, follows this priority:
+
+  1. [`weight`](/content-management/front-matter/#weight) (ascending)
+  1. [`date`](/content-management/front-matter/#date) (descending)
+  1. [`linkTitle`](/content-management/front-matter/#linktitle) falling back to [`title`](/content-management/front-matter/#title) (ascending)
+  1. [logical path](g) (ascending)
index 6605c226332306298c5bf8fdd3487e6135d08a3b..ebba0ccdf1f78be373e02baf5dff018d4c9fc21d 100644 (file)
@@ -4,8 +4,6 @@ title: environment
 
 Typically one of `development`, `staging`, or `production`, each _environment_ may exhibit different behavior depending on configuration and template logic. For example, in a production environment you might minify and fingerprint CSS, but that probably doesn't make sense in a development environment.
 
-When running the built-in development server with the `hugo server` command, the environment is set to `development`. When building your site with the `hugo` command, the environment is set to `production`. To override the environment value, use the `--environment` command line flag or the `HUGO_ENVIRONMENT` environment variable.
+  When running the built-in development server with the `hugo server` command, the environment is set to `development`. When building your site with the `hugo` command, the environment is set to `production`. To override the environment value, use the `--environment` command line flag or the `HUGO_ENVIRONMENT` environment variable.
 
-To determine the current environment within a template, use the [`hugo.Environment`] function.
-
-[`hugo.Environment`]: /functions/hugo/environment/
+  To determine the current environment within a template, use the [`hugo.Environment`](/functions/hugo/environment/) function.
index 5243d1ef9ca32d8f8984ec116eca3dc06841e2bd..bb9c5a4d8c133b177ef24ab6761e76609ecb07ea 100644 (file)
@@ -3,4 +3,4 @@ title: glob
 reference: https://github.com/gobwas/glob?tab=readme-ov-file#example
 ---
 
-A _glob_ is a pattern used to match filenames and paths. It's a shorthand for specifying a set of files, making it easier to work with multiple files at once.
+A _glob_ is a pattern used to match file names and paths. It's a shorthand for specifying a set of files, making it easier to work with multiple files at once.
index f1ce7bc93e09e075c87b94b281cbfbdf0bc63b86..a7ed8a6cdd984442eb0c824938c0283e2fbd195a 100644 (file)
@@ -4,8 +4,8 @@ title: interval
 
 An [_interval_](https://en.wikipedia.org/wiki/Interval_(mathematics)) is a range of numbers between two endpoints: closed, open, or half-open.
 
-- A _closed interval_, denoted by brackets, includes its endpoints. For example, [0,&nbsp;1]&nbsp;is the interval where `0 <= x <= 1`.
+  - A _closed interval_, denoted by brackets, includes its endpoints. For example, [0,&nbsp;1]&nbsp;is the interval where `0 <= x <= 1`.
 
-- An _open interval_, denoted by parentheses, excludes its endpoints. For example, (0,&nbsp;1)&nbsp;is the interval where `0 < x < 1`.
+  - An _open interval_, denoted by parentheses, excludes its endpoints. For example, (0,&nbsp;1)&nbsp;is the interval where `0 < x < 1`.
 
-- A _half-open interval_ includes only one of its endpoints. For example, (0,&nbsp;1]&nbsp;is the _left-open_ interval where `0 < x <= 1`, while [0,&nbsp;1)&nbsp;is the _right-open_ interval where `0 <= x < 1`.
+  - A _half-open interval_ includes only one of its endpoints. For example, (0,&nbsp;1]&nbsp;is the _left-open_ interval where `0 < x <= 1`, while [0,&nbsp;1)&nbsp;is the _right-open_ interval where `0 <= x < 1`.
index aa5ce93747026cf57c4226976262e360b78bdb51..2eeee751f1a2ea40e5db10e4fed4ed20a10522b7 100644 (file)
@@ -3,6 +3,4 @@ title: logical path
 reference: /methods/page/path/#examples
 ---
 
-{{< new-in 0.123.0 />}}
-
-A _logical path_ is a page or page resource identifier derived from the file path, excluding its extension and language identifier. This value is neither a file path nor a URL. Starting with a file path relative to the `content` directory, Hugo determines the logical path by stripping the file extension and language identifier, converting to lower case, then replacing spaces with hyphens.
+A _logical path_ is a page or page resource identifier derived from the file path, excluding its extension and language identifier. This value is neither a file path nor a URL. Starting with a file path relative to the `content` directory, Hugo determines the logical path by stripping the file extension and language identifier, converting to lower case, then replacing spaces with hyphens. Path segments are separated with a slash (`/`).
index ccbcefd6682978b4e7c2f33fe3e394e11e09f863..f5c57c728ec5e8f524c5cd734ced69bd60d19e8e 100644 (file)
@@ -3,4 +3,4 @@ title: Markdown attribute
 reference: /content-management/markdown-attributes/
 ---
 
-A _Markdown attribute_ is a key-value pair attached to a Markdown element.  These attributes are commonly used to add HTML attributes, like `class` and `id`, to the element when it's rendered into HTML.  They provide a way to extend the basic Markdown syntax and add more semantic meaning or styling hooks to your content.
+A _Markdown attribute_ is a key-value pair attached to a Markdown element. These attributes are commonly used to add HTML attributes, like `class` and `id`, to the element when it's rendered into HTML. They provide a way to extend the basic Markdown syntax and add more semantic meaning or styling hooks to your content.
diff --git a/content/en/quick-reference/glossary/media-type.md b/content/en/quick-reference/glossary/media-type.md
new file mode 100644 (file)
index 0000000..2994360
--- /dev/null
@@ -0,0 +1,6 @@
+---
+title: media type
+reference: /configuration/media-types/
+---
+
+A _media type_ (formerly known as a MIME type) is a two-part identifier for file formats and transmitted content. For example, the media type for JSON data is `application/json`.
index b7618bbf91cb0989cfe0fcf10df666ee57acf36a..634cd4b979170d7c4576f1bc667ceb9498e1e543 100644 (file)
@@ -2,4 +2,4 @@
 title: method
 ---
 
-Used within a [_template action_](g) and associated with an [_object_](g), a _method_ takes zero or more [_arguments_](g) and either returns a value or performs an action. For example, `.IsHome` is a method on the `.Page` object which returns `true` if the current page is the home page. See also [_function_](g).
+Used within a [_template action_](g) and associated with an [_object_](g), a _method_ takes zero or more [_arguments_](g) and either returns a value or performs an action. For example, `IsHome` is a method on a `Page` object which returns `true` if the current page is the home page. See also [_function_](g).
index 7e0e2763d91e681a242f45b52b29b09dd5fb14f3..9b6c1d92cd6335172f75cff879b1e61d0e1d9137 100644 (file)
@@ -2,7 +2,4 @@
 title: ordered taxonomy
 ---
 
-Created by invoking the [`Alphabetical`] or [`ByCount`] method on a [`Taxonomy`](g) object, which is a [_map_](g), an _ordered taxonomy_ is a [_slice_](g), where each element is an object that contains the [_term_](g) and a slice of its [weighted pages](g).
-
-[`Alphabetical`]: /methods/taxonomy/alphabetical/
-[`ByCount`]: /methods/taxonomy/bycount/
+Created by invoking the [`Alphabetical`](/methods/taxonomy/alphabetical/) or [`ByCount`](/methods/taxonomy/bycount/) method on a [`Taxonomy`](g) object, which is a [_map_](g), an _ordered taxonomy_ is a [_slice_](g), where each element is an object that contains the [_term_](g) and a slice of its [_weighted pages_](g).
index 9004dc223021e5f58ca9da2b1ba1a9b91a81971c..df042d06b5945e4374edea7edd3df9642abb224a 100644 (file)
@@ -1,6 +1,6 @@
 ---
 title: output format
-reference: /templates/output-formats/
+reference: /configuration/output-formats/
 ---
 
-An _output format_ is a collection of settings that defines how Hugo renders a file when building a site. For example, `html`, `rss`, and `json` are built-in output formats. You can create multiple output formats and control their generation based on [page kind](g), or by enabling one or more output formats for specific pages.
+An _output format_ is a collection of settings that defines how Hugo renders a file when building a site. For example, `html`, `json`, and `rss` are built-in output formats. You can create multiple output formats and control their generation based on [page kind](g), or by enabling one or more output formats for specific pages.
index 2bb3fa3b7de43c28d64a83dc9fd6a8e67121d71b..6dab5257886bf748713dd9b0fae6e917907b19f1 100644 (file)
@@ -4,4 +4,4 @@ title: pipeline
 
 Within a [_template action_](g), a _pipeline_ is a possibly chained sequence of values, [_function_](g) calls, or [_method_](g) calls. Functions and methods in the pipeline may take multiple [_arguments_](g).
 
-A pipeline may be *chained* by separating a sequence of commands with pipeline characters (`|`). In a chained pipeline, the result of each command is passed as the last argument to the following command. The output of the final command in the pipeline is the value of the pipeline.
+  A pipeline may be chained by separating a sequence of commands with pipeline characters (`|`). In a chained pipeline, the result of each command is passed as the last argument to the following command. The output of the final command in the pipeline is the value of the pipeline.
diff --git a/content/en/quick-reference/glossary/primary-output-format.md b/content/en/quick-reference/glossary/primary-output-format.md
new file mode 100644 (file)
index 0000000..c40c017
--- /dev/null
@@ -0,0 +1,10 @@
+---
+title: primary output format
+details: /configuration/outputs/
+---
+
+A _primary output format_ defines the default URL returned by the [`Permalink`] and [`RelPermalink`] methods for a given [page kind](g). It is specified as the first entry within the [outputs configuration] for that page kind.
+
+[`Permalink`]: /methods/page/permalink/
+[`RelPermalink`]: /methods/page/relpermalink/
+[outputs configuration]: /configuration/outputs/
diff --git a/content/en/quick-reference/glossary/regular-expression.md b/content/en/quick-reference/glossary/regular-expression.md
new file mode 100644 (file)
index 0000000..222f289
--- /dev/null
@@ -0,0 +1,8 @@
+---
+title: regular expression
+reference: 
+---
+
+A _regular expression_, also known as a _regex_, is a sequence of characters that defines a search pattern. Use the [RE2 syntax] when defining regular expressions in your templates or site configuration.
+
+  [RE2 syntax]: https://github.com/google/re2/wiki/syntax
index 64d9c27abd8e76663f23e96a9011adce499d4109..9a2412fb9b1ff313a7f5c2c3fb12cfeafe21921a 100644 (file)
@@ -2,7 +2,4 @@
 title: resource type
 ---
 
-A _resource type_ is the main type of a resource's [media type]. Content files such as Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode have resource type `page`. Other resource types include `image`, `video`, etc. Retrieve the resource type using the [`ResourceType`] method on a `Resource` object.
-
-[media type]: /methods/resource/mediatype/
-[`ResourceType`]: /methods/resource/resourcetype/
+A _resource type_ is the main type of a resource's [media type](/methods/resource/mediatype/). Content files such as Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode have resource type `page`. Other resource types include `image`, `text`, `video`, and others. Retrieve the resource type using the [`ResourceType`](/methods/resource/resourcetype/) method on a `Resource` object.
index bd3a9d10d8b9c94ca9c8e514bd9da1aebc7e3eeb..0864bc43d65b2ae7862a398b0f7aee702b7f1d42 100644 (file)
@@ -4,4 +4,4 @@ title: resource
 
 A _resource_ is any file consumed by the build process to augment or generate content, structure, behavior, or presentation. For example: images, videos, content snippets, CSS, Sass, JavaScript, and data.
 
-Hugo supports three types of resources: [_global resources_](g), [_page resources_](g), and [_remote resources_](g).
+  Hugo supports three types of resources: [_global resources_](g), [_page resources_](g), and [_remote resources_](g).
index f94d4fd5b54a329cd379c7924a1ef97fcdc17ccf..4792ce12ea2eed87438fdd81baf151e3196e9ffe 100644 (file)
@@ -2,7 +2,4 @@
 title: scratch pad
 ---
 
-Conceptually, a _scratch pad_ is a [_map_](g) with [_methods_](g) to set, get, update, and delete values. Attach the data structure to a `Page` or `Site` object using the [`Store`] method, or create a locally scoped scratch pad using the [`newScratch`] function.
-
-[`Store`]: /methods/page/store/
-[`newScratch`]: /functions/collections/newscratch/
+Conceptually, a _scratch pad_ is a [_map_](g) with [_methods_](g) to set, get, update, and delete values. Attach the data structure to a `Page` or `Site` object using the [`Store`](/methods/page/store/) method, or create a locally scoped scratch pad using the [`newScratch`](/functions/collections/newscratch/) function.
index bfc2f6c51de1a7e20f0070a08c6f933ce68573a7..a6503ea63cabfd16aa4c17d71cba1bd50dab3ffa 100644 (file)
@@ -3,4 +3,4 @@ title: shortcode
 reference: /content-management/shortcodes
 ---
 
-A _shortcode_ is a [_template_](g) invoked within markup, accepting any number of [_arguments_](g). They can be used with any [content format](g) to insert elements such as videos, images, and social media embeds into your content.
+A _shortcode_ is a [_template_](g) invoked within markup, accepting any number of [_arguments_](g). They can be used with any [_content format_](g) to insert elements such as videos, images, and social media embeds into your content.
index d9a6c635cc060b3183c8533f209d1727528e868b..e40c228fe89626659b4a574c00977411d1d2f6d7 100644 (file)
@@ -3,4 +3,4 @@ title: template action
 reference: https://pkg.go.dev/text/template#hdr-Actions
 ---
 
-A data evaluation or control structure within a [_template_](g), delimited by "{{"&nbsp;and&nbsp;"}}".
+A data evaluation or control structure within a [_template_](g), delimited by `{{`&nbsp;and&nbsp;`}}`.
index 5b4797f3ae5d78502de3983a93b86fcd1dead12f..524713c1f4741507c5ed7390959af15a6ed7b3c6 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Methods
 description: A quick reference guide to Hugo's methods, grouped by object.
-categories: [quick reference]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: quick-reference
-    weight: 50
-weight: 50
-toc: true
 ---
 
 {{% quick-reference section="methods" %}}
index 836af3ea2487106f79476e9f99a2a6b48ba44817..4c2387bbef72fe05094f8ec7834011b39f3e8934 100644 (file)
@@ -1,56 +1,38 @@
 ---
 title: Page collections
 description: A quick reference guide to Hugo's page collections.
-categories: [quick reference]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: quick-reference
-    weight: 60
-weight: 60
-toc: true
 ---
 
 ## Page
 
-assets/
 Use these `Page` methods when rendering lists on [section pages](g), [taxonomy pages](g), [term pages](g), and the home page.
 
-{{< list-pages-in-section path=/methods/page filter=methods_page_page_collections filterType=include omitElementIDs=true titlePrefix=PAGE. >}}
+{{% list-pages-in-section path=/methods/page filter=methods_page_page_collections filterType=include titlePrefix=PAGE. %}}
 
 ## Site
 
 Use these `Site` methods when rendering lists on any page.
 
-{{< list-pages-in-section path=/methods/site filter=methods_site_page_collections filterType=include omitElementIDs=true titlePrefix=SITE. >}}
+{{% list-pages-in-section path=/methods/site filter=methods_site_page_collections filterType=include titlePrefix=SITE. %}}
 
 ## Filter
 
 Use the [`where`] function to filter page collections.
 
-[`where`]: /functions/collections/where/
-
 ## Sort
 
-By default, Hugo sorts page collections by:
-
-1. [Weight]
-1. [Date] in descending order
-1. [LinkTitle] falling back to [Title]
-1. [Filename] if the page is backed by a file
+{{% glossary-term "default sort order" %}}
 
-[Date]: /methods/page/date/
-[Weight]: /methods/page/weight/
-[LinkTitle]: /methods/page/linktitle/
-[Title]: /methods/page/title/
-[Filename]: /methods/page/file/#filename
+Use these methods to sort page collections by different criteria.
 
-Use these methods to sort page collections.
-
-{{< list-pages-in-section path=/methods/pages filter=methods_pages_sort filterType=include titlePrefix=. omitElementIDs=true titlePrefix=PAGES. >}}
+{{% list-pages-in-section path=/methods/pages filter=methods_pages_sort filterType=include titlePrefix=. titlePrefix=PAGES. %}}
 
 ## Group
 
 Use these methods to group page collections.
 
-{{< list-pages-in-section path=/methods/pages filter=methods_pages_group filterType=include titlePrefix=. omitElementIDs=true titlePrefix=PAGES. >}}
+{{% list-pages-in-section path=/methods/pages filter=methods_pages_group filterType=include titlePrefix=. titlePrefix=PAGES. %}}
+
+[`where`]: /functions/collections/where/
diff --git a/content/en/quick-reference/syntax-highlighting-styles.md b/content/en/quick-reference/syntax-highlighting-styles.md
new file mode 100644 (file)
index 0000000..14b313c
--- /dev/null
@@ -0,0 +1,35 @@
+---
+title: Syntax highlighting styles
+description: Highlight code examples using one of these styles.
+categories: []
+keywords: [highlight]
+---
+
+## Overview
+
+Hugo provides several methods to add syntax highlighting to code examples:
+
+- Use the [`transform.Highlight`] function within your templates
+- Use the [`highlight`] shortcode with any [content format](g)
+- Use fenced code blocks with the Markdown content format
+
+Regardless of method, use any of the syntax highlighting styles below.
+
+Set the default syntax highlighting style in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[markup.highlight]
+style = 'monokai'
+{{< /code-toggle >}}
+
+See [configure Markup](/configuration/markup/#highlight).
+
+[`transform.Highlight`]: /functions/transform/highlight/
+[`highlight`]: /shortcodes/highlight/
+[fenced code blocks]: /content-management/syntax-highlighting/#fenced-code-blocks
+
+## Styles
+
+This gallery demonstrates the application of each syntax highlighting style with code examples written in different programming languages.
+
+{{% syntax-highlighting-styles %}}
diff --git a/content/en/render-hooks/_common/_index.md b/content/en/render-hooks/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/render-hooks/_common/pageinner.md b/content/en/render-hooks/_common/pageinner.md
deleted file mode 100644 (file)
index 6f26228..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-## PageInner details
-
-{{< new-in 0.125.0 />}}
-
-The primary use case for `PageInner` is to resolve links and [page resources](g) relative to an included `Page`. For example, create an "include" shortcode to compose a page from multiple content files, while preserving a global context for footnotes and the table of contents:
-
-{{< code file=layouts/shortcodes/include.html >}}
-{{ with .Get 0 }}
-  {{ with $.Page.GetPage . }}
-    {{- .RenderShortcodes }}
-  {{ else }}
-    {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
-  {{ end }}
-{{ else }}
-  {{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }}
-{{ end }}
-{{< /code >}}
-
-Then call the shortcode in your Markdown:
-
-{{< code file=content/posts/p1.md >}}
-{{%/* include "/posts/p2" */%}}
-{{< /code >}}
-
-Any render hook triggered while rendering `/posts/p2` will get:
-
-- `/posts/p1` when calling `Page`
-- `/posts/p2` when calling `PageInner`
-
-`PageInner` falls back to the value of `Page` if not relevant, and always returns a value.
-
-{{% note %}}
-The `PageInner` method is only relevant for shortcodes that invoke the [`RenderShortcodes`] method, and you must call the shortcode using the `{{%/*..*/%}}` notation.
-
-[`RenderShortcodes`]: /methods/page/rendershortcodes/
-{{% /note %}}
-
-As a practical example, Hugo's embedded link and image render hooks use the `PageInner` method to resolve markdown link and image destinations. See the source code for each:
-
-- [Embedded link render hook]({{% eturl render-link %}})
-- [Embedded image render hook]({{% eturl render-image %}})
-
-[`RenderShortcodes`]: /methods/page/rendershortcodes/
index 668808f44b9a5e1fd143b2d1b2b08d31c9f7e311..a5e6203ff2d4078a9bfd03b43598d8d5a9655b67 100644 (file)
@@ -1,17 +1,8 @@
 ---
 title: Render hooks
-
 description: Create render hooks to override the rendering of Markdown to HTML.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: render-hooks-in-this-section
-    parent: render-hooks
-    weight: 10
 weight: 10
-showSectionMenu: false
 aliases: [/templates/render-hooks/]
 ---
-
-Create render hooks to override the rendering of Markdown to HTML.
index bdeb06af9f5277c12c962c9cf17f908d1cd2f63a..7ba282a0a927af336f5e4a616bd0886779c95c21 100755 (executable)
@@ -2,14 +2,8 @@
 title: Blockquote render hooks
 linkTitle: Blockquotes
 description: Create a blockquote render hook to override the rendering of Markdown blockquotes to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 30
-weight: 30
-toc: true
 ---
 
 {{< new-in 0.132.0 />}}
@@ -18,73 +12,56 @@ toc: true
 
 Blockquote render hook templates receive the following [context](g):
 
-###### AlertType
+AlertType
+: (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert type converted to lowercase. See the [alerts](#alerts) section below.
 
-(`string`) Applicable when [`Type`](#type) is `alert`, this is the alert type converted to lowercase. See the [alerts](#alerts) section below.
+AlertTitle
+: {{< new-in 0.134.0 />}}
+: (`template.HTML`) Applicable when [`Type`](#type) is `alert`, this is the alert title. See the [alerts](#alerts) section below.
 
-###### AlertTitle
+AlertSign
+: {{< new-in 0.134.0 />}}
+: (`string`) Applicable when [`Type`](#type) is `alert`, this is the alert sign. Typically used to indicate whether an alert is graphically foldable, this is one of&nbsp;`+`,&nbsp;`-`,&nbsp;or an empty string. See the [alerts](#alerts) section below.
 
-{{< new-in 0.134.0 />}}
+Attributes
+: (`map`) The [Markdown attributes], available if you configure your site as follows:
 
-(`template.HTML`) Applicable when [`Type`](#type) is `alert`, this is the alert title. See the [alerts](#alerts) section below.
+  {{< code-toggle file=hugo >}}
+  [markup.goldmark.parser.attribute]
+  block = true
+  {{< /code-toggle >}}
 
-###### AlertSign
+Ordinal
+: (`int`) The zero-based ordinal of the blockquote on the page.
 
-{{< new-in 0.134.0 />}}
+Page
+: (`page`) A reference to the current page.
 
-(`string`) Applicable when [`Type`](#type) is `alert`, this is the alert sign. Typically used to indicate whether an alert is graphically foldable, this is one of&nbsp;`+`,&nbsp;`-`,&nbsp;or an empty string. See the [alerts](#alerts) section below.
+PageInner
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-###### Attributes
+Position
+: (`string`) The position of the blockquote within the page content.
 
-(`map`) The [Markdown attributes], available if you configure your site as follows:
+Text
+: (`template.HTML`) The blockquote text, excluding the first line if [`Type`](#type) is `alert`. See the [alerts](#alerts) section below.
 
-[Markdown attributes]: /content-management/markdown-attributes/
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.parser.attribute]
-block = true
-{{< /code-toggle >}}
-
-###### Ordinal
-
-(`int`) The zero-based ordinal of the blockquote on the page.
-
-###### Page
-
-(`page`) A reference to the current page.
-
-###### PageInner
-
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
-
-[`RenderShortcodes`]: /methods/page/rendershortcodes
-
-###### Position
-
-(`string`) The position of the blockquote within the page content.
-
-###### Text
-(`template.HTML`) The blockquote text, excluding the first line if [`Type`](#type) is `alert`. See the [alerts](#alerts) section below.
-
-###### Type
-
-(`bool`) The blockquote type. Returns `alert` if the blockquote has an alert designator, else `regular`. See the [alerts](#alerts) section below.
+Type
+: (`string`) The blockquote type. Returns `alert` if the blockquote has an alert designator, else `regular`. See the [alerts](#alerts) section below.
 
 ## Examples
 
 In its default configuration, Hugo renders Markdown blockquotes according to the [CommonMark specification]. To create a render hook that does the same thing:
 
-[CommonMark specification]: https://spec.commonmark.org/current/
-
-{{< code file=layouts/_default/_markup/render-blockquote.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-blockquote.html" copy=true}
 <blockquote>
   {{ .Text }}
 </blockquote>
-{{< /code >}}
+```
 
 To render a blockquote as an HTML `figure` element with an optional citation and caption:
 
-{{< code file=layouts/_default/_markup/render-blockquote.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-blockquote.html" copy=true}
 <figure>
   <blockquote {{ with .Attributes.cite }}cite="{{ . }}"{{ end }}>
     {{ .Text }}
@@ -95,7 +72,7 @@ To render a blockquote as an HTML `figure` element with an optional citation and
     </figcaption>
   {{ end }}
 </figure>
-{{< /code >}}
+```
 
 Then in your markdown:
 
@@ -112,7 +89,7 @@ Also known as _callouts_ or _admonitions_, alerts are blockquotes used to emphas
 
 With the basic Markdown syntax, the first line of each alert is an alert designator consisting of an exclamation point followed by the alert type, wrapped within brackets. For example:
 
-{{< code file=content/example.md lang=text >}}
+```text {file="content/example.md"}
 > [!NOTE]
 > Useful information that users should know, even when skimming content.
 
@@ -127,34 +104,29 @@ With the basic Markdown syntax, the first line of each alert is an alert designa
 
 > [!CAUTION]
 > Advises about risks or negative outcomes of certain actions.
-{{< /code >}}
+```
 
 The basic syntax is compatible with [GitHub], [Obsidian], and [Typora].
 
-[GitHub]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
-[Obsidian]: https://help.obsidian.md/Editing+and+formatting/Callouts
-[Typora]: https://support.typora.io/Markdown-Reference/#callouts--github-style-alerts
-
 ### Extended syntax
 
 With the extended Markdown syntax, you may optionally include an alert sign and/or an alert title. The alert sign is one of&nbsp;`+`&nbsp;or&nbsp;`-`, typically used to indicate whether an alert is graphically foldable. For example:
 
-{{< code file=content/example.md lang=text >}}
+```text {file="content/example.md"}
 > [!WARNING]+ Radiation hazard
 > Do not approach or handle without protective gear.
-{{< /code >}}
+```
 
 The extended syntax is compatible with [Obsidian].
 
-{{% note %}}
-The extended syntax is not compatible with GitHub or Typora. If you include an alert sign or an alert title, these applications render the Markdown as a blockquote.
-{{% /note %}}
+> [!note]
+> The extended syntax is not compatible with GitHub or Typora. If you include an alert sign or an alert title, these applications render the Markdown as a blockquote.
 
 ### Example
 
 This blockquote render hook renders a multilingual alert if an alert designator is present, otherwise it renders a blockquote according to the CommonMark specification.
 
-{{< code file=layouts/_default/_markup/render-blockquote.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-blockquote.html" copy=true}
 {{ $emojis := dict
   "caution" ":exclamation:"
   "important" ":information_source:"
@@ -180,7 +152,7 @@ This blockquote render hook renders a multilingual alert if an alert designator
     {{ .Text }}
   </blockquote>
 {{ end }}
-{{< /code >}}
+```
 
 To override the label, create these entries in your i18n files:
 
@@ -202,4 +174,11 @@ layouts/
         └── render-blockquote-regular.html
 ```
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes
+[CommonMark specification]: https://spec.commonmark.org/current/
+[GitHub]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
+[Markdown attributes]: /content-management/markdown-attributes/
+[Obsidian]: https://help.obsidian.md/Editing+and+formatting/Callouts
+[Typora]: https://support.typora.io/Markdown-Reference/#callouts--github-style-alerts
index 7999dbeb82fec5e5133ca184c8b4deba6dcd8271..d1a01e9b08581a948644eded30ca566595c0e061 100755 (executable)
@@ -2,27 +2,21 @@
 title: Code block render hooks
 linkTitle: Code blocks
 description: Create a code block render hook to override the rendering of Markdown code blocks to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 40
-weight: 40
-toc: true
 ---
 
 ## Markdown
 
 This Markdown example contains a fenced code block:
 
-{{< code file=content/example.md lang=text >}}
+````text {file="content/example.md"}
 ```bash {class="my-class" id="my-codeblock" lineNos=inline tabWidth=2}
 declare a=1
 echo "$a"
 exit
 ```
-{{< /code >}}
+````
 
 A fenced code block consists of:
 
@@ -31,9 +25,6 @@ A fenced code block consists of:
 - A code sample
 - A trailing code fence
 
-[code fence]: https://spec.commonmark.org/0.31.2/#code-fence
-[info string]: https://spec.commonmark.org/0.31.2/#info-string
-
 In the previous example, the info string contains:
 
 - The language of the code sample (the first word)
@@ -45,63 +36,46 @@ In the example above, the _generic attributes_ are `class` and `id`. In the abse
 
 In the example above, the _highlighting options_ are `lineNos` and `tabWidth`. Hugo uses the [Chroma] syntax highlighter to render the code sample. You can control the appearance of the rendered code by specifying one or more [highlighting options].
 
-[Chroma]: https://github.com/alecthomas/chroma/
-[highlighting options]: /functions/transform/highlight/#options
-
-{{% note %}}
-Although `style` is a global HTML attribute, when used in an info string it is a highlighting option.
-{{% /note %}}
+> [!note]
+> Although `style` is a global HTML attribute, when used in an info string it is a highlighting option.
 
 ## Context
 
 Code block render hook templates receive the following [context](g):
 
-###### Attributes
-
-(`map`) The generic attributes from the info string.
-
-###### Inner
-
-(`string`) The content between the leading and trailing code fences, excluding the info string.
+Attributes
+: (`map`) The generic attributes from the info string.
 
-###### Options
+Inner
+: (`string`) The content between the leading and trailing code fences, excluding the info string.
 
-(`map`) The highlighting options from the info string.
+Options
+: (`map`) The highlighting options from the info string.
 
-###### Ordinal
-
-(`int`) The zero-based ordinal of the code block on the page.
-
-###### Page
-
-(`page`) A reference to the current page.
-
-###### PageInner
-
-{{< new-in 0.125.0 />}}
-
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
-
-[`RenderShortcodes`]: /methods/page/rendershortcodes
+Ordinal
+: (`int`) The zero-based ordinal of the code block on the page.
 
-###### Position
+Page
+: (`page`) A reference to the current page.
 
-(`text.Position`) The position of the code block within the page content.
+PageInner
+: {{< new-in 0.125.0 />}}
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-###### Type
+Position
+: (`text.Position`) The position of the code block within the page content.
 
-(`string`) The first word of the info string, typically the code language.
+Type
+: (`string`) The first word of the info string, typically the code language.
 
 ## Examples
 
 In its default configuration, Hugo renders fenced code blocks by passing the code sample through the Chroma syntax highlighter and wrapping the result. To create a render hook that does the same thing:
 
-[CommonMark specification]: https://spec.commonmark.org/current/
-
-{{< code file=layouts/_default/_markup/render-codeblock.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-codeblock.html" copy=true}
 {{ $result := transform.HighlightCodeBlock . }}
 {{ $result.Wrapped }}
-{{< /code >}}
+```
 
 Although you can use one template with conditional logic to control the behavior on a per-language basis, you can also create language-specific templates.
 
@@ -116,35 +90,38 @@ layouts/
 
 For example, to create a code block render hook to render [Mermaid] diagrams:
 
-[Mermaid]: https://mermaid.js.org/
-
-{{< code file=layouts/_default/_markup/render-codeblock-mermaid.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-codeblock-mermaid.html" copy=true}
 <pre class="mermaid">
-  {{- .Inner | htmlEscape | safeHTML }}
+  {{ .Inner | htmlEscape | safeHTML }}
 </pre>
 {{ .Page.Store.Set "hasMermaid" true }}
-{{< /code >}}
+```
 
-Then include this snippet at the bottom of the your base template:
+Then include this snippet at the _bottom_ of your base template, before the closing `body` tag:
 
-{{< code file=layouts/_default/baseof.html copy=true >}}
+```go-html-template {file="layouts/_default/baseof.html" copy=true}
 {{ if .Store.Get "hasMermaid" }}
   <script type="module">
     import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
     mermaid.initialize({ startOnLoad: true });
   </script>
 {{ end }}
-{{< /code >}}
+```
 
 See the [diagrams] page for details.
 
-[diagrams]: /content-management/diagrams/#mermaid-diagrams
-
 ## Embedded
 
 Hugo includes an [embedded code block render hook] to render [GoAT diagrams].
 
+{{% include "/_common/render-hooks/pageinner.md" %}}
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes
+[Chroma]: https://github.com/alecthomas/chroma/
+[code fence]: https://spec.commonmark.org/0.31.2/#code-fence
+[diagrams]: /content-management/diagrams/#mermaid-diagrams
 [embedded code block render hook]: {{% eturl render-codeblock-goat %}}
 [GoAT diagrams]: /content-management/diagrams/#goat-diagrams-ascii
-
-{{% include "/render-hooks/_common/pageinner.md" %}}
+[highlighting options]: /functions/transform/highlight/#options
+[info string]: https://spec.commonmark.org/0.31.2/#info-string
+[Mermaid]: https://mermaid.js.org/
index 7c9d6b6fe58c674071c5e5caa135854225ab724b..89868d478f7fb7c11de5d3a7227620c81eba44b2 100755 (executable)
@@ -2,78 +2,63 @@
 title: Heading render hooks
 linkTitle: Headings
 description: Create a heading render hook to override the rendering of Markdown headings to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 50
-weight: 50
-toc: true
 ---
 
 ## Context
 
 Heading render hook templates receive the following [context](g):
 
-###### Anchor
+Anchor
+: (`string`) The `id` attribute of the heading element.
 
-(`string`) The `id` attribute of the heading element.
+Attributes
+: (`map`) The [Markdown attributes], available if you configure your site as follows:
 
-###### Attributes
+  {{< code-toggle file=hugo >}}
+  [markup.goldmark.parser.attribute]
+  title = true
+  {{< /code-toggle >}}
 
-(`map`) The [Markdown attributes], available if you configure your site as follows:
+Level
+: (`int`) The heading level, 1 through 6.
 
-[Markdown attributes]: /content-management/markdown-attributes/
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.parser.attribute]
-title = true
-{{< /code-toggle >}}
-
-###### Level
-
-(`int`) The heading level, 1 through 6.
-
-###### Page
-
-(`page`) A reference to the current page.
+Page
+: (`page`) A reference to the current page.
 
-###### PageInner
+PageInner
+: {{< new-in 0.125.0 />}}
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-{{< new-in 0.125.0 />}}
+PlainText
+: (`string`) The heading text as plain text.
 
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
+Text
+: (`template.HTML`) The heading text.
 
+[Markdown attributes]: /content-management/markdown-attributes/
 [`RenderShortcodes`]: /methods/page/rendershortcodes
 
-###### PlainText
-
-(`string`) The heading text as plain text.
-
-###### Text
-
-(`template.HTML`) The heading text.
-
 ## Examples
 
 In its default configuration, Hugo renders Markdown headings according to the [CommonMark specification] with the addition of automatic `id` attributes. To create a render hook that does the same thing:
 
 [CommonMark specification]: https://spec.commonmark.org/current/
 
-{{< code file=layouts/_default/_markup/render-heading.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-heading.html" copy=true}
 <h{{ .Level }} id="{{ .Anchor }}" {{- with .Attributes.class }} class="{{ . }}" {{- end }}>
   {{- .Text -}}
 </h{{ .Level }}>
-{{< /code >}}
+```
 
 To add an anchor link to the right of each heading:
 
-{{< code file=layouts/_default/_markup/render-heading.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-heading.html" copy=true}
 <h{{ .Level }} id="{{ .Anchor }}" {{- with .Attributes.class }} class="{{ . }}" {{- end }}>
   {{ .Text }}
   <a href="#{{ .Anchor }}">#</a>
 </h{{ .Level }}>
-{{< /code >}}
+```
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
index 63f294081884ceb11881596d0e44b80a2d9ded47..a4faac67219882cba400cc73d583d1b785cee356 100755 (executable)
@@ -2,14 +2,8 @@
 title: Image render hooks
 linkTitle: Images
 description: Create an image render to hook override the rendering of Markdown images to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 60
-weight: 60
-toc: true
 ---
 
 ## Markdown
@@ -28,76 +22,59 @@ These components are passed into the render hook [context](g) as shown below.
 
 Image render hook templates receive the following context:
 
-###### Attributes
+Attributes
+: (`map`) The [Markdown attributes], available if you configure your site as follows:
 
-(`map`) The [Markdown attributes], available if you configure your site as follows:
+  {{< code-toggle file=hugo >}}
+  [markup.goldmark.parser]
+  wrapStandAloneImageWithinParagraph = false
+  [markup.goldmark.parser.attribute]
+  block = true
+  {{< /code-toggle >}}
 
-[Markdown attributes]: /content-management/markdown-attributes/
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.parser]
-wrapStandAloneImageWithinParagraph = false
-[markup.goldmark.parser.attribute]
-block = true
-{{< /code-toggle >}}
-
-###### Destination
-
-(`string`) The image destination.
-
-###### IsBlock
-
-(`bool`) Returns true if a standalone image is not wrapped within a paragraph element.
-
-###### Ordinal
-
-(`int`) The zero-based ordinal of the image on the page.
-
-###### Page
-
-(`page`) A reference to the current page.
-
-###### PageInner
+Destination
+: (`string`) The image destination.
 
-{{< new-in 0.125.0 />}}
+IsBlock
+: (`bool`) Reports whether a standalone image is not wrapped within a paragraph element.
 
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
+Ordinal
+: (`int`) The zero-based ordinal of the image on the page.
 
-[`RenderShortcodes`]: /methods/page/rendershortcodes
-
-###### PlainText
+Page
+: (`page`) A reference to the current page.
 
-(`string`) The image description as plain text.
+PageInner
+: {{< new-in 0.125.0 />}}
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-###### Text
+PlainText
+: (`string`) The image description as plain text.
 
-(`template.HTML`) The image description.
+Text
+: (`template.HTML`) The image description.
 
-###### Title
-
-(`string`) The image title.
+Title
+: (`string`) The image title.
 
 ## Examples
 
-{{% note %}}
-With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text.
-{{% /note %}}
+> [!note]
+> With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text.
 
 In its default configuration, Hugo renders Markdown images according to the [CommonMark specification]. To create a render hook that does the same thing:
 
-[CommonMark specification]: https://spec.commonmark.org/current/
-
-{{< code file=layouts/_default/_markup/render-image.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-image.html" copy=true}
 <img src="{{ .Destination | safeURL }}"
   {{- with .PlainText }} alt="{{ . }}"{{ end -}}
   {{- with .Title }} title="{{ . }}"{{ end -}}
 >
 {{- /* chomp trailing newline */ -}}
-{{< /code >}}
+```
 
 To render standalone images within `figure` elements:
 
-{{< code file=layouts/_default/_markup/render-image.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-image.html" copy=true}
 {{- if .IsBlock -}}
   <figure>
     <img src="{{ .Destination | safeURL }}"
@@ -111,7 +88,7 @@ To render standalone images within `figure` elements:
     {{- with .Title }} title="{{ . }}"{{ end -}}
   >
 {{- end -}}
-{{< /code >}}
+```
 
 Note that the above requires the following site configuration:
 
@@ -126,8 +103,6 @@ wrapStandAloneImageWithinParagraph = false
 
 Hugo includes an [embedded image render hook] to resolve Markdown image destinations. Disabled by default, you can enable it in your site configuration:
 
-[embedded image render hook]: {{% eturl render-image %}}
-
 {{< code-toggle file=hugo >}}
 [markup.goldmark.renderHooks.image]
 enableDefault = true
@@ -135,11 +110,8 @@ enableDefault = true
 
 A custom render hook, even when provided by a theme or module, will override the embedded render hook regardless of the configuration setting above.
 
-{{% note %}}
-The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
-
-[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
-{{% /note %}}
+> [!note]
+> The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
 
 The embedded image render hook resolves internal Markdown destinations by looking for a matching [page resource](g), falling back to a matching [global resource](g). Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination.
 
@@ -157,4 +129,10 @@ target = 'assets'
 
 Note that the embedded image render hook does not perform image processing. Its sole purpose is to resolve Markdown image destinations.
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes
+[CommonMark specification]: https://spec.commonmark.org/current/
+[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
+[embedded image render hook]: {{% eturl render-image %}}
+[Markdown attributes]: /content-management/markdown-attributes/
index d086c91bba8d6f8483d18d8419bd4ff2abf63488..045d25c3d89add24334b3915b2d2b26a5362e84a 100755 (executable)
@@ -1,14 +1,9 @@
 ---
 title: Introduction
 description: An introduction to Hugo's render hooks.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    identifier: render-hooks-introduction
-    parent: render-hooks
-    weight: 20
-weight: 20
+weight: 10
 ---
 
 When rendering Markdown to HTML, render hooks override the conversion. Each render hook is a template, with one template for each supported element type:
@@ -21,13 +16,10 @@ When rendering Markdown to HTML, render hooks override the conversion. Each rend
 - [Passthrough elements](/render-hooks/passthrough)
 - [Tables](/render-hooks/tables)
 
-{{% note %}}
-Hugo supports multiple [content formats] including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText.
-
-The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats.
-
-[content formats]: /content-management/formats/
-{{% /note %}}
+> [!note]
+> Hugo supports multiple [content formats] including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText.
+>
+> The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats.
 
 For example, consider this Markdown:
 
@@ -37,7 +29,7 @@ For example, consider this Markdown:
 ![kitten](kitten.jpg)
 ```
 
-Without link or image render hooks, this example above is rendered to:
+Without link or image render hooks, the example above is rendered to:
 
 ```html
 <p><a href="https://gohugo.io">Hugo</a></p>
@@ -85,3 +77,5 @@ layouts/
 ```
 
 The remaining pages in this section describe each type of render hook, including examples and the context received by each template.
+
+[content formats]: /content-management/formats/
index 89044c662dc8314b19d990173037b777db57a8a8..23f725eb76ab3284c51f02ce1a50638365969b3a 100755 (executable)
@@ -2,14 +2,8 @@
 title: Link render hooks
 linkTitle: Links
 description: Create a link render hook to override the rendering of Markdown links to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 70
-weight: 70
-toc: true
 ---
 
 ## Markdown
@@ -28,56 +22,44 @@ These components are passed into the render hook [context](g) as shown below.
 
 Link render hook templates receive the following context:
 
-###### Destination
+Destination
+: (`string`) The link destination.
 
-(`string`) The link destination.
+Page
+: (`page`) A reference to the current page.
 
-###### Page
+PageInner
+: {{< new-in 0.125.0 />}}
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-(`page`) A reference to the current page.
+PlainText
+: (`string`) The link description as plain text.
 
-###### PageInner
+Text
+: (`template.HTML`) The link description.
 
-{{< new-in 0.125.0 />}}
-
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
-
-[`RenderShortcodes`]: /methods/page/rendershortcodes
-
-###### PlainText
-
-(`string`) The link description as plain text.
-
-###### Text
-
-(`template.HTML`) The link description.
-
-###### Title
-
-(`string`) The link title.
+Title
+: (`string`) The link title.
 
 ## Examples
 
-{{% note %}}
-With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text.
-{{% /note %}}
+> [!note]
+> With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text.
 
 In its default configuration, Hugo renders Markdown links according to the [CommonMark specification]. To create a render hook that does the same thing:
 
-[CommonMark specification]: https://spec.commonmark.org/current/
-
-{{< code file=layouts/_default/_markup/render-link.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-link.html" copy=true}
 <a href="{{ .Destination | safeURL }}"
   {{- with .Title }} title="{{ . }}"{{ end -}}
 >
   {{- with .Text }}{{ . }}{{ end -}}
 </a>
 {{- /* chomp trailing newline */ -}}
-{{< /code >}}
+```
 
 To include a `rel` attribute set to `external` for external links:
 
-{{< code file=layouts/_default/_markup/render-link.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-link.html" copy=true}
 {{- $u := urls.Parse .Destination -}}
 <a href="{{ .Destination | safeURL }}"
   {{- with .Title }} title="{{ . }}"{{ end -}}
@@ -86,7 +68,7 @@ To include a `rel` attribute set to `external` for external links:
   {{- with .Text }}{{ . }}{{ end -}}
 </a>
 {{- /* chomp trailing newline */ -}}
-{{< /code >}}
+```
 
 ## Default
 
@@ -94,8 +76,6 @@ To include a `rel` attribute set to `external` for external links:
 
 Hugo includes an [embedded link render hook] to resolve Markdown link destinations. Disabled by default, you can enable it in your site configuration:
 
-[embedded link render hook]: {{% eturl render-link %}}
-
 {{< code-toggle file=hugo >}}
 [markup.goldmark.renderHooks.link]
 enableDefault = true
@@ -103,11 +83,8 @@ enableDefault = true
 
 A custom render hook, even when provided by a theme or module, will override the embedded render hook regardless of the configuration setting above.
 
-{{% note %}}
-The embedded link render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
-
-[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
-{{% /note %}}
+> [!note]
+> The embedded link render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
 
 The embedded link render hook resolves internal Markdown destinations by looking for a matching page, falling back to a matching [page resource](g), then falling back to a matching [global resource](g). Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination.
 
@@ -123,4 +100,9 @@ source = 'static'
 target = 'assets'
 {{< /code-toggle >}}
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes
+[CommonMark specification]: https://spec.commonmark.org/current/
+[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
+[embedded link render hook]: {{% eturl render-link %}}
index 7982250612acff3fc7248458b3c7ef29b868d4d8..356a030af63555969ccdff5b3344468a31d8ce35 100755 (executable)
@@ -1,29 +1,23 @@
 ---
 title: Passthrough render hooks
 linkTitle: Passthrough
-description: Create a passthrough render hook to override the rendering of text snippets captured by the Goldmark passthrough extension.
-categories: [render hooks]
+description: Create a passthrough render hook to override the rendering of text snippets captured by the Goldmark Passthrough extension.
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 80
-weight: 80
-toc: true
 ---
 
 {{< new-in 0.132.0 />}}
 
 ## Overview
 
-Hugo uses [Goldmark] to render Markdown to HTML. Goldmark supports custom extensions to extend its core functionality. The Goldmark [passthrough extension] captures and preserves raw Markdown within delimited snippets of text, including the delimiters themselves. These are known as _passthrough elements_.
+Hugo uses [Goldmark] to render Markdown to HTML. Goldmark supports custom extensions to extend its core functionality. The [Passthrough] extension captures and preserves raw Markdown within delimited snippets of text, including the delimiters themselves. These are known as _passthrough elements_.
 
 [Goldmark]: https://github.com/yuin/goldmark
-[passthrough extension]: /getting-started/configuration-markup/#passthrough
+[Passthrough]: /configuration/markup/#passthrough
 
 Depending on your choice of delimiters, Hugo will classify a passthrough element as either _block_ or _inline_. Consider this contrived example:
 
-{{< code file=content/sample.md >}}
+```text {file="content/example.md"}
 This is a
 
 \[block\]
@@ -31,9 +25,9 @@ This is a
 passthrough element with opening and closing block delimiters.
 
 This is an \(inline\) passthrough element with opening and closing inline delimiters.
-{{< /code >}}
+```
 
-Update your site configuration to enable the passthrough extension and define  opening and closing delimiters for each passthrough element type, either `block` or `inline`. For example:
+Update your site configuration to enable the Passthrough extension and define opening and closing delimiters for each passthrough element type, either `block` or `inline`. For example:
 
 {{< code-toggle file=hugo >}}
 [markup.goldmark.extensions.passthrough]
@@ -45,7 +39,7 @@ inline = [['\(', '\)']]
 
 In the example above there are two sets of `block` delimiters. You may use either one in your Markdown.
 
-The Goldmark passthrough extension is often used in conjunction with the MathJax or KaTeX display engine to render [mathematical expressions] written in the LaTeX markup language.
+The Passthrough extension is often used in conjunction with the MathJax or KaTeX display engine to render [mathematical expressions] written in the LaTeX markup language.
 
 [mathematical expressions]: /content-management/mathematics/
 
@@ -55,72 +49,65 @@ To enable custom rendering of passthrough elements, create a passthrough render
 
 Passthrough render hook templates receive the following [context](g):
 
-###### Attributes
-
-(`map`) The [Markdown attributes], available if you configure your site as follows:
-
-[Markdown attributes]: /content-management/markdown-attributes/
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.parser.attribute]
-block = true
-{{< /code-toggle >}}
+Attributes
+: (`map`) The [Markdown attributes], available if you configure your site as follows:
 
-Hugo populates the `Attributes` map for _block_ passthrough elements. Markdown attributes are not applicable to _inline_ elements.
+  {{< code-toggle file=hugo >}}
+  [markup.goldmark.parser.attribute]
+  block = true
+  {{< /code-toggle >}}
 
-###### Inner
-(`string`) The inner content of the passthrough element, excluding the delimiters.
+  Hugo populates the `Attributes` map for _block_ passthrough elements. Markdown attributes are not applicable to _inline_ elements.
 
-###### Ordinal
+Inner
+: (`string`) The inner content of the passthrough element, excluding the delimiters.
 
-(`int`) The zero-based ordinal of the passthrough element on the page.
+Ordinal
+: (`int`) The zero-based ordinal of the passthrough element on the page.
 
-###### Page
+Page
+: (`page`) A reference to the current page.
 
-(`page`) A reference to the current page.
+PageInner
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-###### PageInner
+Position
+: (`string`) The position of the passthrough element within the page content.
 
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
+Type
+: (`string`) The passthrough element type, either `block` or `inline`.
 
+[Markdown attributes]: /content-management/markdown-attributes/
 [`RenderShortcodes`]: /methods/page/rendershortcodes
 
-###### Position
-
-(`string`) The position of the passthrough element within the page content.
-
-###### Type
-
-(`string`) The passthrough element type, either `block` or `inline`.
-
 ## Example
 
 Instead of client-side JavaScript rendering of mathematical markup using MathJax or KaTeX, create a passthrough render hook which calls the [`transform.ToMath`] function.
 
 [`transform.ToMath`]: /functions/transform/tomath/
 
-{{< code file=layouts/_default/_markup/render-passthrough.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-passthrough.html" copy=true}
 {{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }}
 {{- with try (transform.ToMath .Inner $opts) }}
   {{- with .Err }}
-    {{ errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
+    {{- errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
   {{- else }}
     {{- .Value }}
     {{- $.Page.Store.Set "hasMath" true }}
   {{- end }}
 {{- end -}}
-{{< /code >}}
+```
 
 Then, in your base template, conditionally include the KaTeX CSS within the head element:
 
-{{< code file=layouts/_default/baseof.html copy=true >}}
+```go-html-template {file="layouts/_default/baseof.html" copy=true}
 <head>
   {{ $noop := .WordCount }}
   {{ if .Page.Store.Get "hasMath" }}
     <link href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" rel="stylesheet">
   {{ end }}
 </head>
-{{< /code >}}
+```
 
 In the above, note the use of a [noop](g) statement to force content rendering before we check the value of `hasMath` with the `Store.Get` method.
 
@@ -134,4 +121,4 @@ layouts/
         └── render-passthrough-inline.html
 ```
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
index d131664fcd811f92e29ba45c2cc0278c7e216360..c7671aff43c9c0cb66f8e4b4d483030b30e3632d 100755 (executable)
@@ -2,14 +2,8 @@
 title: Table render hooks
 linkTitle: Tables
 description: Create a table render hook to override the rendering of Markdown tables to HTML.
-categories: [render hooks]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: render-hooks
-    weight: 90
-weight: 90
-toc: true
 ---
 
 {{< new-in 0.134.0 />}}
@@ -18,50 +12,44 @@ toc: true
 
 Table render hook templates receive the following [context](g):
 
-###### Attributes
+Attributes
+: (`map`) The [Markdown attributes], available if you configure your site as follows:
 
-(`map`) The [Markdown attributes], available if you configure your site as follows:
+  {{< code-toggle file=hugo >}}
+  [markup.goldmark.parser.attribute]
+  block = true
+  {{< /code-toggle >}}
 
-[Markdown attributes]: /content-management/markdown-attributes/
-
-{{< code-toggle file=hugo >}}
-[markup.goldmark.parser.attribute]
-block = true
-{{< /code-toggle >}}
+Ordinal
+: (`int`) The zero-based ordinal of the table on the page.
 
-###### Ordinal
+Page
+: (`page`) A reference to the current page.
 
-(`int`) The zero-based ordinal of the table on the page.
+PageInner
+: (`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
 
-###### Page
+Position
+: (`string`) The position of the table within the page content.
 
-(`page`) A reference to the current page.
+THead
+: (`slice`) A slice of table header rows, where each element is a slice of table cells.
 
-###### PageInner
-
-(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
+TBody
+: (`slice`) A slice of table body rows, where each element is a slice of table cells.
 
+[Markdown attributes]: /content-management/markdown-attributes/
 [`RenderShortcodes`]: /methods/page/rendershortcodes
 
-###### Position
-
-(`string`) The position of the table within the page content.
-
-###### THead
-(`slice`) A slice of table header rows, where each element is a slice of table cells.
-
-###### TBody
-(`slice`) A slice of table body rows, where each element is a slice of table cells.
-
 ## Table cells
 
 Each table cell within the slice of slices returned by the `THead` and `TBody` methods has the following fields:
 
-###### Alignment
-(`string`) The alignment of the text within the table cell, one of `left`, `center`, or `right`.
+Alignment
+(`string`) The alignment of the text within the table cell, one of `left`, `center`, or `right`.
 
-###### Text
-(`template.HTML`) The text within the table cell.
+Text
+(`template.HTML`) The text within the table cell.
 
 ## Example
 
@@ -69,7 +57,7 @@ In its default configuration, Hugo renders Markdown tables according to the [Git
 
 [GitHub Flavored Markdown specification]: https://github.github.com/gfm/#tables-extension-
 
-{{< code file=layouts/_default/_markup/render-table.html copy=true >}}
+```go-html-template {file="layouts/_default/_markup/render-table.html" copy=true}
 <table
   {{- range $k, $v := .Attributes }}
     {{- if $v }}
@@ -107,6 +95,6 @@ In its default configuration, Hugo renders Markdown tables according to the [Git
     {{- end }}
   </tbody>
 </table>
-{{< /code >}}
+```
 
-{{% include "/render-hooks/_common/pageinner.md" %}}
+{{% include "/_common/render-hooks/pageinner.md" %}}
index 2d9a8fdd6e5fe26966a5add1bbd3489565efd507..826ee57960cba010bf5dde1e0c3733a6ca4187fe 100644 (file)
@@ -1,16 +1,7 @@
 ---
 title: Shortcodes
-
 description: Insert elements such as videos, images, and social media embeds into your content using Hugo's embedded shortcodes.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: shortcodes-in-this-section
-    parent: shortcodes
-    weight: 10
 weight: 10
-showSectionMenu: true
 ---
-
-Insert elements such as videos, images, and social media embeds into your content using Hugo's embedded shortcodes.
diff --git a/content/en/shortcodes/comment.md b/content/en/shortcodes/comment.md
deleted file mode 100755 (executable)
index 1600c09..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Comment
-description: Include hidden comments in your content with the comment shortcode.
-categories: [shortcodes]
-keywords: []
-menu:
-  docs:
-    identifier: shortcodes-comment
-    parent: shortcodes
-    weight:
-weight:
-expiryDate: 2025-01-22 # deprecated 2025-02-01 in v0.143.0 and immediately removed from the documentation
----
-
-{{% note %}}
-To override Hugo's embedded `comment` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl comment %}}
-{{% /note %}}
-
-{{< new-in 0.137.1 />}}
-
-Use the `comment` shortcode to include comments in your content. Hugo will ignore the text within these comments when rendering your site.
-
-Use it inline:
-
-```text
-{{%/* comment */%}} rewrite the paragraph below {{%/* /comment */%}}
-```
-
-Or as a block comment:
-
-```text
-{{%/* comment */%}}
-rewrite the paragraph below
-{{%/* /comment */%}}
-```
-
-Although you can call this shortcode using the `{{</* */>}}` notation, computationally it is more efficient to call it using the `{{%/* */%}}` notation as shown above.
index f30f81d75988a7071efcb334eb51133ee3f7c89d..94502ac1c63fd43d1730e6dc1756ff9f2071f234 100755 (executable)
@@ -1,23 +1,15 @@
 ---
-title: Details
+title: Details shortcode
+linkTitle: Details
 description: Insert an HTML details element into your content using the details shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
 {{< new-in 0.140.0 />}}
 
-{{% note %}}
-To override Hugo's embedded `details` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl details %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `details` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -44,7 +36,7 @@ Which looks like this in your browser:
 This is a **bold** word.
 {{< /details >}}
 
-## Parameters
+## Arguments
 
 summary
 : (`string`) The content of the child `summary` element rendered from Markdown to HTML. Default is `Details`.
@@ -78,3 +70,5 @@ details > summary > * { }
 /* target the content */
 details > :not(summary) { }
 ```
+
+[source code]: {{% eturl details %}}
index eb98598b69546e0b3b821b356ec629000fde03d9..74af52fe7f1c1b6b231b643c03128e910e554ad8 100755 (executable)
@@ -1,21 +1,13 @@
 ---
-title: Figure
+title: Figure shortcode
+linkTitle: Figure
 description: Insert an HTML figure element into your content using the figure shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
-{{% note %}}
-To override Hugo's embedded `figure` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl figure %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `figure` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -57,7 +49,7 @@ Which looks like this in your browser:
   class="ma0 w-75"
 >}}
 
-## Parameters
+## Arguments
 
 src
 : (`string`) The `src` attribute of the `img` element. Typically this is a [page resource](g) or a [global resource](g).
@@ -113,3 +105,5 @@ target = 'assets'
 source = 'static'
 target = 'assets'
 {{< /code-toggle >}}
+
+[source code]: {{% eturl figure %}}
index 1c740bccbea44a096181055160943895d0f4957d..fd2b468ab8490a5230a5b3f373ac500866404a21 100755 (executable)
@@ -1,26 +1,20 @@
 ---
-title: Gist
+title: Gist shortcode
+linkTitle: Gist
 description: Embed a GitHub Gist in your content using the gist shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
 expiryDate: 2027-02-01 # deprecated 2025-02-01 in v0.143.0
 ---
 
-{{% deprecated-in 0.143.0 %}}
+{{< deprecated-in 0.143.0 >}}
 The `gist` shortcode was deprecated in version 0.143.0 and will be removed in a future release. To continue embedding GitHub Gists in your content, you'll need to create a custom shortcode:
 
 1. Create a new file: Create a file named `gist.html` within the `layouts/shortcodes` directory.
-2. Copy the source code: Paste the [original source code] of the gist shortcode into the newly created `gist.html` file.
+1. Copy the source code: Paste the [original source code]({{% eturl gist %}}) of the gist shortcode into the newly created `gist.html` file.
 
 This will allow you to maintain the functionality of embedding GitHub Gists in your content after the deprecation of the original shortcode.
-
-[original source code]: {{% eturl gist %}}
-{{% /deprecated-in %}}
+{{< /deprecated-in >}}
 
 To display a GitHub gist with this URL:
 
index 0a35aa4e6029b1a54176aaa368aa06cfb2634c5a..371a3d46eb11e009ad39a00c758a177f4adaebc9 100755 (executable)
@@ -1,35 +1,20 @@
 ---
-title: Highlight
+title: Highlight shortcode
+linkTitle: Highlight
 description: Insert syntax-highlighted code into your content using the highlight shortcode.
-categories: [shortcodes]
-keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
+categories: []
+keywords: [highlight]
 ---
 
-{{% note %}}
-To override Hugo's embedded `highlight` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
+> [!note]
+To override Hugo's embedded `highlight` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
-[source code]: {{% eturl highlight %}}
-{{% /note %}}
-
-{{% note %}}
-With the Markdown [content format], the `highlight` shortcode is rarely needed because, by default, Hugo automatically applies syntax highlighting to fenced code blocks.
+> [!note]
+> With the Markdown [content format], the `highlight` shortcode is rarely needed because, by default, Hugo automatically applies syntax highlighting to fenced code blocks.
+>
+> The primary use case for the `highlight` shortcode in Markdown is to apply syntax highlighting to inline code snippets.
 
-The primary use case for the `highlight` shortcode in Markdown is to apply syntax highlighting to inline code snippets.
-
-[content format]: /content-management/formats/
-{{% /note %}}
-
-The `highlight` shortcode calls the [`transform.Highlight`] function which uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [available styles].
-
-[chroma]: https://github.com/alecthomas/chroma
-[available styles]: https://xyproto.github.io/splash/docs/
-[`transform.Highlight`]: /functions/transform/highlight/
+The `highlight` shortcode calls the [`transform.Highlight`] function which uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [highlighting styles].
 
 ## Arguments
 
@@ -50,13 +35,10 @@ LANG
 OPTIONS
 : (`string`) Zero or more space-separated key-value pairs wrapped in quotation marks. Set default values for each option in your [site configuration]. The key names are case-insensitive.
 
-[site configuration]: /getting-started/configuration-markup#highlight
-[supported languages]: /content-management/syntax-highlighting/#list-of-chroma-highlighting-languages
-
 ## Example
 
 ```text
-{{</* highlight go "linenos=inline, hl_Lines=3 6-8, style=emacs" */>}}
+{{</* highlight go "linenos=inline, hl_lines=3 6-8, style=emacs" */>}}
 package main
 
 import "fmt"
@@ -95,12 +77,12 @@ This is some {{< highlight go "hl_inline=true, noClasses=true" >}}fmt.Println("i
 
 Given the verbosity of the example above, if you need to frequently highlight inline code snippets, create your own shortcode using a shorter name with preset options.
 
-{{< code file=layouts/shortcodes/hl.html >}}
+```go-html-template {file="layouts/shortcodes/hl.html"}
 {{ $code := .Inner | strings.TrimSpace }}
-{{ $lang := or (.Get 0) "go"  }}
+{{ $lang := or (.Get 0) "go" }}
 {{ $opts := dict "hl_inline" true "noClasses" true }}
 {{ transform.Highlight $code $lang $opts }}
-{{< /code >}}
+```
 
 ```text
 This is some {{</* hl */>}}fmt.Println("inline"){{</* /hl */>}} code.
@@ -114,4 +96,12 @@ This is some {{< hl >}}fmt.Println("inline"){{< /hl >}} code.
 
 Pass the options when calling the shortcode. You can set their default values in your [site configuration].
 
-{{% include "functions/_common/highlighting-options" %}}
+{{% include "_common/syntax-highlighting-options.md" %}}
+
+[`transform.Highlight`]: /functions/transform/highlight/
+[Chroma]: https://github.com/alecthomas/chroma
+[content format]: /content-management/formats/
+[highlighting styles]: /quick-reference/syntax-highlighting-styles/
+[site configuration]: /configuration/markup/#highlight
+[source code]: {{% eturl highlight %}}
+[supported languages]: /content-management/syntax-highlighting/#languages
index eb2bb76718fa83b9b6cb52d547be3277302134fa..3256790c6369afa055c9973b70ffbf35c8c9cac9 100755 (executable)
@@ -1,21 +1,13 @@
 ---
-title: Instagram
+title: Instagram shortcode
+linkTitle: Instagram
 description: Embed an Instagram post in your content using the instagram shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
-{{% note %}}
-To override Hugo's embedded `instagram` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl instagram %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `instagram` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -46,3 +38,5 @@ disable
 
 simple
 : (`bool`) Whether to enable simple mode for image card generation. If `true`, Hugo creates a static card without JavaScript. This mode only supports image cards, and the image is fetched directly from Instagram's servers. Default is `false`.
+
+[source code]: {{% eturl instagram %}}
index bff659ec11acff1303adf02f36ac946e3ebf8c53..133b2322aea4791a954751195c946b958a1a1d83 100755 (executable)
@@ -1,24 +1,17 @@
 ---
-title: Param
+title: Param shortcode
+linkTitle: Param
 description: Insert a parameter from front matter or site configuration into your content using the param shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
 ---
 
-{{% note %}}
-To override Hugo's embedded `param` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl param %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `param` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 The `param` shortcode renders a parameter from front matter, falling back to a site parameter of the same name. The shortcode throws an error if the parameter does not exist.
 
-{{< code file=example.md lang=text >}}
+```text {file="content/example.md"}
 ---
 title: Example
 date: 2025-01-15T23:29:46-08:00
@@ -28,7 +21,7 @@ params:
 ---
 
 We found a {{%/* param "color" */%}} shirt.
-{{< /code >}}
+```
 
 Hugo renders this to:
 
@@ -41,3 +34,5 @@ Access nested values by [chaining](g) the [identifiers](g):
 ```text
 {{%/* param my.nested.param */%}}
 ```
+
+[source code]: {{% eturl param %}}
index a7a6d92cb3dacd05b6fbe1bc8074b9ba0b007d7e..98d6cee4c24c5533f507a75658fc3c7cfcffdfe7 100755 (executable)
@@ -1,31 +1,20 @@
 ---
-title: QR
+title: QR shortcode
+linkTitle: QR
 description: Insert a QR code into your content using the qr shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
 {{< new-in 0.141.0 />}}
 
-{{% note %}}
-To override Hugo's embedded `qr` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl qr %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `qr` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 The `qr` shortcode encodes the given text into a [QR code] using the specified options and renders the resulting image.
 
 Internally this shortcode calls the `images.QR` function. Please read the [related documentation] for implementation details and guidance.
 
-[QR code]: https://en.wikipedia.org/wiki/QR_code
-[related documentation]: /functions/images/qr/
-
 ## Examples
 
 Use the self-closing syntax to pass the text as an argument:
@@ -56,8 +45,6 @@ To create a QR code for a phone number:
 
 To create a QR code containing contact information in the [vCard] format:
 
-[vCard]: https://en.wikipedia.org/wiki/VCard
-
 ```text
 {{</* qr level="low" scale=2 alt="QR code of vCard for John Smith" */>}}
 BEGIN:VCARD
@@ -84,7 +71,7 @@ EMAIL;TYPE=WORK:jsmith@example.org
 END:VCARD
 {{< /qr >}}
 
-## Parameters
+## Arguments
 
 text
 : (`string`) The text to encode, falling back to the text between the opening and closing shortcode tags.
@@ -98,8 +85,6 @@ scale
 targetDir
 : (`string`) The subdirectory within the [`publishDir`] where Hugo will place the generated image.
 
-[`publishDir`]: /getting-started/configuration/#publishdir
-
 alt
 : (`string`) The `alt` attribute of the `img` element.
 
@@ -109,5 +94,14 @@ class
 id
 : (`string`) The `id` attribute of the `img` element.
 
+loading
+: (`string`) The `loading` attribute of the `img` element, either `eager` or `lazy`.
+
 title
 : (`string`) The `title` attribute of the `img` element.
+
+[`publishDir`]: /configuration/all/#publishdir
+[QR code]: https://en.wikipedia.org/wiki/QR_code
+[related documentation]: /functions/images/qr/
+[source code]: {{% eturl qr %}}
+[vCard]: https://en.wikipedia.org/wiki/VCard
index af133447eb334a5f6be8dbf2da85d1fd004dbc0e..2f821254c2d41d454eb939b4b274d1025cc5ab04 100755 (executable)
@@ -1,48 +1,61 @@
 ---
-title: Ref
+title: Ref shortcode
+linkTitle: Ref
 description: Insert a permalink to the given page reference using the ref shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
 ---
 
-{{% note %}}
-To override Hugo's embedded `ref` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
+> [!note]
+To override Hugo's embedded `ref` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
-[source code]: {{% eturl ref %}}
-{{% /note %}}
+> [!note]
+> When working with the Markdown [content format], this shortcode has become largely redundant. Its functionality is now primarily handled by [link render hooks], specifically the embedded one provided by Hugo. This hook effectively addresses all the use cases previously covered by this shortcode.
 
-{{% note %}}
-When working with the Markdown [content format], this shortcode has become largely redundant. Its functionality is now primarily handled by [link render hooks], specifically the embedded one provided by Hugo. This hook effectively addresses all the use cases previously covered by this shortcode.
+## Usage
 
-[content format]: /content-management/formats/
-[link render hooks]: /render-hooks/images/#default
-{{% /note %}}
+The `ref` shortcode accepts either a single positional argument (the path) or one or more named arguments, as listed below.
+
+## Arguments
+
+{{% include "_common/ref-and-relref-options.md" %}}
+
+## Examples
+
+The `ref` shortcode typically provides the destination for a Markdown link.
+
+> [!note]
+> Always use [Markdown notation] notation when calling this shortcode.
+
+The following examples show the rendered output for a page on the English version of the site:
 
-The `ref` shortcode returns the permalink of the given page reference.
+```md
+[Link A]({{%/* ref "/books/book-1" */%}})
 
-Example usage:
+[Link B]({{%/* ref path="/books/book-1" */%}})
 
-```text
-[Post 1]({{%/* ref "/posts/post-1" */%}})
-[Post 1]({{%/* ref "/posts/post-1.md" */%}})
-[Post 1]({{%/* ref "/posts/post-1#foo" */%}})
-[Post 1]({{%/* ref "/posts/post-1.md#foo" */%}})
+[Link C]({{%/* ref path="/books/book-1" lang="de" */%}})
+
+[Link D]({{%/* ref path="/books/book-1" lang="de" outputFormat="json" */%}})
 ```
 
 Rendered:
 
 ```html
-<a href="https://example.org/posts/post-1/">Post 1</a>
-<a href="https://example.org/posts/post-1/">Post 1</a>
-<a href="https://example.org/posts/post-1/#foo">Post 1</a>
-<a href="https://example.org/posts/post-1/#foo">Post 1</a>
+<a href="https://example.org/en/books/book-1/">Link A</a>
+
+<a href="https://example.org/en/books/book-1/">Link B</a>
+
+<a href="https://example.org/de/books/book-1/">Link C</a>
+
+<a href="https://example.org/de/books/book-1/index.json">Link D</a>
 ```
 
-{{% note %}}
-Always use the `{{%/* */%}}` notation when calling this shortcode.
-{{% /note %}}
+## Error handling
+
+{{% include "_common/ref-and-relref-error-handling.md" %}}
+
+[content format]: /content-management/formats/
+[link render hooks]: /render-hooks/images/#default
+[Markdown notation]: /content-management/shortcodes/#notation
+[source code]: {{% eturl ref %}}
index e98e82919617af0abcf8c4ebef52a451f7e4bb99..5b413b87ebe93a055485b8a20320611d1eb90988 100755 (executable)
@@ -1,48 +1,61 @@
 ---
-title: Relref
+title: Relref shortcode
+linkTitle: Relref
 description: Insert a relative permalink to the given page reference using the relref shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
 ---
 
-{{% note %}}
-To override Hugo's embedded `relref` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
+> [!note]
+To override Hugo's embedded `relref` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
-[source code]: {{% eturl relref %}}
-{{% /note %}}
+> [!note]
+> When working with the Markdown [content format], this shortcode has become largely redundant. Its functionality is now primarily handled by [link render hooks], specifically the embedded one provided by Hugo. This hook effectively addresses all the use cases previously covered by this shortcode.
 
-{{% note %}}
-When working with the Markdown [content format], this shortcode has become largely redundant. Its functionality is now primarily handled by [link render hooks], specifically the embedded one provided by Hugo. This hook effectively addresses all the use cases previously covered by this shortcode.
+## Usage
 
-[content format]: /content-management/formats/
-[link render hooks]: /render-hooks/links/
-{{% /note %}}
+The `relref` shortcode accepts either a single positional argument (the path) or one or more named arguments, as listed below.
+
+## Arguments
+
+{{% include "_common/ref-and-relref-options.md" %}}
+
+## Examples
+
+The `relref` shortcode typically provides the destination for a Markdown link.
+
+> [!note]
+> Always use [Markdown notation] notation when calling this shortcode.
+
+The following examples show the rendered output for a page on the English version of the site:
 
-The `relref` shortcode returns the relative permalink of the given page reference.
+```md
+[Link A]({{%/* ref "/books/book-1" */%}})
 
-Example usage:
+[Link B]({{%/* ref path="/books/book-1" */%}})
 
-```text
-[Post 1]({{%/* relref "/posts/post-1" */%}})
-[Post 1]({{%/* relref "/posts/post-1.md" */%}})
-[Post 1]({{%/* relref "/posts/post-1#foo" */%}})
-[Post 1]({{%/* relref "/posts/post-1.md#foo" */%}})
+[Link C]({{%/* ref path="/books/book-1" lang="de" */%}})
+
+[Link D]({{%/* ref path="/books/book-1" lang="de" outputFormat="json" */%}})
 ```
 
 Rendered:
 
 ```html
-<a href="/posts/post-1/">Post 1</a>
-<a href="/posts/post-1/">Post 1</a>
-<a href="/posts/post-1/#foo">Post 1</a>
-<a href="/posts/post-1/#foo">Post 1</a>
+<a href="/en/books/book-1/">Link A</a>
+
+<a href="/en/books/book-1/">Link B</a>
+
+<a href="/de/books/book-1/">Link C</a>
+
+<a href="/de/books/book-1/index.json">Link D</a>
 ```
 
-{{% note %}}
-Always use the `{{%/* */%}}` notation when calling this shortcode.
-{{% /note %}}
+## Error handling
+
+{{% include "_common/ref-and-relref-error-handling.md" %}}
+
+[content format]: /content-management/formats/
+[link render hooks]: /render-hooks/links/
+[Markdown notation]: /content-management/shortcodes/#notation
+[source code]: {{% eturl relref %}}
index 5ecdf5d028905496f64c6faf009b7e27cdd1e670..c354eefe0fddb3d09670ebfcd978a5b7e2fb41c8 100755 (executable)
@@ -1,21 +1,13 @@
 ---
-title: Vimeo
+title: Vimeo shortcode
+linkTitle: Vimeo
 description: Embed a Vimeo video in your content using the vimeo shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
-{{% note %}}
-To override Hugo's embedded `vimeo` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl vimeo %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `vimeo` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -35,7 +27,7 @@ Hugo renders this to:
 
 {{< vimeo 55073825 >}}
 
-## Parameters
+## Arguments
 
 class
 : (`string`) The `class` attribute of the wrapping `div` element. Adding one or more CSS classes disables inline styling.
@@ -70,3 +62,4 @@ simple
 The source code for the simple version of the shortcode is available [here].
 
 [here]: {{% eturl vimeo_simple %}}
+[source code]: {{% eturl vimeo %}}
index e27bc996af923122450358df8e1b5a6e27a9f493..f1eebdaf2084e402c45cde387b9d7a3d0e99f6cf 100755 (executable)
@@ -1,23 +1,15 @@
 ---
-title: X
+title: X shortcode
+linkTitle: X
 description: Embed an X post in your content using the x shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
 {{< new-in 0.141.0 />}}
 
-{{% note %}}
-To override Hugo's embedded `x` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl x %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `x` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -54,8 +46,9 @@ simple
 
 The source code for the simple version of the shortcode is available [here].
 
-[here]: {{% eturl x_simple %}}
-
 If you enable simple mode you may want to disable the hardcoded inline styles by setting `disableInlineCSS` to `true` in your site configuration. The default value for this setting is `false`.
 
 {{< code-toggle config=services.x />}}
+
+[here]: {{% eturl x_simple %}}
+[source code]: {{% eturl x %}}
index 5465295009aa134df6571c839ed0e8a84d32c6b1..18c5ae6c25e1e1419307a312d52c654d2c8adb48 100755 (executable)
@@ -1,21 +1,13 @@
 ---
-title: YouTube
+title: YouTube shortcode
+linkTitle: YouTube
 description: Embed a YouTube video in your content using the youtube shortcode.
-categories: [shortcodes]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: shortcodes
-    weight:
-weight:
-toc: true
 ---
 
-{{% note %}}
-To override Hugo's embedded `youtube` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
-
-[source code]: {{% eturl youtube %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded `youtube` shortcode, copy the [source code] to a file with the same name in the `layouts/shortcodes` directory.
 
 ## Example
 
@@ -27,7 +19,7 @@ https://www.youtube.com/watch?v=0RKpf3rK57I
 
 Include this in your Markdown:
 
-```text
+```texts
 {{</* youtube 0RKpf3rK57I */>}}
 ```
 
@@ -35,44 +27,44 @@ Hugo renders this to:
 
 {{< youtube 0RKpf3rK57I >}}
 
-## Parameters
+## Arguments
 
 id
 : (`string`) The video `id`. Optional if the `id` is provided as a positional argument as shown in the example above.
 
 allowFullScreen
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`bool`) Whether the `iframe` element can activate full screen mode. Default is `true`.
 
 autoplay
- {{< new-in 0.125.0 />}}
+: {{< new-in 0.125.0 />}}
 : (`bool`) Whether to automatically play the video. Forces `mute` to `true`. Default is `false`.
 
 class
 : (`string`) The `class` attribute of the wrapping `div` element. When specified, removes the `style` attributes from the `iframe` element and its wrapping `div` element.
 
 controls
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`bool`) Whether to display the video controls. Default is `true`.
 
 end
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`int`) The time, measured in seconds from the start of the video, when the player should stop playing the video.
 
 loading
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`string`) The loading attribute of the `iframe` element, either `eager` or `lazy`. Default is `eager`.
 
 loop
-{{< new-in 0.125.0 />}}
-: (`bool`) Whether to indefinitely repeat the video. Ignores the `start` and `end` arguments after the first play.  Default is `false`.
+{{< new-in 0.125.0 />}}
+: (`bool`) Whether to indefinitely repeat the video. Ignores the `start` and `end` arguments after the first play. Default is `false`.
 
 mute
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`bool`) Whether to mute the video. Always `true` when `autoplay` is `true`. Default is `false`.
 
 start
-{{< new-in 0.125.0 />}}
+{{< new-in 0.125.0 />}}
 : (`int`) The time, measured in seconds from the start of the video, when the player should start playing the video.
 
 title
@@ -95,3 +87,5 @@ disable
 
 privacyEnhanced
 : (`bool`) Whether to block YouTube from storing information about visitors on your website unless the user plays the embedded video. Default is `false`.
+
+[source code]: {{% eturl youtube %}}
index 3e15adc9f7c244c2d7076c20a22224e2a9fc7724..32d299bd4d8c6e993a0d696a4e557791a94c2d14 100644 (file)
@@ -1,4 +1,3 @@
-
 **1Password** is a password manager that keeps you safe online. It protects your secure information behind the one password only you know.
 
 The [1Password Support](https://support.1password.com/) website was built from scratch with **Hugo** and enhanced with **React** and **Elasticsearch** to give us the best of both worlds: The simplicity and performance of a static site, with the richness of a hosted web app.
index c0a66ce45edec9b9b259d1f3c70454988bc31b53..54a30f849096e972d7a9bcab3f4f5d45d36a9a3c 100644 (file)
@@ -1,12 +1,10 @@
 ---
-
 title: 1Password Support
 date: 2018-02-22
-description: "Showcase: \"Compiles 400 pages in five languages in the blink of an eye.\""
+description: 'Showcase: "Compiles 400 pages in five languages in the blink of an eye."'
 siteURL: https://support.1password.com/
 byline: "[Mitch Cohen](https://github.com/mitchchn), Documentation Team Lead"
 aliases: [/showcase/1password/]
-
 ---
 
 At 1Password, we used to go through a different documentation platform every month: blog engines, ebooks, wikis, site generators written in Ruby and JavaScript. Each was inadequate in its own special way. Then we found **Hugo**. We made one last switch, and we're glad we did.
@@ -31,9 +29,9 @@ Finding a tool that will make your customers, writers, designers, _and_ DevOps t
 
 ### Tech specs
 
-* [1Password Support](https://support.1password.com) uses Hugo with a custom theme. It shares styles and some template code with [1Password.com](https://1password.com), which we also moved to Hugo in 2016.
-* Code and articles live in a private GitHub repository, which is deployed to a static content server using Git hooks.
-* Writers build and preview the site on their computers and contribute content using pull requests.
-* We use Hugo's [multilingual support](/content-management/multilingual/) to build the site in English, Spanish, French, Italian, German, and Russian. With the help of Hugo, 1Password Support became our very first site in multiple languages.
-* Our [contact form](https://support.1password.com/contact) is a single-page React app. We were able to integrate it with Hugo seamlessly thanks to its support for static files.
-* The one part of the support site which is not static is our search engine, which we developed with Elasticsearch and host on AWS.
+- [1Password Support](https://support.1password.com) uses Hugo with a custom theme. It shares styles and some template code with [1Password.com](https://1password.com), which we also moved to Hugo in 2016.
+- Code and articles live in a private GitHub repository, which is deployed to a static content server using Git hooks.
+- Writers build and preview the site on their computers and contribute content using pull requests.
+- We use Hugo's [multilingual support](/content-management/multilingual/) to build the site in English, Spanish, French, Italian, German, and Russian. With the help of Hugo, 1Password Support became our very first site in multiple languages.
+- Our [contact form](https://support.1password.com/contact) is a single-page React app. We were able to integrate it with Hugo seamlessly thanks to its support for static files.
+- The one part of the support site which is not static is our search engine, which we developed with Elasticsearch and host on AWS.
index cec1936ea3278201a8f425d2046154fa556ca894..e618e81041bb9334298d2683516ec45b9a9433da 100644 (file)
@@ -1,4 +1,7 @@
 ---
 title: Showcases
-draft: true
+cascade:
+  build:
+    render: never
+    list: never
 ---
diff --git a/content/en/showcase/_template/bio.md b/content/en/showcase/_template/bio.md
new file mode 100644 (file)
index 0000000..5ea3896
--- /dev/null
@@ -0,0 +1,6 @@
+Add some **general info** about Myshowcase here.
+
+The site is built by:
+
+- [Person 1](https://example.org)
+- [Person 1](https://example.org)
diff --git a/content/en/showcase/_template/featured.png b/content/en/showcase/_template/featured.png
new file mode 100644 (file)
index 0000000..4f39013
Binary files /dev/null and b/content/en/showcase/_template/featured.png differ
diff --git a/content/en/showcase/_template/index.md b/content/en/showcase/_template/index.md
new file mode 100644 (file)
index 0000000..3103903
--- /dev/null
@@ -0,0 +1,31 @@
+---
+title: Myshowcase
+date: 
+draft: true
+description: A short description of this page.
+# The URL to the site on the internet.
+siteURL: https://gohugo.io/
+# Link to the site's Hugo source code if public and you can/want to share.
+# Remove or leave blank if not needed/wanted.
+siteSource: https://github.com/gohugoio/hugoDocs
+# Add credit to the article author. Leave blank or remove if not needed/wanted.
+byline: '[bep](https://github.com/bep), Hugo Lead'
+---
+
+To complete this showcase:
+
+1. Write the story about your site in this file.
+1. Add a summary to the `bio.md` file in this directory.
+1. Replace the `featured-template.png` with a screenshot of your site. You can rename it, but it must contain the word `featured`.
+1. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls
+
+The content of this bundle explained:
+
+index.md
+: The main content file. Fill in required front matter metadata and write your story. I does not have to be a novel. It can even be self-promotional, but it should include Hugo in some form.
+
+bio.md
+: A short summary of the website. Site credits (who built it) fits nicely here.
+
+featured.png
+: A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio).
index 559169319f34885ab96f787bf2b3f5138470d78b..5e676bad3bec9f77d9ddfcf85454f75ff0255eaf 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: Alora Labs
 date: 2021-05-27
-description: "Showcase: \"Making performant websites accessible for everyone.\""
+description: 'Showcase: "Making performant websites accessible for everyone."'
 siteURL: https://aloralabs.com/
 siteSource: https://github.com/aloralabs/homepage
 aliases: [/showcase/aloralabs/]
index c7dd9894a1f76ba319eaf1192ff351d0db446cff..a08b26be7ee281e76fee2da967272f18aa5e13e1 100644 (file)
@@ -1,11 +1,10 @@
-
 __We are Ampio.__ We design and manufacture a building automation system that provides control, comfort, safety and reliability. Visit [our page](http://ampio.com/) to learn more about our solution!
 
 __Ampio Knowledge Base__ is a service built and maintained with Hugo. It is a self-service support platform for our customers and certified installers. It also contains a complete portfolio of our modules---building blocks of the Ampio building automation system.
 
 The site is built by:
 
-* [@mgetka](https://github.com/mgetka), developer
-* [@SteynAnna](https://github.com/SteynAnna), maintainer
+- [@mgetka](https://github.com/mgetka), developer
+- [@SteynAnna](https://github.com/SteynAnna), maintainer
 
 and other members of the Ampio team responsible for content creation.
index 2daafbbe11c28dbeb49380c129ca35d72f55ece4..462452cb19c5136fe43ddb87ccade9002e4a18de 100644 (file)
@@ -1,7 +1,6 @@
 ---
 title: Ampio Knowledge Base
 date: 2022-10-30
-
 description: "Knowledge base for the Ampio building automation system."
 siteURL: https://help.ampio.com/
 ---
@@ -39,7 +38,7 @@ Hugo was our first choice of SSG. The multilingualism support was the primary fe
 
 The rich functionalities of WordPress WYSIWYG editors soon turned out to be a curse. It became burdensome to maintain formatting consistency across documents prepared by multiple contributors. When we considered Markdown, we knew that it would give us a lot less flexibility. In our case, it proved to be a blessing in disguise---the constraints imposed by the notation ensured that each document was prepared in the same way. And in the cases where Markdown was not enough, Hugo shortcodes gave us all that we needed to get the results we anticipated.
 
-In terms of PDF generation, we utilized [custom output formats](/templates/output-formats/) to produce intermediary document representations, which are consumed by our custom tool transforming them to TeX documents, which are finally used to produce PDF files.
+In terms of PDF generation, we utilized [custom output formats](/configuration/output-formats/) to produce intermediary document representations, which are consumed by our custom tool transforming them to TeX documents, which are finally used to produce PDF files.
 
 Custom output formats were also used to create search indexes. The search functionality is built on the brilliant [TNTSearch](https://github.com/teamtnt/tntsearch) library. The search queries and results are handled by PHP snippets embedded into static documents handled by Hugo.
 
@@ -66,9 +65,9 @@ Total in 1096 ms
 
 Very quickly it became apparent that our initial concerns about the adaptation of the workflow among contributors were grossly exaggerated. Markdown is fairly straightforward and did not cause any trouble for the contributors.
 
-We recommended that our colleagues use Visual Studio Code as a tool for content creation. The projects repository tracks project-scoped configuration of the editor, which includes a set of _tasks_ allowing to run a live server from the GUI level. This is very useful for those who are easily frightened when faced with the mighty terminal.
+We recommended that our colleagues use Visual Studio Code as a tool for content creation. The project's repository tracks project-scoped configuration of the editor, which includes a set of _tasks_ allowing to run a live server from the GUI level. This is very useful for those who are easily frightened when faced with the mighty terminal.
 
-The basic skills of the Git workflow were also easily acquired. At the end of the day, builds and deployments are fully managed by CI/CD processes, so the administration of the service drills down to reviewing and accepting merge requests in the Git frontend. As a side effect, we receive a full and clear history of contributions, which is well appreciated by our quality assurance auditors.
+The basic skills of the Git workflow were also easily acquired. At the end of the day, builds and deployments are fully managed by [CI/CD](g) processes, so the administration of the service drills down to reviewing and accepting merge requests in the Git frontend. As a side effect, we receive a full and clear history of contributions, which is well appreciated by our quality assurance auditors.
 
 We could even say that our experiment spread the love for Git among non-programmers in our organization!
 
index 0a847df1ec5d944403e0d604ce9eb8edeb6d2caa..a6c98f9bad69f06f53694bc56a833804998cd958 100644 (file)
@@ -2,5 +2,5 @@ Bypass Censorship find and promote tools that provide Internet access to everyon
 
 The site is built by:
 
-* [Leyla Avsar](https://www.leylaavsar.com/) (designer)
-* [Fredrik Jonsson](https://xdeb.net/) (dev)
+- [Leyla Avsar](https://www.leylaavsar.com/) (designer)
+- [Fredrik Jonsson](https://xdeb.net/) (dev)
index 8cbda9aa65d20ce83864fdfc7ad48c6484b2c865..bd1a072c0dec46be4948eae851daf7ba844e7c22 100644 (file)
@@ -1,10 +1,9 @@
 ---
 title: Bypass Censorship
 date: 2019-06-16
-description: "Showcase: Bypass Censorship find and promote tools that provide Internet access to everyone."
+description: 'Showcase: "Bypass Censorship find and promote tools that provide Internet access to everyone."'
 siteURL: https://www.bypasscensorship.org/
 byline: "[Fredrik Jonsson](https://xdeb.net/), Web developer & Linux sysadmin"
-
 ---
 
 The British Broadcasting Corporation (BBC) (UK), Deutsche Welle (DW) (Germany), France Médias Monde (FMM) (France), the U.S. Agency for Global Media (USAGM) (US) and the Open Technology Fund (OTF) (US) co-sponsor the Bypass Censorship website.
index db3ffafafcaf012c1c4a4189645b3b274171b51b..70bb990b95cec044056152b004c9face5e9fb35e 100644 (file)
@@ -1,2 +1 @@
-
 **Digital.gov** helps people in the U.S. government deliver better, more accessible digital services through publishing essential guidance, resources, tools, and online events that make it easier for people to design, build, and deliver essential services for the public.
index 3db2c608f146e50fb158e57d1578cbfa3dcff1f0..7f0584712fd331133fe24becdba859f18b69fa67 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: Digital.gov
 date: 2020-05-01
-description: "Showcase: \"Guidance on building better digital services in government.\""
+description: 'Showcase: "Guidance on building better digital services in government."'
 siteURL: https://digital.gov/
 siteSource: https://github.com/gsa/digitalgov.gov
 ---
@@ -14,15 +14,15 @@ Digital.gov is built using the [U.S. Web Design System](https://designsystem.dig
 
 - **Start with real user needs**  — We used human-centered design methods to inform our product decisions (like qualitative user research), and gathered feedback from real users. We also continually test our assumptions with small experiments.
 - **Earn trust**  —We recognize that trust has to be earned every time. We are including all  [required links and content](https://digital.gov/resources/required-web-content-and-links/)  on our site, clearly identifying as a government site, building with modern best practices, and using HTTPS.
-- **Embrace accessibility**  —  [Accessibility](https://digital.gov/resources/intro-accessibility/)  affects everybody, and we built it into every decision. Were continually working to conform to Section 508 requirements, use user experience best practices, and support a wide range of devices.
-- **Promote continuity**  — We started from shared solutions like USWDS and  [Federalist](https://federalist.18f.gov/). We designed our site to clearly identify as a government site by including USWDSs .gov banner, common colors and patterns, and built with modern best practices.
+- **Embrace accessibility**  —  [Accessibility](https://digital.gov/resources/intro-accessibility/)  affects everybody, and we built it into every decision. We're continually working to conform to Section 508 requirements, use user experience best practices, and support a wide range of devices.
+- **Promote continuity**  — We started from shared solutions like USWDS and  [Federalist](https://federalist.18f.gov/). We designed our site to clearly identify as a government site by including USWDS's .gov banner, common colors and patterns, and built with modern best practices.
 - **Listen**  — We actively collect user feedback and web metrics. We use the  [Digital Analytics Program](https://digital.gov/services/dap/)  (DAP) and analyze the data to discover actionable insights. We make small, incremental changes to continuously improve our website by listening to readers and learning from what we hear.
 
 _More on the [USWDS maturity model »](https://designsystem.digital.gov/maturity-model/)_
 
 ## Open tools
 
-We didnt start from scratch. We built and designed the Digital.gov using many of the open-source tools and services that we develop for government here in the  [Technology Transformation Services](https://www.gsa.gov/tts/) (TTS).
+We didn't start from scratch. We built and designed the Digital.gov using many of the open-source tools and services that we develop for government here in the  [Technology Transformation Services](https://www.gsa.gov/tts/) (TTS).
 
 Using services that make it possible to design, build, and iterate quickly are essential to modern web design and development, which is why [Federalist](https://federalist.18f.gov/) and the [U.S. Web Design System](https://designsystem.digital.gov/) are such a great combination.
 
index faf739bfab5a6815cbd73e001a6484aac4ab8805..2a5639aa7c044db78bf2bb8de83b40b9d1fa89fe 100644 (file)
@@ -1,6 +1,5 @@
-
 **Fireship.io** is an ecosystem of detailed and practical resources for developers who want to build and ship high-quality apps.
 
 The site is built by:
 
-* [Jeff Delaney](https://fireship.io/contributors/jeff-delaney/)
+- [Jeff Delaney](https://fireship.io/contributors/jeff-delaney/)
index a229e4f6a72077f3f8a5f76722e26e0743ea2ca1..454ee87d7c5e74b538f887f5754be788736399b9 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: fireship.io
 date: 2019-02-02
-description: "Showcase: \"Hugo helps us create complex technical content that integrates engaging web components\""
+description: 'Showcase: "Hugo helps us create complex technical content that integrates engaging web components."'
 siteURL: https://fireship.io
 siteSource: https://github.com/fireship-io/fireship.io
 byline: "[Jeff Delaney](https://github.com/codediodeio), Fireship.io Creator"
index 0b8f28743ed3162a444fa22b5758d8cc1ee7b46c..23951a1c6ef3eee0817d9808bb1388c5a6f90329 100644 (file)
@@ -1,4 +1,3 @@
-
 Forestry.io is a Git-backed CMS (content management system) for websites and web products built using static site generators such as Hugo.
 
 Forestry bridges the gap between developers and their teams, by making development fun and easy, while providing powerful content management for their teams.
index fabcb7cd3e005f71ace9d9a6c2285a7cfac3f57b..5b887231666b81badb4066ed02c2907195195f6e 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: Forestry.io
 date: 2018-03-16
-description: "Showcase: \"Seeing Hugo in action is a whole different world of awesome.\""
+description: 'Showcase: "Seeing Hugo in action is a whole different world of awesome."'
 siteURL: https://forestry.io/
 siteSource: https://github.com/forestryio/forestry.io
 ---
@@ -10,7 +10,7 @@ It was clear from the get-go that we had to go with a static site generator. Sta
 
 ### Why Hugo?
 
-In our early research we looked at Ionic’s [site](https://github.com/ionic-team/ionic) to get some inspiration. They used Jekyll to build their website. While Jekyll is a great generator, the build times for larger sites can be painfully slow. With more than 150 pages plus many custom configurations and add-ons, our website doesn’t fall into the low-volume category anymore. Our developers want a smooth experience when working on the website and our content editors need the ability to preview content quickly. In short, we need our builds to be lightning fast.
+In our early research we looked at Ionic's [site](https://github.com/ionic-team/ionic) to get some inspiration. They used Jekyll to build their website. While Jekyll is a great generator, the build times for larger sites can be painfully slow. With more than 150 pages plus many custom configurations and add-ons, our website doesn't fall into the low-volume category anymore. Our developers want a smooth experience when working on the website and our content editors need the ability to preview content quickly. In short, we need our builds to be lightning fast.
 
 We knew Hugo was fast but we did [some additional benchmarking](https://forestry.io/blog/hugo-vs-jekyll-benchmark/) before making our decision. Seeing Hugo in action is a whole different world of awesome. Hugo takes less than one second to build our 150-page site! Take a look:
 
@@ -35,14 +35,14 @@ Lastly, we want to take the opportunity to give some love to other amazing tools
 
 ### What tools did we use?
 
-* Our Norwegian designer Nichlas is in love with [**Sketch**](https://www.sketchapp.com/). From what we hear it’s a designer’s dream come true.
-* Some say our main graphic is [mesmerizing](https://x.com/hmncllctv/status/968907474664284160). Nichlas created it using [**3DS Max**](https://www.autodesk.com/products/3ds-max/overview).
-* [**Hugo**](https://gohugo.io/) -- of course.
-* Chris can’t think of modern web development without [**Gulp**](https://gulpjs.com/) & [**Webpack**](https://webpack.js.org/). We used them to add additional build steps such as Browsersync, CSS, JS and SVG optimization.
-* Speaking about adding steps to our build, our lives would be much harder without [**CircleCI**](https://circleci.com/) for continuous deployment and automated testing purposes.
-* We can’t stop raving about [**Algolia**](https://www.algolia.com/). Chris loves it and even wrote a tutorial on [how to implement Algolia](https://forestry.io/blog/search-with-algolia-in-hugo/) into static sites using Hugo’s [Custom Outputs](/templates/output-formats/).
-* [**Cloudinary**](https://cloudinary.com/) is probably one of the easiest ways to get responsive images into your website.
-* We might be a little biased on this one - We think [**Forestry.io**](https://forestry.io/) is a great way to add a content management system with a clean UI on top of your site without interrupting your experience as a developer.
-* For hosting purposes we use the almighty [**AWS**](https://aws.amazon.com/).
-* [**Formspree.io**](https://formspree.io/) is managing our support and enterprise requests.
-* We also use browser cookies and JS to customize our user’s experience and give it a more dynamic feel.
+- Our Norwegian designer Nichlas is in love with [**Sketch**](https://www.sketchapp.com/). From what we hear it's a designer's dream come true.
+- Some say our main graphic is [mesmerizing](https://x.com/hmncllctv/status/968907474664284160). Nichlas created it using [**3DS Max**](https://www.autodesk.com/products/3ds-max/overview).
+- [**Hugo**](https://gohugo.io/) -- of course.
+- Chris can't think of modern web development without [**Gulp**](https://gulpjs.com/) & [**Webpack**](https://webpack.js.org/). We used them to add additional build steps such as Browsersync, CSS, JS and SVG optimization.
+- Speaking about adding steps to our build, our lives would be much harder without [**CircleCI**](https://circleci.com/) for continuous deployment and automated testing purposes.
+- We can't stop raving about [**Algolia**](https://www.algolia.com/). Chris loves it and even wrote a tutorial on [how to implement Algolia](https://forestry.io/blog/search-with-algolia-in-hugo/) into static sites using Hugo's [custom output formats](/configuration/output-formats/).
+- [**Cloudinary**](https://cloudinary.com/) is probably one of the easiest ways to get responsive images into your website.
+- We might be a little biased on this one - We think [**Forestry.io**](https://forestry.io/) is a great way to add a content management system with a clean UI on top of your site without interrupting your experience as a developer.
+- For hosting purposes we use the almighty [**AWS**](https://aws.amazon.com/).
+- [**Formspree.io**](https://formspree.io/) is managing our support and enterprise requests.
+- We also use browser cookies and JS to customize our user's experience and give it a more dynamic feel.
index 3b71fd8bcb915abe4b5b538d85130fe7d03f4b25..fe4f9337e2294e908d68177d142aba51fb27d3e7 100644 (file)
@@ -1,16 +1,9 @@
 ---
-
 title: Godot Tutorials
 date: 2021-01-07
-
 description: "Teaching game development skills with love."
-
-# The URL to the site on the internet.
 siteURL: https://godottutorials.com
-
-# Add credit to the article author. Leave blank or remove if not needed/wanted.
 byline: "[Godot Tutorials](https://godottutorials.com), Web Developer & Game Programmer"
-
 ---
 
 [Godot Tutorials](https://godottutorials.com) started as a way to teach beginners game programming and game development.
index 7ca2b6cefb563d0db21d5a619ed9045ed3d7b905..52c3337bfc6777bc8ec7df2448613b359e9b7f14 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: Hapticmedia Blog
 date: 2019-10-01
-description: "Showcase: \"A simple, but powerful, multilingual blog.\""
+description: 'Showcase: "A simple, but powerful, multilingual blog."'
 siteURL: https://hapticmedia.fr/blog/en/
 byline: "[Cyril Bonnet](https://github.com/monsieurnebo), Web Developer"
 ---
index 7fab742923e79a625160395d49d501b77133bd08..4cded7beb6e097d591d496b9112b36e5b5815b18 100644 (file)
@@ -1,4 +1,3 @@
-
 Hartwell Insurance is an insurance company set up solely to service the Broker community.
 
 By combining **Hugo**, **Service Worker** and **Netlify**, we were able to achieve incredible global site performance.
index 24b4e3a9f1458e0293c84f87936bd9a14801dab6..07ee6182c71353f6cb7da42902827ac4f5251e11 100644 (file)
@@ -1,26 +1,20 @@
 ---
-
 title: Hartwell Insurance
-
 date: 2018-02-09
-
-description: "Showcase: \"Hugo + Netlify + PWA makes for a rapid website.\""
-
+description: 'Showcase: "Hugo + Netlify + PWA makes for a rapid website."'
 siteURL: https://www.hartwell-insurance.com/
-
 byline: "[Trys Mudford](http://www.trysmudford.com), Lead Developer, Tomango"
-
 ---
 
-We’ve just launched a shiny new website for [Hartwell Insurance](https://www.hartwell-insurance.com/) – I’m really proud of it. It was tackled in a different way to most previous Tomango site builds, using some fancy new tools and some vintage web standards.
+We've just launched a shiny new website for [Hartwell Insurance](https://www.hartwell-insurance.com/). I'm really proud of it. It was tackled in a different way to most previous Tomango site builds, using some fancy new tools and some vintage web standards.
 
-It’s a multi-page, single-page (!) website written in Hugo, a static site generator built with performance as a first-class feature. _I’ve outlined a load of benefits to Hugo & static sites [here](https://why-static.netlify.com/), in case you’re interested._
+It's a multi-page, single-page (!) website written in Hugo, a static site generator built with performance as a first-class feature. _I've outlined a load of benefits to Hugo & static sites [here](https://why-static.netlify.com/), in case you're interested._
 
-> **In essence, a static site generator pre-renders the whole site into HTML files and serves them like its 1995.**
+> **In essence, a static site generator pre-renders the whole site into HTML files and serves them like it's 1995.**
 
-There’s no Apache or Node backend that does compilation at runtime, it’s all done at the build step. This means the server; Netlify in this case, only has to do one thing – serve files. Unsurprisingly, serving simple files is VERY quick.
+There's no Apache or Node backend that does compilation at runtime, it's all done at the build step. This means the server; Netlify in this case, only has to do one thing: serve files. Unsurprisingly, serving simple files is VERY quick.
 
-The starter point was the [Victor Hugo](https://github.com/netlify/victor-hugo) repository that Netlify have created. It let me dive in with Hugo, PostCSS, Browsersync and ES6 without setting up any tooling myself – always a win!
+The starter point was the [Victor Hugo](https://github.com/netlify/victor-hugo) repository that Netlify have created. It let me dive in with Hugo, PostCSS, Browsersync and ES6 without setting up any tooling myself---always a win!
 
 I then took all the content from the design file and moved it into Markdown, putting shortcodes in where necessary. This site did need a number of custom shortcodes for the presentational elements like the expanding circles and full width backgrounds. But mostly it was just clean, semantic HTML with some CSS and JS enhancement thrown in.
 
@@ -32,17 +26,17 @@ For the ripple effects on the section headings, I used JS to prepend a `<canvas>
 
 On the Hartwell Profitmaker section, I toyed with the idea of using Vue.js for the calculator, but after giving it some thought, I decided to code in Vanilla. The result, all of the site JS comes in at 3.2KB!
 
-The plan was to host with Netlify and therefore get access to Netlify Forms. It meant spending 0 minutes on getting a backend set up  I could focus fully on the frontend.
+The plan was to host with Netlify and therefore get access to Netlify Forms. It meant spending 0 minutes on getting a backend set up so I could focus fully on the frontend.
 
-Cache invalidation isn’t normally something I spend all that much time thinking about when building a site. But as this site was going to be a Progressive Web App, invalidating files would be important to ensure the site didn’t appear broken when we made changes. As I was using Victor-Hugo, I wasn’t really sure how to best tackle this and sadly spent far too many hours wrangling with Webpack and Gulp files to try and get hashed file names working nicely.
+Cache invalidation isn't normally something I spend all that much time thinking about when building a site. But as this site was going to be a Progressive Web App, invalidating files would be important to ensure the site didn't appear broken when we made changes. As I was using Victor-Hugo, I wasn't really sure how to best tackle this and sadly spent far too many hours wrangling with Webpack and Gulp files to try and get hashed file names working nicely.
 
 Then; while I was waiting for a haircut, I read a [Netlify blog post](https://www.netlify.com/blog/2017/02/23/better-living-through-caching/) on how they do cache invalidation with HTTP2 and it promptly blew my mind.
 
-When you request an asset, they send an ETag in the headers which is a hash of the file. There’s also a header to tell the browser not to trust it’s own cache (which sounds a little bit bonkers).
+When you request an asset, they send an ETag in the headers which is a hash of the file. There's also a header to tell the browser not to trust it's own cache (which sounds a little bit bonkers).
 
 So when you request the page, it opens a persistent HTTP2 connection up (so no new connections for file requests). When it gets to requesting that asset, the browser sends the ETag back to Netlify and they either return nothing if the ETag matches, or the new file with the new ETag. No `app.klfjlkdsfjdslkfjdslkfdsj.js` or `app.js?v=20180112`. Just a clean `app.js` with instant cache invalidation. Amazing.
 
-Finally, the [Service Worker](https://www.hartwell-insurance.com/sw.js) could be added. This turned out to be straightforward as the Netlify cache invalidation system solved most of the pain points. I went for a network-first, cache-fallback setup for both assets and HTML. This does mean flaky speeds are reliant on the page connection time, but given we’re on HTTP2, I’m hoping the persistent connection and tiny ETag size will keep it quick. For online connections, every request is up to date and instantly live after any update. Offline connections fall back to every assets’ last cached state. It seems to work really nicely, and there’s no need for an update prompt if assets have changed.
+Finally, the [Service Worker](https://www.hartwell-insurance.com/sw.js) could be added. This turned out to be straightforward as the Netlify cache invalidation system solved most of the pain points. I went for a network-first, cache-fallback setup for both assets and HTML. This does mean flaky speeds are reliant on the page connection time, but given we're on HTTP2, I'm hoping the persistent connection and tiny ETag size will keep it quick. For online connections, every request is up to date and instantly live after any update. Offline connections fall back to every assets' last cached state. It seems to work really nicely, and there's no need for an update prompt if assets have changed.
 
 ---
 
@@ -52,17 +46,17 @@ The WebPageTest results are looking good. The speed index is 456, 10x smaller th
 
 ![WebPageTest results](hartwell-webpagetest.png)
 
-[TestMySite.io](https://testmysite.io/5a7e1bb2df99531a23c9ad2f/hartwell-insurance.com) is return ~2ms time to first byte from the CDN edge nodes. Lighthouse audits are also very promising. There’s still some improvement to be gained lazy-loading the images and inlining the CSS. I’m less excited about the [second suggestion](http://www.trysmudford.com/css-in-2017/), but I’ll certainly look at some lazy-loading, especially as I’m already using `IntersectionObserver` for some animations.
+[TestMySite.io](https://testmysite.io/5a7e1bb2df99531a23c9ad2f/hartwell-insurance.com) is return ~2ms time to first byte from the CDN edge nodes. Lighthouse audits are also very promising. There's still some improvement to be gained lazy-loading the images and inlining the CSS. I'm less excited about the [second suggestion](http://www.trysmudford.com/css-in-2017/), but I'll certainly look at some lazy-loading, especially as I'm already using `IntersectionObserver` for some animations.
 
 ![Lighthouse results](hartwell-lighthouse.png)
 
-The most encouraging result is how quick the site is around the world. Most Tomango clients (and their customers) are pretty local and almost exclusively UK-based. We have a dedicated server in Surrey that serves our market pretty well. It did take me by surprise just how much slower a connection from the USA, Australia and Japan to our server was. Theyre waiting ~500ms just for the first byte, let alone downloading each asset.
+The most encouraging result is how quick the site is around the world. Most Tomango clients (and their customers) are pretty local and almost exclusively UK-based. We have a dedicated server in Surrey that serves our market pretty well. It did take me by surprise just how much slower a connection from the USA, Australia and Japan to our server was. They're waiting ~500ms just for the first byte, let alone downloading each asset.
 
-[Hartwell Insurance](https://www.hartwell-insurance.com/) are a US company so by putting them on our server, we’d be instantly hampering their local response times by literally seconds. This was one of the main reasons for going with Netlify. They provide global CDN hosting that’s quick from anywhere in the world.
+[Hartwell Insurance](https://www.hartwell-insurance.com/) are a US company so by putting them on our server, we'd be instantly hampering their local response times by literally seconds. This was one of the main reasons for going with Netlify. They provide global CDN hosting that's quick from anywhere in the world.
 
 ---
 
-This project was such a blast to develop, it’s a real pleasure to put new technologies to good use in production, and to see real performance and usability benefits from them. Even using classic web methods of serving directories with files is fun when you’ve been using dynamic systems for a while – there’s something really pure about it.
+This project was such a blast to develop, it's a real pleasure to put new technologies to good use in production, and to see real performance and usability benefits from them. Even using classic web methods of serving directories with files is fun when you've been using dynamic systems for a while---there's something really pure about it.
 
 ---
 
index 6308b34c46bbb4b09adc18b69c0ddd5f35bbb3c5..c6972325f31015aadee00a9aa3dfe5c319f40117 100644 (file)
@@ -1,10 +1,8 @@
 ---
-
 title: KeyCDN
 date: 2020-04-10
-description: "Showcase: \"Hugo has become an integral part of our stack.\""
+description: 'Showcase: "Hugo has become an integral part of our stack."'
 siteURL: https://www.keycdn.com
-
 ---
 
 At KeyCDN one of our primary focuses is on performance. With speed being ingrained in our DNA we knew from the start that we must use a fast static website generator that could meet our requirements. When evaluating the right solution, Hugo met our requirements and we looked no further as it was the fastest and most flexible.
@@ -13,18 +11,18 @@ At KeyCDN one of our primary focuses is on performance. With speed being ingrain
 
 Before our migration to Hugo our website was powered by a PHP-based website that had about 50 pages and a WordPress website that had over 500 posts between our blog and knowledge base. This became harder to maintain as time continued. We felt like we were losing the speed and flexibility that we require. To overcome this we knew we needed to convert our website to be static. This would allow our website to be faster and more secure as it could be delivered by all of our edge locations.
 
-It wasnt an easy task at the beginning, however, after evaluating Hugo and benchmarking it we knew we had found the ideal solution. Hugo was by far the fastest setup and offered an intuitive way to build our entire website exactly as needed. The Go-based templates, shortcodes, and configuration options made it easy to build a complex website.
+It wasn't an easy task at the beginning, however, after evaluating Hugo and benchmarking it we knew we had found the ideal solution. Hugo was by far the fastest setup and offered an intuitive way to build our entire website exactly as needed. The Go-based templates, shortcodes, and configuration options made it easy to build a complex website.
 
-In the fall of 2018 we started the migration and within a couple short months we had built a custom static website with Hugo and migrated all content from our old systems. The simplicity and vast amount of functionality that Hugo offers made this process fast and left our entire team, including all of our writers and developers, happy with the migration. Since migrating to Hugo we haven’t looked back. Hugo has become an integral part of our stack. We’re grateful to all those who have contributed to make Hugo what it is today.
+In the fall of 2018 we started the migration and within a couple short months we had built a custom static website with Hugo and migrated all content from our old systems. The simplicity and vast amount of functionality that Hugo offers made this process fast and left our entire team, including all of our writers and developers, happy with the migration. Since migrating to Hugo we haven't looked back. Hugo has become an integral part of our stack. We're grateful to all those who have contributed to make Hugo what it is today.
 
 ## Technical overview
 
 Below is an overview of what we used with Hugo to build our website:
 
-* [KeyCDN](https://www.keycdn.com) uses a custom theme and is our primary hub for all style sheets and JavaScript. Our other websites, like [KeyCDN Tools](https://tools.keycdn.com), only import the required style sheets and JavaScript.
-* We use [Gulp](https://gulpjs.com) in our build process for many tasks, such as combining, versioning, and compressing our style sheets as well as our JavaScript.
-* Our search is powered by a custom solution that we’ve built. It allows our pages, blog, and knowledge base to be searched. It uses [Axios](https://github.com/axios/axios) to send a `POST` request containing the search query. An index file in JSON generated by Hugo is searched and the results are then returned.
-* Our commenting system is also powered by a custom solution that we’ve built. It uses Axios to send a `GET` request containing the slug to pull the comment thread and a `POST` request containing the name, email address, and comment when submitting a comment.
-* Our contact form is a simple HTML form, which uses Axios as well.
-* Our writers use shortcodes to enhance the capability of Markdown.
-* Our entire website is delivered through KeyCDN using a Pull Zone, which means all of our edge locations are delivering our website.
+- [KeyCDN](https://www.keycdn.com) uses a custom theme and is our primary hub for all style sheets and JavaScript. Our other websites, like [KeyCDN Tools](https://tools.keycdn.com), only import the required style sheets and JavaScript.
+- We use [Gulp](https://gulpjs.com) in our build process for many tasks, such as combining, versioning, and compressing our style sheets as well as our JavaScript.
+- Our search is powered by a custom solution that we've built. It allows our pages, blog, and knowledge base to be searched. It uses [Axios](https://github.com/axios/axios) to send a `POST` request containing the search query. An index file in JSON generated by Hugo is searched and the results are then returned.
+- Our commenting system is also powered by a custom solution that we've built. It uses Axios to send a `GET` request containing the slug to pull the comment thread and a `POST` request containing the name, email address, and comment when submitting a comment.
+- Our contact form is a simple HTML form, which uses Axios as well.
+- Our writers use shortcodes to enhance the capability of Markdown.
+- Our entire website is delivered through KeyCDN using a Pull Zone, which means all of our edge locations are delivering our website.
index 92551dc4711c14bd5bc18a0f7028b6c36715457f..62c547980cdf37429ee9703bcd051c6e90f369a3 100644 (file)
@@ -1,3 +1 @@
-
-
 Let's Encrypt is a free, automated, and open certificate authority (CA), run for the public's benefit. It is a service provided by the [Internet Security Research Group (ISRG)](https://www.abetterinternet.org/).
index e2f8e168ff3db1ecfeeadde8a13f0e8890f2e563..8696cb7add43c025f059b90ff3062c6117a691ce 100644 (file)
@@ -1,13 +1,13 @@
 ---
-title: Lets Encrypt
+title: Let's Encrypt
 date: 2018-03-13
-description: "Showcase: Lessons learned from taking letsencrypt.org to Hugo."
+description: 'Showcase: "Lessons learned from taking letsencrypt.org to Hugo."'
 siteURL: https://letsencrypt.org/
 siteSource: https://github.com/letsencrypt/website
 byline: "[bep](https://github.com/bep), Hugo Lead"
 ---
 
-The **Lets Encrypt website** has a common set of elements: A landing page and some other static info-pages, a document section, a blog, and a documentation section. Having it moved to Hugo was mostly motivated by a _simpler administration and Hugo's [multilingual support](/content-management/multilingual/)_. They already serve HTTPS to more than 60 million domains, and having the documentation available in more languages will increase that reach.[^1]
+The **Let's Encrypt website** has a common set of elements: A landing page and some other static info-pages, a document section, a blog, and a documentation section. Having it moved to Hugo was mostly motivated by a _simpler administration and Hugo's [multilingual support](/content-management/multilingual/)_. They already serve HTTPS to more than 60 million domains, and having the documentation available in more languages will increase that reach.[^1]
 
 {{< x user="letsencrypt" id="971755920639307777" >}}
 
@@ -15,6 +15,4 @@ I helped them port the site from Jekyll to Hugo. There are usually very few surp
 
 That site is bookmarked in many browsers, so preserving the URLs was a must. Hugo's URL handling is very flexible, but there was one challenge. The website has a mix of standard and what we in Hugo call _ugly URLs_ (`https://letsencrypt.org/2017/12/07/looking-forward-to-2018.html`). In Hugo this is handled automatically, and you can turn it on globally or per language. But before Hugo `0.33` you could not configure it for parts of your site. You could set it manually for the relevant pages in front matter -- which is how it was done in Jekyll -- but that would be hard to manage, especially when you start to introduce translations. So, in Hugo 0.33 I added support for _ugly URLs_ per section and also `url` set in front matter for list pages (`https://letsencrypt.org/blog/`).
 
-The lessons learned from this also lead to [disableLanguages](/content-management/multilingual/#disable-a-language) in Hugo `0.34` (a way to turn off languages during translation). And I also registered [this issue](https://github.com/gohugoio/hugo/issues/4463). Once fixed it will make it easier to handle partially translated sites.
-
 [^1]: The work on getting the content translated is in progress.
index 42fa9222958bf30bff2a26afe14d2da57e8a3505..52c7204c140a614e919da82f1eec2f5b853ee8f2 100644 (file)
@@ -1,4 +1,3 @@
-
 **Linode** is a cloud hosting provider that offers high performance SSD Linux servers for your infrastructure needs.
 
 **Hugo** offers the documentation team incredible performance as we scale and continue providing quality Linux tutorials.
index 5a341be8aa8d46ad8ae7b5609bb2b8963f92c4b4..f91c99d50f2083189f63ce0ae27e7e95f30a9ea4 100644 (file)
@@ -1,7 +1,7 @@
 ---
 title: Linode Docs
 date: 2018-02-12
-description: "Showcase: \"Hugo allows us to build thousands of pages in seconds.\""
+description: 'Showcase: "Hugo allows us to build thousands of pages in seconds."'
 siteURL: https://linode.com/docs/
 siteSource: https://github.com/linode/docs
 ---
@@ -12,4 +12,4 @@ As our library grew into thousands of guides, we needed a fast static site gener
 
 Hugo solved a lot of our growing pains with features like shortcodes, customizable URLs, LiveReload, and more. We have already brought our site build time down from minutes to just a few seconds, and we are excited to see what future developments in Hugo will bring.
 
-Thank you to all the [Hugo contributors](https://github.com/gohugoio/hugo/graphs/contributors) and  especially [@bep](https://github.com/bep) for helping us with the adoption of Hugo.
+Thank you to all the [Hugo contributors](https://github.com/gohugoio/hugo/graphs/contributors) and especially [@bep](https://github.com/bep) for helping us with the adoption of Hugo.
index b2f92f08c3f24570546301850085b9dd25931b15..080de69a0d0ac88348136c3100c6f5706dcc4db9 100644 (file)
@@ -1,6 +1,5 @@
-
 **Overmind Studios** is a visual effects studio headquartered in Southern Germany.
 
 The site is built by:
 
-* [Tobias Kummer](https://www.overmind-studios.de/about/)
+- [Tobias Kummer](https://www.overmind-studios.de/about/)
index 3208b2b72c0efb29d99e4a5ec202282ee24807fc..00b09c5be9e110187741f222d2f7e6ba310696ad 100644 (file)
@@ -4,6 +4,7 @@ description: "A fresh start to make things easier in the future."
 siteURL: https://www.overmind-studios.de/
 byline: "[tobkum](https://github.com/tobkum), Co-Founder Overmind Studios"
 ---
+
 After many years of running our site on WordPress, we decided to switch to Hugo.
 
 WordPress is a great CMS for many people, but it has some downsides, especially for those who need a fast, secure, and customizable site. Plugins can become outdated, customization can be difficult, and bloat can slow down page loading times.
index d324833c9f1397ead4fbd6534a68da7cf7ff9f2a..3a8da237741c371d005c68c3975a8c63afdd6bf3 100644 (file)
@@ -1,19 +1,9 @@
 ---
-
 title: PHARMASEAL
 date: 2019-04-29
-
 description: "Pharmaseal website developed using Hugo, Forestry, hosted and deployed by Netlify."
-
-# The URL to the site on the internet.
 siteURL: https://pharmaseal.co/
-
-# Link to the site's Hugo source code if public and you can/want to share.
-# Remove or leave blank if not needed/wanted.
-
-# Add credit to the article author. Leave blank or remove if not needed/wanted.
 byline: "[Roboto Studio](https://roboto.studio), Jonathan Alford"
-
 ---
 
 We wanted to shake the status quo with PHARMASEAL, opting for a fast and scalable website built with Hugo instead of slower monolithic systems the competitors were using.
index e1e426ed26c0c2caf2efa966e7dfe76dbdf83f22..2c8854a8d475734c0626a6ab442894eaa9b19860 100644 (file)
@@ -1,23 +1,9 @@
 ---
-
-# A suitable title for this article.
 title: Quiply Employee Communications App
-
-# Set this to the current date.
 date: 2018-02-13
-
-description: "\"It became immediately clear that we'd use Hugo going forward as it compiles super-fast, is intuitive to use and offers all the features we need.\""
-
-# The URL to the site on the internet.
+description: '"It became immediately clear that we would use Hugo going forward as it compiles super-fast, is intuitive to use, and offers all the features we need."'
 siteURL: https://www.quiply.com
-
-# Link to the site's Hugo source code if public and you can/want to share.
-# Remove or leave blank if not needed/wanted.
-# siteSource: https://github.com/gohugoio/hugoDocs
-
-# Add credit to the article author. Leave blank or remove if not needed/wanted.
 byline: "[Sebastian Schirmer](mailto:sebastian.schirmer@quiply.com), Quiply Co-Founder"
-
 ---
 
 With the launch of our Employee Communications app Quiply we created a very simple and static one-page website to showcase our product.
diff --git a/content/en/showcase/template/bio.md b/content/en/showcase/template/bio.md
deleted file mode 100644 (file)
index de92878..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Add some **general info** about the site here.
-
-The site is built by:
-
-* [Person 1](https://example.org)
-* [Person 1](https://example.org)
diff --git a/content/en/showcase/template/featured-template.png b/content/en/showcase/template/featured-template.png
deleted file mode 100644 (file)
index 4f39013..0000000
Binary files a/content/en/showcase/template/featured-template.png and /dev/null differ
diff --git a/content/en/showcase/template/index.md b/content/en/showcase/template/index.md
deleted file mode 100644 (file)
index abfb080..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Hugo Showcase Template
-date: 2018-02-07
-description: "A short description of this page."
-siteURL: https://gohugo.io/
-siteSource: https://github.com/gohugoio/hugoDocs
-byline: "[bep](https://github.com/bep), Hugo Lead"
----
-Have a **notable Hugo site[^1]**? We would love to feature it in this **Showcase Section**
-
-Please:
-
-1. Fork https://github.com/gohugoio/hugoDocs.
-1. Run `hugo new content showcase/your-site`. This will use the archetype bundle in the [docs repo](https://github.com/gohugoio/hugoDocs/tree/master/archetypes).
-1. Follow the instructions in the newly created page bundle.
-1. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls.
-
-[^1]: We want this to show Hugo in its best light, so this is not for the average Hugo blog. In most cases the answer to "Is my site [notable](https://www.dictionary.com/browse/notable)?" will be obvious, but if in doubt, create an [issue](https://github.com/gohugoio/hugoDocs/issues) with a link and some words, and we can discuss it. But if you have a site with an interesting Hugo story or a company site where the company itself is notable, you are most welcome.
index 052bd93cda34eac7a35337b7d770177d68296302..c90e481634ac1c3b234a31bec0043ea18864902c 100644 (file)
@@ -1,4 +1,3 @@
-
 We help ambitious businesses grow by getting more of the customers they want.
 
 Our new site runs quickly, anywhere in the world, regardless of internet connectivity.
index 6dc1a5c1f1a788b0fab1674ef41823b639d77a83..d07abf92ae9320d94533373c4db50b81525f2294 100644 (file)
@@ -1,17 +1,10 @@
 ---
-
 title: Tomango
-
 date: 2018-05-04
-
-description: "Showcase: \"Tomango site relaunch: Building our JAMstack site\""
-
+description: 'Showcase: "Tomango site relaunch: Building our JAMstack site"'
 siteURL: https://www.tomango.co.uk
-
 siteSource: https://github.com/trys/tomango-2018
-
 byline: "[Trys Mudford](https://www.trysmudford.com), Lead Developer, Tomango"
-
 ---
 
 Hugo is our static site generator (SSG) of choice. It's **really quick**. After using it on a number of [client projects](/showcase/hartwell-insurance/), it became clear that our new site _had_ to be built with Hugo.
index ae18428fb014b3b1d9c3885c41efa65162f4156b..1a1a3c14695dbb750fb661fb24aa703e973d44f6 100644 (file)
@@ -2,18 +2,14 @@
 title: Custom 404 page
 linkTitle: 404 templates
 description: Create a template to render a 404 error page.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 160
-weight: 160
+weight: 190
 ---
 
 To render a 404 error page in the root of your site, create a 404 template in the root of the `layouts` directory. For example:
 
-{{< code file=layouts/404.html >}}
+```go-html-template {file="layouts/404.html"}
 {{ define "main" }}
   <h1>404 Not Found</h1>
   <p>The page you requested cannot be found.</p>
@@ -23,7 +19,7 @@ To render a 404 error page in the root of your site, create a 404 template in th
     </a>
   </p>
 {{ end }}
-{{< /code >}}
+```
 
 For multilingual sites, add the language key to the file name:
 
diff --git a/content/en/templates/_common/_index.md b/content/en/templates/_common/_index.md
deleted file mode 100644 (file)
index 4328d4d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cascade:
-  _build:
-    list: never
-    publishResources: false
-    render: never
----
-
-<!--
-Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
-
-Include the rendered content using the "include" shortcode. 
--->
diff --git a/content/en/templates/_common/filter-sort-group.md b/content/en/templates/_common/filter-sort-group.md
deleted file mode 100644 (file)
index 24bbee9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-_comment: Do not remove front matter.
----
-
-{{% note %}}
-The [page collections quick reference guide] describes methods and functions to filter, sort, and group page collections.
-
-[page collections quick reference guide]: /quick-reference/page-collections/
-{{% /note %}}
index d205c9218e997a0f263cbd42123019f12bced82e..ea293e8e195c76eb8a299ab3cdac31cf30dd56f0 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Templates
-
 description: Create templates to render your content, resources, and data.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: templates-in-this-section
-    parent: templates
-    weight: 10
 weight: 10
 aliases: [/templates/overview/,/templates/content]
 ---
-
-A template is an HTML file with [template actions](g), located within the `layouts` directory of a project, theme, or module. Visit the topics below, in the order presented, to understand template selection and creation.
index 45320e3cfd249b3fbc09dfb34ae32e331532d323..bb6a25b1ef28df7cf2e7d3e5d58e986faeeeee59 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Base templates
 description: The base and block construct allows you to define the outer shell of your master templates (i.e., the chrome of the page).
-categories: [templates,fundamentals]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 50
-weight: 50
-toc: true
+weight: 40
 aliases: [/templates/blocks/,/templates/base-templates-and-blocks/]
 ---
 
@@ -26,7 +21,7 @@ See [Template Lookup Order](/templates/lookup-order/) for details and examples.
 
 The following defines a simple base template at `_default/baseof.html`. As a default template, it is the shell from which all your pages will be rendered unless you specify another `*baseof.html` closer to the beginning of the lookup order.
 
-{{< code file=layouts/_default/baseof.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <!DOCTYPE html>
 <html>
   <head>
@@ -46,13 +41,13 @@ The following defines a simple base template at `_default/baseof.html`. As a def
     {{ end }}
   </body>
 </html>
-{{< /code >}}
+```
 
 ## Override the base template
 
 The default list template will inherit all of the code defined above and can then implement its own `"main"` block from:
 
-{{< code file=layouts/_default/list.html >}}
+```go-html-template {file="layouts/_default/list.html"}
 {{ define "main" }}
   <h1>Posts</h1>
   {{ range .Pages }}
@@ -62,25 +57,25 @@ The default list template will inherit all of the code defined above and can the
     </article>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
-This replaces the contents of our (basically empty) "main" block with something useful for the list template. In this case, we didn't define a `"title"` block, so the contents from our base template remain unchanged in lists.
+This replaces the contents of our (basically empty) `main` block with something useful for the list template. In this case, we didn't define a `title` block, so the contents from our base template remain unchanged in lists.
 
-{{% note %}}
-Code that you put outside the block definitions *can* break your layout. This even includes HTML comments. For example:
+> [!warning]
+> Only [template comments] are allowed outside a block's `define` and `end` statements. Avoid placing any other text, including HTML comments, outside these boundaries. Doing so will cause rendering issues, potentially resulting in a blank page. See the example below.
 
-```go-html-template
-<!-- Seemingly harmless HTML comment..that will break your layout at build -->
+```go-html-template {file="layouts/_default/do-not-do-this.html"}
+<div>This div element broke your template.</div>
 {{ define "main" }}
-...your code here
+  <h2>{{ .Title }}</h2>
+  {{ .Content }}
 {{ end }}
+<!-- An HTML comment will break your template too. -->
 ```
-[See this thread from the Hugo discussion forums.](https://discourse.gohugo.io/t/baseof-html-block-templates-and-list-types-results-in-empty-pages/5612/6)
-{{% /note %}}
 
-The following shows how you can override both the `"main"` and `"title"` block areas from the base template with code unique to your default [single template]:
+The following shows how you can override both the `main` and `title` block areas from the base template with code unique to your default [single template]:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ define "title" }}
   <!-- This will override the default value set in baseof.html; i.e., "{{ .Site.Title }}" in the original example-->
   {{ .Title }} &ndash; {{ .Site.Title }}
@@ -89,6 +84,7 @@ The following shows how you can override both the `"main"` and `"title"` block a
   <h1>{{ .Title }}</h1>
   {{ .Content }}
 {{ end }}
-{{< /code >}}
+```
 
 [single template]: /templates/types/#single
+[template comments]: /templates/introduction/#comments
index 7b995ece5b17d9e2a962bd47cd3c1ace9235ddad..f001e400e09aaf005f7175b8c956ffd849c8a80c 100644 (file)
@@ -1,21 +1,16 @@
 ---
 title: Content view templates
 description: Hugo can render alternative views of your content, useful in list and summary views.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 120
-weight: 120
-toc: true
+weight: 110
 aliases: [/templates/views/]
 ---
 
 The following are common use cases for content views:
 
-* You want content of every type to be shown on the home page but only with limited [summary views][summaries].
-* You only want a bulleted list of your content in a [taxonomy template]. Views make this very straightforward by delegating the rendering of each different type of content to the content itself.
+- You want content of every type to be shown on the home page but only with limited [summary views][summaries].
+- You only want a bulleted list of your content in a [taxonomy template]. Views make this very straightforward by delegating the rendering of each different type of content to the content itself.
 
 ## Create a content view
 
@@ -46,11 +41,11 @@ The following is the lookup order for content views ordered by specificity.
 
 ## Example: content view inside a list
 
-### `list.html`
+### list.html
 
 In this example, `.Render` is passed into the template to call the [render function][render]. `.Render` is a special function that instructs content to render itself with the view template provided as the first argument. In this case, the template is going to render the `summary.html` view that follows:
 
-{{< code file=layouts/_default/list.html >}}
+```go-html-template {file="layouts/_default/list.html"}
 <main id="main">
   <div>
     <h1 id="title">{{ .Title }}</h1>
@@ -59,13 +54,13 @@ In this example, `.Render` is passed into the template to call the [render funct
     {{ end }}
   </div>
 </main>
-{{< /code >}}
+```
 
-### `summary.html`
+### summary.html
 
 Hugo passes the `Page` object to the following `summary.html` view template.
 
-{{< code file=layouts/_default/summary.html >}}
+```go-html-template {file="layouts/_default/summary.html"}
 <article class="post">
   <header>
     <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
@@ -76,18 +71,18 @@ Hugo passes the `Page` object to the following `summary.html` view template.
   <a href='{{ .RelPermalink }}'>Read&nbsp;more&nbsp;&raquo;</a>
   </footer>
 </article>
-{{< /code >}}
+```
 
-### `li.html`
+### li.html
 
 Continuing on the previous example, we can change our render function to use a smaller `li.html` view by changing the argument in the call to the `.Render` function (i.e., `{{ .Render "li" }}`).
 
-{{< code file=layouts/_default/li.html >}}
+```go-html-template {file="layouts/_default/li.html"}
 <li>
   <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
   <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 </li>
-{{< /code >}}
+```
 
 [render]: /methods/page/render/
 [single template]: /templates/types/#single
index 2e571256eedbcf5ffbe3cabc9214ce39066d94c9..198136393ee082e11df7ee9bdab897356310d459 100644 (file)
@@ -1,33 +1,21 @@
 ---
 title: Embedded templates
 description: Hugo provides embedded templates for common use cases.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 200
-weight: 200
-toc: true
+weight: 170
 aliases: [/templates/internal]
 ---
 
 ## Disqus
 
-{{% note %}}
-To override Hugo's embedded Disqus template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "disqus.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl disqus %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded Disqus template, copy the [source code]({{% eturl disqus %}}) to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "disqus.html" . }}`
 
 Hugo includes an embedded template for [Disqus], a popular commenting system for both static and dynamic websites. To effectively use Disqus, secure a Disqus "shortname" by [signing up] for the free service.
 
-[Disqus]: https://disqus.com
-[signing up]: https://disqus.com/profile/signup/
-
 To include the embedded template:
 
 ```go-html-template
@@ -38,7 +26,7 @@ To include the embedded template:
 
 To use Hugo's Disqus template, first set up a single configuration value:
 
-{{< code-toggle file="hugo" >}}
+{{< code-toggle file=hugo >}}
 [services.disqus]
 shortname = 'your-disqus-shortname'
 {{</ code-toggle >}}
@@ -66,19 +54,13 @@ disable
 
 ## Google Analytics
 
-{{% note %}}
-To override Hugo's embedded Google Analytics template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "google_analytics.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl google_analytics %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded Google Analytics template, copy the [source code]({{% eturl google_analytics %}}) to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "google_analytics.html" . }}`
 
 Hugo includes an embedded template supporting [Google Analytics 4].
 
-[Google Analytics 4]: https://support.google.com/analytics/answer/10089681
-
 To include the embedded template:
 
 ```go-html-template
@@ -110,14 +92,10 @@ respectDoNotTrack
 
 ## Open Graph
 
-{{% note %}}
-To override Hugo's embedded Open Graph template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "opengraph.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl opengraph %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded Open Graph template, copy the [source code]({{% eturl opengraph %}}) to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "opengraph.html" . }}`
 
 Hugo includes an embedded template for the [Open Graph protocol](https://ogp.me/), metadata that enables a page to become a rich object in a social graph.
 This format is used for Facebook and some other sites.
@@ -169,19 +147,13 @@ If using YouTube this will produce a og:video tag like `<meta property="og:video
 
 ## Schema
 
-{{% note %}}
-To override Hugo's embedded Schema template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "schema.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl schema %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded Schema template, copy the [source code]({{% eturl schema %}}) to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "schema.html" . }}`
 
 Hugo includes an embedded template to render [microdata] `meta` elements within the `head` element of your templates.
 
-[microdata]: https://html.spec.whatwg.org/multipage/microdata.html#microdata
-
 To include the embedded template:
 
 ```go-html-template
@@ -190,14 +162,10 @@ To include the embedded template:
 
 ## X (Twitter) Cards
 
-{{% note %}}
-To override Hugo's embedded Twitter Cards template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "twitter_cards.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl twitter_cards %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded Twitter Cards template, copy the [source code]({{% eturl twitter_cards %}}) to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "twitter_cards.html" . }}`
 
 Hugo includes an embedded template for [X (Twitter) Cards](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/abouts-cards),
 metadata used to attach rich media to Tweets linking to your site.
@@ -218,21 +186,21 @@ Hugo's X (Twitter) Card template is configured using a mix of configuration sett
   description = "Text about my cool site"
 {{</ code-toggle >}}
 
-{{< code-toggle file=content/blog/my-post.md >}}
+{{< code-toggle file=content/blog/my-post.md fm=true >}}
 title = "Post title"
 description = "Text about this post"
 images = ["post-cover.png"]
 {{</ code-toggle >}}
 
 If [page bundles](/content-management/page-bundles/) are used and the `images` array is empty or undefined, images with file names matching `*feature*`, `*cover*`, or `*thumbnail*` are used for image metadata.
-If no image resources with those names are found, the images defined in the [site config](/getting-started/configuration/) are used instead.
+If no image resources with those names are found, the images defined in the [site config](/configuration/) are used instead.
 If no images are found at all, then an image-less Twitter `summary` card is used instead of `summary_large_image`.
 
 Hugo uses the page title and description for the card's title and description fields. The page summary is used if no description is given.
 
 Set the value of `twitter:site` in your site configuration:
 
-{{< code-toggle file="hugo" copy=false >}}
+{{< code-toggle file=hugo >}}
 [params.social]
 twitter = "GoHugoIO"
 {{</ code-toggle >}}
@@ -242,3 +210,9 @@ NOTE: The `@` will be added for you
 ```html
 <meta name="twitter:site" content="@GoHugoIO"/>
 ```
+
+[`partial`]: /functions/partials/include/
+[Disqus]: https://disqus.com
+[Google Analytics 4]: https://support.google.com/analytics/answer/10089681
+[microdata]: https://html.spec.whatwg.org/multipage/microdata.html#microdata
+[signing up]: https://disqus.com/profile/signup/
index 18114eb0f4db316ea50bfe277396f7e06a40ec18..937a4a5a87334b20aced23a799fe3d3851e2661a 100644 (file)
@@ -1,41 +1,33 @@
 ---
 title: Home page templates
 description: The home page of a website is often formatted differently than the other pages. For this reason, Hugo makes it easy for you to define your new site's home page as a unique template.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 60
-weight: 60
-toc: true
+weight: 50
 aliases: [/layout/homepage/,/templates/homepage-template/,/templates/homepage/]
 ---
 
 ## Introduction
 
-A home page template is used to render your site's home page, and is the only template required for a single-page website.  For example, the home page template below inherits the site's shell from the base template and renders the home page content, such as a list of other pages.
+A home page template is used to render your site's home page, and is the only template required for a single-page website. For example, the home page template below inherits the site's shell from the base template and renders the home page content, such as a list of other pages.
 
-{{< code file=layouts/_default/home.html >}}
+```go-html-template {file="layouts/_default/home.html"}
 {{ define "main" }}
   {{ .Content }}
   {{ range site.RegularPages }}
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
-{{% include "templates/_common/filter-sort-group.md" %}}
+{{% include "/_common/filter-sort-group.md" %}}
 
 ## Lookup order
 
 Hugo's [template lookup order] determines the template path, allowing you to create unique templates for any page.
 
-[template lookup order]: /templates/lookup-order/#home-templates
-
-{{% note %}}
-You must have thorough understanding of the template lookup order when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format.
-{{% /note %}}
+> [!note]
+> You must have thorough understanding of the template lookup order when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format.
 
 ## Content and front matter
 
@@ -53,7 +45,7 @@ params:
 
 The home page template below inherits the site's shell from the base template, renders the subtitle and content as defined in the&nbsp;`_index.md`&nbsp;file, then renders of list of the site's [regular pages](g).
 
-{{< code file=layouts/_default/home.html >}}
+```go-html-template {file="layouts/_default/home.html"}
 {{ define "main" }}
   <h3>{{ .Params.Subtitle }}</h3>
   {{ .Content }}
@@ -61,4 +53,6 @@ The home page template below inherits the site's shell from the base template, r
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
+
+[template lookup order]: /templates/lookup-order/#home-templates
index b68ecf9259a9950e828e8489eb18f9fb96cbf3f9..8898ee45691caa8e92aae79b3c9ee642970f2bd0 100644 (file)
@@ -1,34 +1,22 @@
 ---
 title: Introduction to templating
 linkTitle: Introduction
-description: Create templates to render your content, resources, and data.
-categories: [templates,fundamentals]
+description: An introduction to Hugo's templating syntax.
+categories: []
 keywords: []
-menu:
-  docs:
-    identifier: templates-introduction
-    parent: templates
-    weight: 20
-weight: 20
-toc: true
+weight: 10
 ---
 
-A template is a file in the `layouts` directory of a project, theme, or module. Templates use [variables] , [functions], and [methods] to transform your content, resources, and data into a published page.
+{{% glossary-term template %}}
 
-[functions]: /functions/
-[methods]: /methods/
-[variables]: #variables
-
-{{% note %}}
-Hugo uses Go's [text/template] and [html/template] packages.
+Templates use [variables], [functions], and [methods] to transform your content, resources, and data into a published page.
 
-The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection.
-
-By default, Hugo uses the html/template package when rendering HTML files.
-
-[text/template]: https://pkg.go.dev/text/template
-[html/template]: https://pkg.go.dev/html/template
-{{% /note %}}
+> [!note]
+> Hugo uses Go's [text/template] and [html/template] packages.
+>
+> The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection.
+>
+> By default, Hugo uses the html/template package when rendering HTML files.
 
 For example, this HTML template initializes the `$v1` and `$v2` variables, then displays them and their product within an HTML paragraph.
 
@@ -38,9 +26,7 @@ For example, this HTML template initializes the `$v1` and `$v2` variables, then
 <p>The product of {{ $v1 }} and {{ $v2 }} is {{ mul $v1 $v2 }}.</p>
 ```
 
-While HTML templates are the most common, you can create templates for any [output format] including CSV, JSON, RSS, and plain text.
-
-[output format]: /templates/output-formats/
+While HTML templates are the most common, you can create templates for any [output format](g) including CSV, JSON, RSS, and plain text.
 
 ## Context
 
@@ -52,21 +38,15 @@ For example, a template for a single page receives a `Page` object, and the `Pag
 
 Within a template, the dot (`.`) represents the current context.
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 <h2>{{ .Title }}</h2>
-{{< /code >}}
+```
 
 In the example above the dot represents the `Page` object, and we call its [`Title`] method to return the title as defined in [front matter].
 
-[front matter]: /content-management/front-matter/
-[`Title`]: /methods/page/title
-
 The current context may change within a template. For example, at the top of a template the context might be a `Page` object, but we rebind the context to another value or object within [`range`] or [`with`] blocks.
 
-[`range`]: /functions/go-template/range/
-[`with`]: /functions/go-template/with/
-
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 <h2>{{ .Title }}</h2>
 
 {{ range slice "foo" "bar" }}
@@ -76,7 +56,7 @@ The current context may change within a template. For example, at the top of a t
 {{ with "baz" }}
   <p>{{ . }}</p>
 {{ end }}
-{{< /code >}}
+```
 
 In the example above, the context changes as we `range` through the [slice](g) of values. In the first iteration the context is "foo", and in the second iteration the context is "bar". Inside of the `with` block the context is "baz". Hugo renders the above to:
 
@@ -91,11 +71,11 @@ In the example above, the context changes as we `range` through the [slice](g) o
 
 Within a `range` or `with` block you can access the context passed into the template by prepending a dollar sign (`$`) to the dot:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ with "foo" }}
   <p>{{ $.Title }} - {{ . }}</p>
 {{ end }}
-{{< /code >}}
+```
 
 Hugo renders this to:
 
@@ -103,9 +83,8 @@ Hugo renders this to:
 <p>My Page Title - foo</p>
 ```
 
-{{% note %}}
-Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context.
-{{% /note %}}
+> [!note]
+> Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context.
 
 ## Actions
 
@@ -113,12 +92,12 @@ In the examples above the paired opening and closing braces represent the beginn
 
 A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), variables, functions, and methods.
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ $convertToLower := true }}
 {{ if $convertToLower }}
   <h2>{{ strings.ToLower .Title }}</h2>
 {{ end }}
-{{< /code >}}
+```
 
 In the example above:
 
@@ -140,12 +119,12 @@ Hugo renders the above to:
 
 Notice the blank lines and indentation in the previous example? Although irrelevant in production when you typically minify the output, you can remove the adjacent whitespace by using template action delimiters with hyphens:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{- $convertToLower := true -}}
 {{- if $convertToLower -}}
   <h2>{{ strings.ToLower .Title }}</h2>
 {{- end -}}
-{{< /code >}}
+```
 
 Hugo renders this to:
 
@@ -178,9 +157,8 @@ These are also equivalent:
 {{ 5 | add 2 | mul 6 }} → 42
 ```
 
-{{% note %}}
-Remember that the piped value becomes the final argument to the function or method to which you are piping.
-{{% /note %}}
+> [!note]
+> Remember that the piped value becomes the final argument to the function or method to which you are piping.
 
 ### Line splitting
 
@@ -225,8 +203,6 @@ Variables initialized inside of an `if`, `range`, or `with` block are scoped to
 
 With variables that represent a slice or map, use the [`index`] function to return the desired value.
 
-[`index`]: /functions/collections/indexfunction/
-
 ```go-html-template
 {{ $slice := slice "foo" "bar" "baz" }}
 {{ index $slice 2 }} → baz
@@ -235,9 +211,8 @@ With variables that represent a slice or map, use the [`index`] function to retu
 {{ index $map "c" }} → baz
 ```
 
-{{% note %}}
-Slices and arrays are zero-based; element 0 is the first element.
-{{% /note %}}
+> [!note]
+> Slices and arrays are zero-based; element 0 is the first element.
 
 With variables that represent a map or object, [chain](g) identifiers to return the desired value or to access the desired method.
 
@@ -249,9 +224,8 @@ With variables that represent a map or object, [chain](g) identifiers to return
 {{ $homePage.Title }} → My Homepage
 ```
 
-{{% note %}}
-As seen above, object and method names are capitalized. Although not required, to avoid confusion we recommend beginning variable and map key names with a lowercase letter or underscore.
-{{% /note %}}
+> [!note]
+> As seen above, object and method names are capitalized. Although not required, to avoid confusion we recommend beginning variable and map key names with a lowercase letter or underscore.
 
 ## Functions
 
@@ -259,12 +233,8 @@ Used within a template action, a function takes one or more arguments and return
 
 Go's text/template and html/template packages provide a small set of functions, operators, and statements for general use. See the [go-templates] section of the function documentation for details.
 
-[go-templates]: /functions/go-template/
-
 Hugo provides hundreds of custom [functions] categorized by namespace. For example, the `strings` namespace includes these and other functions:
 
-[functions]: /functions
-
 Function|Alias
 :--|:--
 [`strings.ToLower`](/functions/strings/tolower)|`lower`
@@ -285,10 +255,6 @@ Used within a template action and associated with an object, a method takes zero
 
 The most commonly accessed objects are the [`Page`] and [`Site`] objects. This is a small sampling of the [methods] available to each object.
 
-[`Site`]: /methods/site/
-[`Page`]: /methods/page/
-[methods]: /methods/
-
 Object|Method|Description
 :--|:--|:--
 `Page`|[`Date`](methods/page/date/)|Returns the date of the given page.
@@ -300,34 +266,31 @@ Object|Method|Description
 
 Chain the method to its object with a dot (`.`) as shown below, remembering that the leading dot represents the [current context].
 
-[current context]: #current-context
-
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ .Site.Title }} → My Site Title
 {{ .Page.Title }} → My Page Title
-{{< /code >}}
+```
 
 The context passed into most templates is a `Page` object, so this is equivalent to the previous example:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ .Site.Title }} → My Site Title
 {{ .Title }} → My Page Title
-{{< /code >}}
+```
 
 Some methods take an argument. Separate the argument from the method with a space. For example:
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ $page := .Page.GetPage "/books/les-miserables" }}
 {{ $page.Title }} → Les Misérables
-{{< /code >}}
+```
 
 ## Comments
 
-{{% note %}}
-Do not attempt to use HTML comment delimiters to comment out template code.
-
-Hugo strips HTML comments when rendering a page, but first evaluates any template code within the HTML comment delimiters. Depending on the template code within the HTML comment delimiters, this could cause unexpected results or fail the build.
-{{% /note %}}
+> [!note]
+> Do not attempt to use HTML comment delimiters to comment out template code.
+>
+> Hugo strips HTML comments when rendering a page, but first evaluates any template code within the HTML comment delimiters. Depending on the template code within the HTML comment delimiters, this could cause unexpected results or fail the build.
 
 Template comments are similar to template actions. Paired opening and closing braces represent the beginning and end of a comment. For example:
 
@@ -353,8 +316,6 @@ You may not nest one comment inside of another.
 
 To render an HTML comment, pass a string through the [`safeHTML`] template function. For example:
 
-[`safeHTML`]: /functions/safe/html
-
 ```go-html-template
 {{ "<!-- I am an HTML comment. -->" | safeHTML }}
 {{ printf "<!-- This is the %s site. -->" .Site.Title | safeHTML }}
@@ -364,8 +325,6 @@ To render an HTML comment, pass a string through the [`safeHTML`] template funct
 
 Use the [`template`] function to include one or more of Hugo's [embedded templates]:
 
-[embedded templates]: /templates/embedded/
-
 ```go-html-template
 {{ template "_internal/google_analytics.html" . }}
 {{ template "_internal/opengraph" . }}
@@ -374,14 +333,8 @@ Use the [`template`] function to include one or more of Hugo's [embedded templat
 {{ template "_internal/twitter_cards.html" . }}
 ```
 
-[`partial`]: /functions/partials/include/
-[`partialCached`]: /functions/partials/includecached/
-[`template`]: /functions/go-template/template/
-
 Use the [`partial`] or [`partialCached`] function to include one or more [partial templates]:
 
-[partial templates]: /templates/partial
-
 ```go-html-template
 {{ partial "breadcrumbs.html" . }}
 {{ partialCached "css.html" . }}
@@ -389,24 +342,17 @@ Use the [`partial`] or [`partialCached`] function to include one or more [partia
 
 Create your partial templates in the layouts/partials directory.
 
-{{% note %}}
-In the examples above, note that we are passing the current context (the dot) to each of the templates.
-{{% /note %}}
+> [!note]
+> In the examples above, note that we are passing the current context (the dot) to each of the templates.
 
 ## Examples
 
 This limited set of contrived examples demonstrates some of concepts described above. Please see the [functions], [methods], and [templates] documentation for specific examples.
 
-[templates]: /templates/
-
 ### Conditional blocks
 
 See documentation for [`if`], [`else`], and [`end`].
 
-[`if`]: /functions/go-template/if/
-[`else`]: /functions/go-template/else/
-[`end`]: /functions/go-template/end/
-
 ```go-html-template
 {{ $var := 42 }}
 {{ if eq $var 6 }}
@@ -424,9 +370,6 @@ See documentation for [`if`], [`else`], and [`end`].
 
 See documentation for [`and`] and [`or`].
 
-[`and`]: /functions/go-template/and
-[`or`]: /functions/go-template/or
-
 ```go-html-template
 {{ $v1 := true }}
 {{ $v2 := false }}
@@ -448,8 +391,6 @@ See documentation for [`and`] and [`or`].
 
 See documentation for [`range`], [`else`], and [`end`].
 
-[`range`]: /functions/go-template/range/
-
 ```go-html-template
 {{ $s := slice "foo" "bar" "baz" }}
 {{ range $s }}
@@ -461,8 +402,6 @@ See documentation for [`range`], [`else`], and [`end`].
 
 Use the [`seq`] function to loop a specified number of times:
 
-[`seq`]: /functions/collections/seq
-
 ```go-html-template
 {{ $total := 0 }}
 {{ range seq 4 }}
@@ -475,8 +414,6 @@ Use the [`seq`] function to loop a specified number of times:
 
 See documentation for [`with`], [`else`], and [`end`].
 
-[`with`]: /functions/go-template/with/
-
 ```go-html-template
 {{ $var := "foo" }}
 {{ with $var }}
@@ -534,21 +471,65 @@ Access the custom site parameters by chaining the identifiers:
 
 See documentation for the [`Params`](/methods/page/params/) method on a `Page` object.
 
-With this front matter:
+By way of example, consider this front matter:
 
-{{< code-toggle file=content/news/annual-conference.md >}}
+{{< code-toggle file=content/annual-conference.md fm=true >}}
 title = 'Annual conference'
 date = 2023-10-17T15:11:37-07:00
 [params]
 display_related = true
+key-with-hyphens = 'must use index function'
 [params.author]
   email = 'jsmith@example.org'
   name = 'John Smith'
 {{< /code-toggle >}}
 
-Access the custom page parameters by chaining the identifiers:
+The `title` and `date` fields are standard [front matter fields], while the other fields are user-defined.
+
+Access the custom fields by [chaining](g) the [identifiers](g) when needed:
 
 ```go-html-template
 {{ .Params.display_related }} → true
+{{ .Params.author.email }} → jsmith@example.org
 {{ .Params.author.name }} → John Smith
 ```
+
+In the template example above, each of the keys is a valid identifier. For example, none of the keys contains a hyphen. To access a key that is not a valid identifier, use the [`index`] function:
+
+```go-html-template
+{{ index .Params "key-with-hyphens" }} → must use index function
+```
+
+[`and`]: /functions/go-template/and
+[`else`]: /functions/go-template/else/
+[`end`]: /functions/go-template/end/
+[`if`]: /functions/go-template/if/
+[`index`]: /functions/collections/indexfunction/
+[`index`]: /functions/collections/indexfunction/
+[`or`]: /functions/go-template/or
+[`Page`]: /methods/page/
+[`partial`]: /functions/partials/include/
+[`partialCached`]: /functions/partials/includecached/
+[`range`]: /functions/go-template/range/
+[`range`]: /functions/go-template/range/
+[`safeHTML`]: /functions/safe/html
+[`seq`]: /functions/collections/seq
+[`Site`]: /methods/site/
+[`template`]: /functions/go-template/template/
+[`Title`]: /methods/page/title
+[`with`]: /functions/go-template/with/
+[`with`]: /functions/go-template/with/
+[current context]: #current-context
+[embedded templates]: /templates/embedded/
+[front matter]: /content-management/front-matter/
+[front matter fields]: /content-management/front-matter/#fields
+[functions]: /functions/
+[functions]: /functions
+[go-templates]: /functions/go-template/
+[html/template]: https://pkg.go.dev/html/template
+[methods]: /methods/
+[methods]: /methods/
+[partial templates]: /templates/partial
+[templates]: /templates/
+[text/template]: https://pkg.go.dev/text/template
+[variables]: #variables
index c1a7b2676915262d47816256beb0efd5a14ae241..518900797b5895f363686827090ce31b6d66c2e7 100644 (file)
@@ -2,14 +2,9 @@
 title: Template lookup order
 linkTitle: Lookup order
 description: Hugo uses the rules below to select a template for a given page, starting from the most specific.
-categories: [templates,fundamentals]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 40
-weight: 40
-toc: true
+weight: 20
 ---
 
 ## Lookup rules
@@ -23,7 +18,7 @@ Layout
 : Can be set in front matter.
 
 Output Format
-: See [Custom Output Formats](/templates/output-formats). An output format has both a `name` (e.g. `rss`, `amp`, `html`) and a `suffix` (e.g. `xml`, `html`). We prefer matches with both (e.g. `index.amp.html`), but look for less specific templates.
+: See [configure output formats](/configuration/output-formats/). An output format has both a `name` (e.g. `rss`, `amp`, `html`) and a `suffix` (e.g. `xml`, `html`). We prefer matches with both (e.g. `index.amp.html`), but look for less specific templates.
 
 Note that if the output format's Media Type has more than one suffix defined, only the first is considered.
 
@@ -36,9 +31,8 @@ Type
 Section
 : Is relevant for `section`, `taxonomy` and `term` types.
 
-{{% note %}}
-Templates can live in either the project's or the themes' `layout` directories, and the most specific templates will be chosen. Hugo will interleave the lookups listed below, finding the most specific one either in the project or themes.
-{{% /note %}}
+> [!note]
+> Templates can live in either the project's or the themes' `layout` directories, and the most specific templates will be chosen. Hugo will interleave the lookups listed below, finding the most specific one either in the project or themes.
 
 ## Target a template
 
@@ -62,7 +56,7 @@ layouts/
 
 But the contact page probably has a form and requires a different template. In the front matter specify `layout`:
 
-{{< code-toggle file=content/contact.md >}}
+{{< code-toggle file=content/contact.md fm=true >}}
 title = 'Contact'
 layout = 'contact'
 {{< /code-toggle >}}
@@ -78,12 +72,12 @@ layouts/
 
 As a content type, the word `page` is vague. Perhaps `miscellaneous` would be better. Add `type` to the front matter of each page:
 
-{{< code-toggle file=content/about.md >}}
+{{< code-toggle file=content/about.md fm=true >}}
 title = 'About'
 type = 'miscellaneous'
 {{< /code-toggle >}}
 
-{{< code-toggle file=content/contact.md >}}
+{{< code-toggle file=content/contact.md fm=true >}}
 title = 'Contact'
 type = 'miscellaneous'
 layout = 'contact'
index bd0bc5569a6f0499db78c65376ffc1f5ea49e1a4..4ff4232551216a4617e634fa91b8532301bf5c70 100644 (file)
@@ -1,15 +1,9 @@
 ---
-title: Menus
+title: Menu templates
 description: Create templates to render one or more menus.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    identifier: templates-menu
-    parent: templates
-    weight: 180
-weight: 180
-toc: true
+weight: 150
 aliases: [/templates/menus/,/templates/menu-templates/]
 ---
 
@@ -29,7 +23,7 @@ The example below handles every combination.
 
 This partial template recursively "walks" a menu structure, rendering a localized, accessible nested list.
 
-{{< code file=layouts/partials/menu.html copy=true >}}
+```go-html-template {file="layouts/partials/menu.html" copy=true}
 {{- $page := .page }}
 {{- $menuID := .menuID }}
 
@@ -72,14 +66,14 @@ This partial template recursively "walks" a menu structure, rendering a localize
     </li>
   {{- end }}
 {{- end }}
-{{< /code >}}
+```
 
 Call the partial above, passing a menu ID and the current page in context.
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
 {{ partial "menu.html" (dict "menuID" "footer" "page" .) }}
-{{< /code >}}
+```
 
 ## Page references
 
@@ -87,7 +81,7 @@ Regardless of how you [define menu entries], an entry associated with a page has
 
 This simplistic example renders a page parameter named `version` next to each entry's `name`. Code defensively using `with` or `if` to handle entries where (a) the entry points to an external resource, or (b) the `version` parameter is not defined.
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{- range site.Menus.main }}
   <a href="{{ .URL }}">
     {{ .Name }}
@@ -98,7 +92,7 @@ This simplistic example renders a page parameter named `version` next to each en
     {{- end }}
   </a>
 {{- end }}
-{{< /code >}}
+```
 
 ## Menu entry parameters
 
@@ -109,13 +103,13 @@ When you define menu entries [in site configuration] or [in front matter], you c
 
 This simplistic example renders a `class` attribute for each anchor element. Code defensively using `with` or `if` to handle entries where `params.class` is not defined.
 
-{{< code file=layouts/partials/menu.html >}}
+```go-html-template {file="layouts/partials/menu.html"}
 {{- range site.Menus.main }}
   <a {{ with .Params.class -}} class="{{ . }}" {{ end -}} href="{{ .URL }}">
     {{ .Name }}
   </a>
 {{- end }}
-{{< /code >}}
+```
 
 ## Localize
 
@@ -127,7 +121,7 @@ Hugo provides two methods to localize your menu entries. See [multilingual].
 [in front matter]: /content-management/menus/#define-in-front-matter
 [in site configuration]: /content-management/menus/#define-in-site-configuration
 [localize the menu entries]: /content-management/multilingual/#menus
-[menu entry defined in front matter]: /content-management/menus/#example-front-matter
-[menu entry defined in site configuration]: /content-management/menus/#example-site-configuration
+[menu entry defined in front matter]: /content-management/menus/#example
+[menu entry defined in site configuration]: /configuration/menus
 [menu methods]: /methods/menu/
 [multilingual]: /content-management/multilingual/#menus
diff --git a/content/en/templates/output-formats.md b/content/en/templates/output-formats.md
deleted file mode 100644 (file)
index c81a812..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
----
-title: Custom output formats
-description: Hugo can output content in multiple formats, including calendar events, e-book formats, Google AMP, and JSON search indexes, or any custom text format.
-categories: [templates,fundamentals]
-keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 210
-weight: 210
-toc: true
-aliases: [/templates/outputs/,/extras/output-formats/,/content-management/custom-outputs/]
----
-
-This page describes how to properly configure your site with the media types and output formats, as well as where to create your templates for your custom outputs.
-
-## Media types
-
-A [media type] (formerly known as a MIME type) is a two-part identifier for file formats and format contents transmitted on the internet.
-
-This is the full set of built-in media types in Hugo:
-
-{{< datatable "config" "mediaTypes" "_key" "suffixes" >}}
-
-Notes:
-
-- It is possible to add custom media types or change the defaults; e.g., if you want to change the suffix for `text/html` to `asp`.
-- `Suffixes` are the values that will be used for URLs and file names for that media type in Hugo.
-- The `Type` is the identifier that must be used when defining new/custom `Output Formats` (see below).
-- The full set of media types will be registered in Hugo's built-in development server to make sure they are recognized by the browser.
-
-To add or modify a media type, define it in a `mediaTypes` section in your [site configuration], either for all sites or for a given language.
-
-{{< code-toggle file=hugo >}}
-[mediaTypes]
-  [mediaTypes."text/enriched"]
-  suffixes = ["enr"]
-  [mediaTypes."text/html"]
-  suffixes = ["asp"]
-{{</ code-toggle >}}
-
-The above example adds one new media type, `text/enriched`, and changes the suffix for the built-in `text/html` media type.
-
-These media types are configured for your output formats. If you want to redefine one of Hugo's default output formats, you also need to redefine the media type. So, if you want to change the suffix of the `HTML` output format from `html` (default) to `htm`:
-
-{{< code-toggle file=hugo >}}
-[mediaTypes]
-  [mediaTypes."text/html"]
-    suffixes = ["htm"]
-
-[outputFormats]
-  [outputFormats.html]
-    mediaType = "text/html"
-{{</ code-toggle >}}
-
-{{% note %}}
-For the above to work, you also need to add an `outputs` definition in your site configuration.
-{{% /note %}}
-
-## Output format definitions
-
-Given a media type and some additional configuration, you get an **Output Format**.
-
-This is the full set of Hugo's built-in output formats:
-
-{{< datatable "config" "outputFormats" "_key" "baseName" "isHTML" "isPlainText" "mediaType" "noUgly"  "path" "permalinkable" "protocol"  "rel" >}}
-
-- A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined as long as they resolve to a unique path on the file system. In the above table, the best example of this is `amp` vs. `html`. `amp` has the value `amp` for `path` so it doesn't overwrite the `html` version; e.g. we can now have both `/index.html` and `/amp/index.html`.
-
-- The `mediaType` must match a defined media type.
-- You can define new output formats or redefine built-in output formats; e.g., if you want to put `amp` pages in a different path.
-
-To add or modify an output format, define it in an `outputFormats` section in your site's [configuration file](/getting-started/configuration/), either for all sites or for a given language.
-
-{{< code-toggle file=hugo >}}
-[outputFormats.MyEnrichedFormat]
-mediaType = "text/enriched"
-baseName = "myindex"
-isPlainText = true
-protocol = "bep://"
-{{</ code-toggle >}}
-
-The above example is fictional, but if used for the home page on a site with `baseURL` `https://example.org`, it will produce a plain text home page with the URL `bep://example.org/myindex.enr`.
-
-### Configure output formats
-
-Use these parameters when configuring an output format:
-
-baseName
-: (`string`) The base name of the published file. Default is `index`.
-
-isHTML
-: (`bool`) Whether to classify the output format as HTML. Hugo uses this value to determine when to create alias redirects, when to inject the LiveReload script, etc. Default is `false`.
-
-isPlainText
-: (`bool`) Whether to parse templates for this output format with Go's [text/template] package instead of the [html/template] package. Default is `false`.
-
-[html/template]: https://pkg.go.dev/html/template
-[text/template]: https://pkg.go.dev/text/template
-
-mediaType
-: (`string`) The [media type] of the published file. This must match a defined media type, either [built-in](#media-types) or custom.
-
-[media type]: https://en.wikipedia.org/wiki/Media_type
-
-notAlternative
-: (`bool`) Whether to exclude this output format from the values returned by the [`AlternativeOutputFormats`] method on a `Page` object. Default is `false`.
-
-[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats/
-
-noUgly
-: (`bool`) Whether to disable ugly URLs for this output format when `uglyURLs` is `true` in your site configuration. Default is `false`.
-
-path
-: (`string`) The path to the directory containing the published files, relative to the root of the publish directory.
-
-permalinkable
-: (`bool`) If `true`, the [`Permalink`] and [`RelPermalink`] methods on a `Page` object return the rendering output format rather than main output format ([see below](#link-to-output-formats)). Enabled by default for the `html` and `amp` output formats. Default is `false`.
-
-[`Permalink`]: /methods/page/permalink/
-[`RelPermalink`]: /methods/page/relpermalink/
-
-protocol
-: (`string`) The protocol (scheme) of the URL for this output format. For example, `https://` or `webcal://`. Default is the scheme of the `baseURL` parameter in your site configuration, typically `https://`.
-
-rel
-: (`string`) If provided, you can assign this value to `rel` attributes in `link` elements when iterating over output formats in your templates. Default is `alternate`.
-
-root
-: (`bool`) Whether to publish files to the root of the publish directory. Default is `false`.
-
-ugly
-: (`bool`) Whether to enable uglyURLs for this output format when `uglyURLs` is `false` in your site configuration. Default is `false`.
-
-weight
-: (`int`) When set to a non-zero value, Hugo uses the `weight` as the first criteria when sorting output formats, falling back to the name of the output format. Lighter items float to the top, while heavier items sink to the bottom. Hugo renders output formats sequentially based on the sort order.
-
-## Output formats for pages
-
-A `Page` in Hugo can be rendered to multiple _output formats_ on the file
-system.
-
-### Default output formats
-
-Every `Page` has a [`Kind`] attribute, and the default Output
-Formats are set based on that.
-
-{{< code-toggle config=outputs />}}
-
-### Customizing output formats
-
-This can be changed by defining an `outputs` list of output formats in either
-the `Page` front matter or in the site configuration (either for all sites or
-per language).
-
-Example from site configuration file:
-
-{{< code-toggle file=hugo >}}
-[outputs]
-  home = ["html", "amp", "rss"]
-  page = ["html"]
-{{</ code-toggle >}}
-
-Note that in the examples above, the output formats for `section`,
-`taxonomy` and `term` will stay at their default value `['html','rss']`.
-
-- The `outputs` definition is per page [`Kind`].
-- The names (e.g. `html`, `amp`) must match the `name` of a defined output format, and can be overridden per page in front matter.
-
-The following is an example of front matter in a content file that defines output formats for the rendered `Page`:
-
-{{< code-toggle file=content/example.md fm=true >}}
-title: Example
-outputs:
-- html
-- amp
-- json
-{{< /code-toggle >}}
-
-## List output formats
-
-Each `Page` object has both an [`OutputFormats`] method (all formats, including the current) and an [`AlternativeOutputFormats`] method, the latter of which is useful for creating a `link rel` list in your site's `<head>`:
-
-[`OutputFormats`]: /methods/page/outputformats
-[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats
-
-```go-html-template
-{{ range .AlternativeOutputFormats -}}
-  <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
-{{ end }}
-```
-
-## Link to output formats
-
-The [`Permalink`] and [`RelPermalink`] methods on a `Page` object return the first output format defined for that page (usually `HTML` if nothing else is defined). This is regardless of the template from which they are called.
-
-[`Permalink`]: /methods/page/permalink
-[`RelPermalink`]: /methods/page/relpermalink
-
-From `single.json.json`:
-
-```go-html-template
-{{ .RelPermalink }} → /that-page/
-{{ with .OutputFormats.Get "json" }}
-  {{ .RelPermalink }} → /that-page/index.json
-{{ end }}
-```
-
-In order for them to return the output format of the current template file instead, the given output format should have its `permalinkable` setting set to true.
-
-This is the same template file as above with the `json` output format's `permalinkable` parameter set to `true`:
-
-```go-html-template
-{{ .RelPermalink }} → /that-page/index.json
-{{ with  .OutputFormats.Get "html" }}
-  {{ .RelPermalink }} → /that-page/
-{{ end }}
-```
-
-## Template lookup order
-
-Each output format requires a template conforming to the [template lookup order].
-
-For the highest specificity in the template lookup order, include the page kind, output format, and suffix in the file name:
-
-[template lookup order]: /templates/lookup-order/
-
-```text
-[page kind].[output format].[suffix]
-```
-
-For example, for section pages:
-
-Output format|Template path
-:--|:--
-`html`|`layouts/_default/section.html.html`
-`json`|`layouts/_default/section.json.json`
-`rss`|`layouts/_default/section.rss.xml`
-
-[site configuration]: /getting-started/configuration/
-[`kind`]: /methods/page/kind/
index 674c6a5652be631e635016581a513143edb828c5..018ec9271ad5f0de5c52e71dbbf69ee7599ae541 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Pagination
 description: Split a list page into two or more subsets.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 190
-weight: 190
-toc: true
+weight: 160
 aliases: [/extras/pagination,/doc/pagination/]
 ---
 
@@ -20,9 +15,8 @@ Displaying a large page collection on a list page is not user-friendly:
 
 Improve usability by paginating `home`, `section`, `taxonomy`, and `term` pages.
 
-{{% note %}}
-The most common templating mistake related to pagination is invoking pagination more than once for a given list page. See the [caching](#caching) section below.
-{{% /note %}}
+> [!note]
+> The most common templating mistake related to pagination is invoking pagination more than once for a given list page. See the [caching](#caching) section below.
 
 ## Terminology
 
@@ -40,43 +34,7 @@ paginator
 
 ## Configuration
 
-Control pagination behavior in your site configuration. These are the default settings:
-
-{{< code-toggle file=hugo config=pagination />}}
-
-disableAliases
-: (`bool`) Whether to disable alias generation for the first pager. Default is `false`.
-
-pagerSize
-: (`int`) The number of pages per pager. Default is `10`.
-
-path
-: (`string`) The segment of each pager URL indicating that the target page is a pager. Default is `page`.
-
-With multilingual sites you can define the pagination behavior for each language:
-
-{{< code-toggle file=hugo >}}
-[languages.en]
-contentDir = 'content/en'
-languageCode = 'en-US'
-languageDirection = 'ltr'
-languageName = 'English'
-weight = 1
-[languages.en.pagination]
-disableAliases = true
-pagerSize = 10
-path = 'page'
-[languages.de]
-contentDir = 'content/de'
-languageCode = 'de-DE'
-languageDirection = 'ltr'
-languageName = 'Deutsch'
-weight = 2
-[languages.de.pagination]
-disableAliases = true
-pagerSize = 20
-path = 'blatt'
-{{< /code-toggle >}}
+See [configure pagination](/configuration/pagination).
 
 ## Methods
 
@@ -93,9 +51,6 @@ The `Paginate` method is more flexible, allowing you to:
 
 By comparison, the `Paginator` method paginates the page collection passed into the template, and you cannot override the number of pages per pager.
 
-[`Paginate`]: /methods/page/paginate/
-[`Paginator`]: /methods/page/paginator/
-
 ## Examples
 
 To paginate a list page using the `Paginate` method:
@@ -137,22 +92,17 @@ In the example above, we:
 
 ## Caching
 
-{{% note %}}
-The most common templating mistake related to pagination is invoking pagination more than once for a given list page.
-{{% /note %}}
+> [!note]
+> The most common templating mistake related to pagination is invoking pagination more than once for a given list page.
 
 Regardless of pagination method, the initial invocation is cached and cannot be changed. If you invoke pagination more than once for a given list page, subsequent invocations use the cached result. This means that subsequent invocations will not behave as written.
 
 When paginating conditionally, do not use the `compare.Conditional` function due to its eager evaluation of arguments. Use an `if-else` construct instead.
 
-[`compare.Conditional`]: /functions/compare/conditional/
-
 ## Grouping
 
 Use pagination with any of the [grouping methods]. For example:
 
-[grouping methods]: /quick-reference/page-collections/#group
-
 ```go-html-template
 {{ $pages := where site.RegularPages "Type" "posts" }}
 {{ $paginator := .Paginate ($pages.GroupByDate "Jan 2006") }}
@@ -167,8 +117,6 @@ Use pagination with any of the [grouping methods]. For example:
 {{ template "_internal/pagination.html" . }}
 ```
 
-[grouping methods]: /quick-reference/page-collections/#group
-
 ## Navigation
 
 As shown in the examples above, the easiest way to add navigation between pagers is with Hugo's embedded pagination template:
@@ -189,18 +137,14 @@ The `terse` format has fewer controls and page slots, consuming less space when
 {{ template "_internal/pagination.html" (dict "page" . "format" "terse") }}
 ```
 
-{{% note %}}
-To override Hugo's embedded pagination template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
-
-`{{ partial "pagination.html" . }}`
-
-[`partial`]: /functions/partials/include/
-[source code]: {{% eturl pagination %}}
-{{% /note %}}
+> [!note]
+> To override Hugo's embedded pagination template, copy the [source code] to a file with the same name in the `layouts/partials` directory, then call it from your templates using the [`partial`] function:
+>
+> `{{ partial "pagination.html" . }}`
 
 Create custom navigation components using any of the `Pager` methods:
 
-{{< list-pages-in-section path=/methods/pager >}}
+{{% list-pages-in-section path=/methods/pager %}}
 
 ## Structure
 
@@ -288,3 +232,10 @@ public/
 │   └── index.html
 └── index.html
 ```
+
+[`Paginate`]: /methods/page/paginate/
+[`Paginator`]: /methods/page/paginator/
+[`partial`]: /functions/partials/include/
+[grouping methods]: /quick-reference/page-collections/#group
+[grouping methods]: /quick-reference/page-collections/#group
+[source code]: {{% eturl pagination %}}
index 996914b0511555e52cde9b9beb8c89d0aa92adbe..8493a4674fc3b00bba9e77da6c257697e711a3ec 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Partial templates
 description: Partials are smaller, context-aware components in your list and page templates that can be used economically to keep your templating DRY.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 110
-weight: 110
-toc: true
+weight: 100
 aliases: [/templates/partials/,/layout/chrome/]
 ---
 
@@ -39,13 +34,11 @@ All partials are called within your templates using the following pattern:
 {{ partial "<PATH>/<PARTIAL>.html" . }}
 ```
 
-{{% note %}}
-One of the most common mistakes with new Hugo users is failing to pass a context to the partial call. In the pattern above, note how "the dot" (`.`) is required as the second argument to give the partial context. You can read more about "the dot" in the [Hugo templating introduction](/templates/introduction/#context).
-{{% /note %}}
+> [!note]
+> One of the most common mistakes with new Hugo users is failing to pass a context to the partial call. In the pattern above, note how "the dot" (`.`) is required as the second argument to give the partial context. You can read more about "the dot" in the [Hugo templating introduction](/templates/introduction/#context).
 
-{{% note %}}
-`<PARTIAL>` including `baseof` is reserved. ([#5373](https://github.com/gohugoio/hugo/issues/5373))
-{{% /note %}}
+> [!note]
+> Do not include the word "baseof" when naming partial templates. The word "baseof" is reserved for base templates.
 
 As shown in the above example directory structure, you can nest your directories within `partials` for better source organization. You only need to call the nested partial's path relative to the `partials` directory:
 
@@ -99,9 +92,8 @@ In addition to outputting markup, partials can be used to return a value of any
 {{ end }}
 ```
 
-{{% note %}}
-Only one `return` statement is allowed per partial file.
-{{% /note %}}
+> [!note]
+> Only one `return` statement is allowed per partial file.
 
 ## Inline partials
 
@@ -126,7 +118,7 @@ The `partialCached` template function provides significant performance gains for
 
 The following `header.html` partial template is used for [spf13.com](https://spf13.com/):
 
-{{< code file=layouts/partials/header.html >}}
+```go-html-template {file="layouts/partials/header.html"}
 <!DOCTYPE html>
 <html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
 <head>
@@ -141,17 +133,16 @@ The following `header.html` partial template is used for [spf13.com](https://spf
 
     {{ partial "head_includes.html" . }}
 </head>
-{{< /code >}}
+```
 
-{{% note %}}
-The `header.html` example partial was built before the introduction of block templates to Hugo. Read more on [base templates and blocks](/templates/base/) for defining the outer chrome or shell of your master templates (i.e., your site's head, header, and footer). You can even combine blocks and partials for added flexibility.
-{{% /note %}}
+> [!note]
+> The `header.html` example partial was built before the introduction of block templates to Hugo. Read more on [base templates and blocks](/templates/base/) for defining the outer chrome or shell of your master templates (i.e., your site's head, header, and footer). You can even combine blocks and partials for added flexibility.
 
 ### `footer.html`
 
 The following `footer.html` partial template is used for [spf13.com](https://spf13.com/):
 
-{{< code file=layouts/partials/footer.html >}}
+```go-html-template {file="layouts/partials/footer.html"}
 <footer>
   <div>
     <p>
@@ -161,10 +152,7 @@ The following `footer.html` partial template is used for [spf13.com](https://spf
     </p>
   </div>
 </footer>
-{{< /code >}}
+```
 
 [context]: /templates/introduction/
-[customize]: /hugo-modules/theme-components/
-[lookup order]: /templates/lookup-order/
 [partialcached]: /functions/partials/includecached/
-[themes]: /themes/
index 0e453c549c9b8afde3705f1ee7efa8b4040cd345..2d412d775f67baa924c4faa1b07ea902d2ff1e43 100644 (file)
@@ -2,13 +2,9 @@
 title: robots.txt template
 linkTitle: robots.txt templates
 description: Hugo can generate a customized robots.txt in the same way as any other template.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 170
-weight: 170
+weight: 180
 aliases: [/extras/robots-txt/]
 ---
 
@@ -20,8 +16,6 @@ enableRobotsTXT = true
 
 By default, Hugo generates robots.txt using an [embedded template].
 
-[embedded template]: {{% eturl robots %}}
-
 ```text
 User-agent: *
 ```
@@ -37,24 +31,23 @@ You may overwrite the internal template with a custom template. Hugo selects the
 
 ## robots.txt template example
 
-{{< code file=layouts/robots.txt >}}
+```text {file="layouts/robots.txt"}
 User-agent: *
 {{ range .Pages }}
 Disallow: {{ .RelPermalink }}
 {{ end }}
-{{< /code >}}
+```
 
 This template creates a robots.txt file with a `Disallow` directive for each page on the site. Search engines that honor the Robots Exclusion Protocol will not crawl any page on the site.
 
-{{% note %}}
-To create a robots.txt file without using a template:
-
-1. Set `enableRobotsTXT` to `false` in the site configuration.
-1. Create a robots.txt file in the `static` directory.
-
-Remember that Hugo copies everything in the [`static` directory][static] to the root of `publishDir` (typically `public`) when you build your site.
+> [!note]
+To create a robots.txt file without using a template:
+>
+1. Set `enableRobotsTXT` to `false` in the site configuration.
+1. Create a robots.txt file in the `static` directory.
+>
+Remember that Hugo copies everything in the [`static` directory][static] to the root of `publishDir` (typically `public`) when you build your site.
 
+[embedded template]: {{% eturl robots %}}
+[site configuration]: /configuration/
 [static]: /getting-started/directory-structure/
-{{% /note %}}
-
-[site configuration]: /getting-started/configuration/
index da7244a94f9cb2a9ffb1deb98790c53c3092f13c..f387a71e3963e93ebabee9c355128dc2d759710e 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: RSS templates
 description: Use the embedded RSS template, or create your own.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 150
-weight: 150
-toc: true
+weight: 140
 ---
 
 ## Configuration
@@ -52,7 +47,7 @@ email = 'jdoe@example.org'
 To include a feed reference in the `head` element of your rendered pages, place this within the `head` element of your templates:
 
 ```go-html-template
-{{ with .OutputFormats.Get "rss" -}}
+{{ with .OutputFormats.Get "rss" }}
   {{ printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink site.Title | safeHTML }}
 {{ end }}
 ```
@@ -67,9 +62,6 @@ Hugo will render this to:
 
 Override Hugo's [embedded RSS template] by creating one or more of your own, following the naming conventions as shown in the [template lookup order].
 
-[embedded RSS template]: {{% eturl rss %}}
-[template lookup order]: /templates/lookup-order/#rss-templates
-
 For example, to use different templates for home, section, taxonomy, and term pages:
 
 ```text
@@ -82,3 +74,6 @@ layouts/
 ```
 
 RSS templates receive the `.Page` and `.Site` objects in context.
+
+[embedded RSS template]: {{% eturl rss %}}
+[template lookup order]: /templates/lookup-order/#rss-templates
index 339fe638901114bd081e2ba5c16159269e8479a5..8bc0f9dab58891aa03803a5677d3d9c683d0a3c8 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Section templates
 description: Create a section template to list its members.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 80
-weight: 80
-toc: true
+weight: 70
 aliases: [/templates/sections/,/templates/section-templates/]
 ---
 
@@ -22,7 +17,7 @@ See [Template Lookup](/templates/lookup-order/).
 
 ## Example: creating a default section template
 
-{{< code file=layouts/_default/section.html >}}
+```go-html-template {file="layouts/_default/section.html"}
 {{ define "main" }}
   <main>
     {{ .Content }}
@@ -37,7 +32,7 @@ See [Template Lookup](/templates/lookup-order/).
     {{ template "_internal/pagination.html" . }}
   </main>
 {{ end }}
-{{< /code >}}
+```
 
 ### Example: using `.Site.GetPage`
 
index c738746737657cfa171cbf2cd0074d87a9a4aff0..711d342cb87b985c4f70caedd228d8e7ddd022e8 100644 (file)
@@ -1,23 +1,14 @@
 ---
 title: Shortcode templates
-description: Create custom shortcodes to simplify and standardize content creation. 
-categories: [templates]
+description: Create custom shortcodes to simplify and standardize content creation.
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 130
-weight: 130
+weight: 120
 aliases: [/templates/shortcode-templates/]
-toc: true
 ---
 
-{{% note %}}
-Before creating custom shortcodes, please review the [shortcodes] page in the [content management] section. Understanding the usage details will help you design and create better templates.
-
-[shortcodes]: /content-management/shortcodes/
-[content management]: /content-management/shortcodes/
-{{% /note %}}
+> [!note]
+> Before creating custom shortcodes, please review the [shortcodes] page in the [content management] section. Understanding the usage details will help you design and create better templates.
 
 ## Introduction
 
@@ -31,8 +22,6 @@ Hugo provides [embedded shortcodes] for many common tasks, but you'll likely nee
 - Tables
 - And many other custom elements
 
-[embedded shortcodes]: /shortcodes/
-
 ## Directory structure
 
 Create shortcode templates within the `layouts/shortcodes` directory, either at its root or organized into subdirectories.
@@ -81,7 +70,7 @@ foo|json|en|`layouts/shortcodes/foo.json.en.json`
 
 Use these methods in your shortcode templates. Refer to each methods's documentation for details and examples.
 
-{{< list-pages-in-section path=/methods/shortcode >}}
+{{% list-pages-in-section path=/methods/shortcode %}}
 
 ## Examples
 
@@ -91,20 +80,18 @@ These examples range in complexity from simple to moderately advanced, with some
 
 Create a shortcode to insert the current year:
 
-{{< code file=layouts/shortcodes/year.html >}}
+```go-html-template {file="layouts/shortcodes/year.html"}
 {{- now.Format "2006" -}}
-{{< /code >}}
+```
 
 Then call the shortcode from within your markup:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 This is {{</* year */>}}, and look at how far we've come.
-{{< /code >}}
+```
 
 This shortcode can be used inline or as a block on its own line. If a shortcode might be used inline, remove the surrounding [whitespace] by using [template action](g) delimiters with hyphens.
 
-[whitespace]: /templates/introduction/#whitespace
-
 ### Insert image
 
 This example assumes the following content structure, where `content/example/index.md` is a [page bundle](g) containing one or more [page resources](g).
@@ -119,19 +106,19 @@ content/
 
 Create a shortcode to capture an image as a page resource, resize it to the given width, convert it to the WebP format, and add an `alt` attribute:
 
-{{< code file=layouts/shortcodes/image.html >}}
+```go-html-template {file="layouts/shortcodes/image.html"}
 {{- with .Page.Resources.Get (.Get "path") }}
-  {{- with .Process (printf "resize %dx wepb" ($.Get "width")) }}
+  {{- with .Process (printf "resize %dx wepb" ($.Get "width")) -}}
     <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="{{ $.Get "alt" }}">
   {{- end }}
 {{- end -}}
-{{< /code >}}
+```
 
 Then call the shortcode from within your markup:
 
-{{< code file=content/example/index.md >}}
+```text {file="content/example/index.md"}
 {{</* image path=a.jpg width=300 alt="A white kitten" */>}}
-{{< /code >}}
+```
 
 The example above uses:
 
@@ -139,47 +126,38 @@ The example above uses:
 - The [`Get`] method to retrieve arguments by name
 - The `$` to access the template context
 
-[`get`]: /methods/shortcode/get/
-[`with`]: /functions/go-template/with/
-
-{{% note %}}
-Make sure that you thoroughly understand the concept of context. The most common templating errors made by new users relate to context.
-
-Read more about context in the [introduction to templating].
-
-[introduction to templating]: /templates/introduction/
-{{% /note %}}
+> [!note]
+> Make sure that you thoroughly understand the concept of context. The most common templating errors made by new users relate to context.
+>
+> Read more about context in the [introduction to templating].
 
 ### Insert image with error handling
 
 The previous example, while functional, silently fails if the image is missing, and does not gracefully exit if a required argument is missing. We'll add error handling to address these issues:
 
-{{< code file=layouts/shortcodes/image.html >}}
-{{ with .Get "path" }}
+```go-html-template {file="layouts/shortcodes/image.html"}
+{{- with .Get "path" }}
   {{- with $r := $.Page.Resources.Get ($.Get "path") }}
     {{- with $.Get "width" }}
       {{- with $r.Process (printf "resize %dx wepb" ($.Get "width" )) }}
-        {{- $alt := or ($.Get "alt") "" }}
+        {{- $alt := or ($.Get "alt") "" -}}
         <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="{{ $alt }}">
       {{- end }}
     {{- else }}
       {{- errorf "The %q shortcode requires a 'width' argument: see %s" $.Name $.Position }}
     {{- end }}
   {{- else }}
-    {{ warnf "The %q shortcode was unable to find %s: see %s" $.Name ($.Get "path") $.Position }}
+    {{- warnf "The %q shortcode was unable to find %s: see %s" $.Name ($.Get "path") $.Position }}
   {{- end }}
 {{- else }}
-  {{ errorf "The %q shortcode requires a 'path' argument: see %s" .Name .Position }}
+  {{- errorf "The %q shortcode requires a 'path' argument: see %s" .Name .Position }}
 {{- end -}}
-{{< /code >}}
+```
 
 This template throws an error and gracefully fails the build if the author neglected to provide a `path` or `width` argument, and it emits a warning if it cannot find the image at the specified path. If the author does not provide an `alt` argument, the `alt` attribute is set to an empty string.
 
 The [`Name`] and [`Position`] methods provide helpful context for errors and warnings. For example, a missing `width` argument causes the shortcode to throw this error:
 
-[`name`]: /methods/shortcode/name/
-[`position`]: /methods/shortcode/position/
-
 ```text
 ERROR The "image" shortcode requires a 'width' argument: see "/home/user/project/content/example/index.md:7:1"
 ```
@@ -188,167 +166,146 @@ ERROR The "image" shortcode requires a 'width' argument: see "/home/user/project
 
 Shortcode arguments can be [named or positional]. We used named arguments previously; let's explore positional arguments. Here's the named argument version of our example:
 
-[named or positional]: /content-management/shortcodes/#arguments
-
-{{< code file=content/example/index.md >}}
+```text {file="content/example/index.md"}
 {{</* image path=a.jpg width=300 alt="A white kitten" */>}}
-{{< /code >}}
+```
 
 Here's how to call it with positional arguments:
 
-{{< code file=content/example/index.md >}}
+```text {file="content/example/index.md"}
 {{</* image a.jpg 300 "A white kitten" */>}}
-{{< /code >}}
+```
 
 Using the `Get` method with zero-indexed keys, we'll initialize variables with descriptive names in our template:
 
-{{< code file=layouts/shortcodes/image.html >}}
-{{- $path := .Get 0 }}
-{{- $width := .Get 1 }}
-{{- $alt := .Get 2 }}
-{{< /code >}}
+```go-html-template {file="layouts/shortcodes/image.html"}
+{{ $path := .Get 0 }}
+{{ $width := .Get 1 }}
+{{ $alt := .Get 2 }}
+```
 
-{{% note %}}
-Positional arguments work well for frequently used shortcodes with one or two arguments. Since you'll use them often, the argument order will be easy to remember. For less frequently used shortcodes, or those with more than two arguments, named arguments improve readability and reduce the chance of errors.
-{{% /note %}}
+> [!note]
+> Positional arguments work well for frequently used shortcodes with one or two arguments. Since you'll use them often, the argument order will be easy to remember. For less frequently used shortcodes, or those with more than two arguments, named arguments improve readability and reduce the chance of errors.
 
 ### Named and positional arguments
 
 You can create a shortcode that will accept both named and positional arguments, but not at the same time. Use the [`IsNamedParams`] method to determine whether the shortcode call used named or positional arguments:
 
-{{< code file=layouts/shortcodes/image.html >}}
-{{- $path := cond (.IsNamedParams) (.Get "path") (.Get 0) }}
-{{- $width := cond (.IsNamedParams) (.Get "width") (.Get 1) }}
-{{- $alt := cond (.IsNamedParams) (.Get "alt") (.Get 2) }}
-{{< /code >}}
+```go-html-template {file="layouts/shortcodes/image.html"}
+{{ $path := cond (.IsNamedParams) (.Get "path") (.Get 0) }}
+{{ $width := cond (.IsNamedParams) (.Get "width") (.Get 1) }}
+{{ $alt := cond (.IsNamedParams) (.Get "alt") (.Get 2) }}
+```
 
 This example uses the `cond` alias for the [`compare.Conditional`] function to get the argument by name if `IsNamedParams` returns `true`, otherwise get the argument by position.
 
-[`compare.Conditional`]: /functions/compare/conditional/
-[`IsNamedParams`]: /methods/shortcode/isnamedparams/
-
 ### Argument collection
 
 Use the [`Params`] method to access the arguments as a collection.
 
-[`Params`]: /methods/shortcode/params/
-
 When using named arguments, the `Params` method returns a map:
 
-{{< code file=content/example/index.md >}}
+```text {file="content/example/index.md"}
 {{</* image path=a.jpg width=300 alt="A white kitten" */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/image.html >}}
-{{- .Params.path }} → a.jpg
-{{- .Params.width }} → 300
-{{- .Params.alt }} → A white kitten
-{{< /code >}}
+```go-html-template {file="layouts/shortcodes/image.html"}
+{{ .Params.path }} → a.jpg
+{{ .Params.width }} → 300
+{{ .Params.alt }} → A white kitten
+```
 
  When using positional arguments, the `Params` method returns a slice:
 
-{{< code file=content/example/index.md >}}
+```text {file="content/example/index.md"}
 {{</* image a.jpg 300 "A white kitten" */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/image.html >}}
-{{- index .Params 0 }} → a.jpg
-{{- index .Params 1 }} → 300
-{{- index .Params 1 }} → A white kitten
-{{< /code >}}
+```go-html-template {file="layouts/shortcodes/image.html"}
+{{ index .Params 0 }} → a.jpg
+{{ index .Params 1 }} → 300
+{{ index .Params 1 }} → A white kitten
+```
 
 Combine the `Params` method with the [`collections.IsSet`] function to determine if a parameter is set, even if its value is falsy.
 
-[`collections.IsSet`]: /functions/collections/isset/
-
 ### Inner content
 
-Extract the content enclosed within shortcode tags using the [`Inner`] method.  This example demonstrates how to pass both content and a title to a shortcode. The shortcode then generates a `div` element containing an `h2` element (displaying the title) and the provided content.
-
-[`Inner`]: /methods/shortcode/inner/
+Extract the content enclosed within shortcode tags using the [`Inner`] method. This example demonstrates how to pass both content and a title to a shortcode. The shortcode then generates a `div` element containing an `h2` element (displaying the title) and the provided content.
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{</* contrived title="A Contrived Example" */>}}
 This is a **bold** word, and this is an _emphasized_ word.
 {{</* /contrived  */>}}
-{{< /code >}}
+```
 
-{{< code file=layouts/shortcodes/contrived.html >}}
+```go-html-template {file="layouts/shortcodes/contrived.html"}
 <div class="contrived">
   <h2>{{ .Get "title" }}</h2>
   {{ .Inner | .Page.RenderString }}
 </div>
-{{< /code >}}
+```
 
 The preceding example called the shortcode using [standard notation], requiring us to process the inner content with the [`RenderString`] method to convert the Markdown to HTML. This conversion is unnecessary when calling a shortcode using [Markdown notation].
 
-[`RenderString`]: /methods/page/renderstring/
-[markdown notation]: /content-management/shortcodes/#markdown-notation
-[standard notation]: /content-management/shortcodes/#standard-notation
-
 ### Nesting
 
 The  [`Parent`] method provides access to the parent shortcode context when the shortcode in question is called within the context of a parent shortcode. This provides an inheritance model.
 
-[`Parent`]: /methods/shortcode/parent/
-
 The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` argument:
 
-{{< code file=layouts/shortcodes/gallery.html >}}
+```go-html-template {file="layouts/shortcodes/gallery.html"}
 <div class="{{ .Get "class" }}">
   {{ .Inner }}
 </div>
-{{< /code >}}
+```
 
 You also have an `img` shortcode with a single named `src` argument that you want to call inside of `gallery` and other shortcodes, so that the parent defines the context of each `img`:
 
-{{< code file=layouts/shortcodes/img.html >}}
+```go-html-template {file="layouts/shortcodes/img.html"}
 {{ $src := .Get "src" }}
 {{ with .Parent }}
   <img src="{{ $src }}" class="{{ .Get "class" }}-image">
 {{ else }}
   <img src="{{ $src }}">
 {{ end }}
-{{< /code >}}
+```
 
 You can then call your shortcode in your content as follows:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{</* gallery class="content-gallery" */>}}
   {{</* img src="/images/one.jpg" */>}}
   {{</* img src="/images/two.jpg" */>}}
 {{</* /gallery */>}}
 {{</* img src="/images/three.jpg" */>}}
-{{< /code >}}
-
+```
 
 This will output the following HTML. Note how the first two `img` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `img` only uses `src`:
 
 ```html
 <div class="content-gallery">
-    <img src="/images/one.jpg" class="content-gallery-image">
-    <img src="/images/two.jpg" class="content-gallery-image">
+  <img src="/images/one.jpg" class="content-gallery-image">
+  <img src="/images/two.jpg" class="content-gallery-image">
 </div>
 <img src="/images/three.jpg">
 ```
 
 ### Other examples
 
-For guidance, consider examining Hugo's embedded shortcodes.  The source code, available on [GitHub], can provide a useful model.
-
-[GitHub]: https://github.com/gohugoio/hugo/tree/master/tpl/tplimpl/embedded/templates/shortcodes
+For guidance, consider examining Hugo's embedded shortcodes. The source code, available on [GitHub], can provide a useful model.
 
 ## Detection
 
 The [`HasShortcode`] method allows you to check if a specific shortcode has been called on a page. For example, consider a custom audio shortcode:
 
-{{< code file=content/example.md >}}
+```text {file="content/example.md"}
 {{</* audio src=/audio/test.mp3 */>}}
-{{< /code >}}
+```
 
 You can use the `HasShortcode` method in your base template to conditionally load CSS if the audio shortcode was used on the page:
 
-{{< code file=layouts/_default/baseof.html >}}
+```go-html-template {file="layouts/_default/baseof.html"}
 <head>
   ...
   {{ if .HasShortcode "audio" }}
@@ -356,6 +313,26 @@ You can use the `HasShortcode` method in your base template to conditionally loa
   {{ end }}
   ...
 </head>
-{{< /code >}}
+```
 
+[`collections.IsSet`]: /functions/collections/isset/
+[`compare.Conditional`]: /functions/compare/conditional/
+[`Get`]: /methods/shortcode/get/
 [`HasShortcode`]: /methods/page/hasshortcode/
+[`Inner`]: /methods/shortcode/inner/
+[`IsNamedParams`]: /methods/shortcode/isnamedparams/
+[`Name`]: /methods/shortcode/name/
+[`Params`]: /methods/shortcode/params/
+[`Parent`]: /methods/shortcode/parent/
+[`Position`]: /methods/shortcode/position/
+[`RenderString`]: /methods/page/renderstring/
+[`with`]: /functions/go-template/with/
+[content management]: /content-management/shortcodes/
+[embedded shortcodes]: /shortcodes/
+[GitHub]: https://github.com/gohugoio/hugo/tree/master/tpl/tplimpl/embedded/templates/shortcodes
+[introduction to templating]: /templates/introduction/
+[Markdown notation]: /content-management/shortcodes/#markdown-notation
+[named or positional]: /content-management/shortcodes/#arguments
+[shortcodes]: /content-management/shortcodes/
+[standard notation]: /content-management/shortcodes/#standard-notation
+[whitespace]: /templates/introduction/#whitespace
index f6292ca03fa276bc1c419e4b9c68893056138790..6f244ef109d6d7ccac52d96a6e5256c9a892a7f2 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Single templates
 description: Create a single template to render a single page.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 70
-weight: 70
-toc: true
+weight: 60
 aliases: [/layout/content/,/templates/single-page-templates/]
 ---
 
@@ -16,12 +11,12 @@ The single template below inherits the site's shell from the [base template].
 
 [base template]: /templates/types/
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
 {{ end }}
-{{< /code >}}
+```
 
 Review the [template lookup order] to select a template path that provides the desired level of specificity.
 
@@ -29,7 +24,7 @@ Review the [template lookup order] to select a template path that provides the d
 
 The single template below inherits the site's shell from the base template, and renders the page title, creation date, content, and a list of associated terms in the "tags" taxonomy.
 
-{{< code file=layouts/_default/single.html >}}
+```go-html-template {file="layouts/_default/single.html"}
 {{ define "main" }}
   <section>
     <h1>{{ .Title }}</h1>
@@ -53,4 +48,4 @@ The single template below inherits the site's shell from the base template, and
     </aside>
   </section>
 {{ end }}
-{{< /code >}}
+```
index b21372040bf6f4560341beca8853a75f9fcf719d..bf0850eefc45172465afc59fba4a54abce0e4912 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Sitemap templates
 description: Hugo provides built-in sitemap templates.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 140
-weight: 140
-toc: true
+weight: 130
 aliases: [/layout/sitemap/,/templates/sitemap-template/]
 ---
 
@@ -23,26 +18,9 @@ With a multilingual project, Hugo generates:
 - A sitemap.xml file in the root of each site (language) using the [embedded sitemap template]
 - A sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemapindex template]
 
-[embedded sitemap template]: {{% eturl sitemap %}}
-[embedded sitemapindex template]: {{% eturl sitemapindex %}}
-
 ## Configuration
 
-These are the default sitemap configuration values. They apply to all pages unless overridden in front matter.
-
-{{< code-toggle config=sitemap />}}
-
-changefreq
-: (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#changefreqdef).
-
-disable {{< new-in 0.125.0 />}}
-: (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
-
-filename
-: (`string`) The name of the generated file. Default is `sitemap.xml`.
-
-priority
-: (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0.  With the default value of `-1` Hugo will omit this field from the sitemap. See&nbsp;[details](https://www.sitemaps.org/protocol.html#priority).
+See [configure sitemap](/configuration/sitemap).
 
 ## Override default values
 
@@ -78,5 +56,7 @@ You may disable sitemap generation in your site configuration:
 disableKinds = ['sitemap']
 {{</ code-toggle >}}
 
-[`publishDir`]: /getting-started/configuration#publishdir
+[`publishDir`]: /configuration/all/#publishdir
+[embedded sitemap template]: {{% eturl sitemap %}}
+[embedded sitemapindex template]: {{% eturl sitemapindex %}}
 [sitemap protocol]: https://www.sitemaps.org/protocol.html
index f9f28ee57244c3f922d015bb625929c402b29905..96c93ec95308b790d589612ce3f7f197dce016f7 100644 (file)
@@ -1,14 +1,9 @@
 ---
 title: Taxonomy templates
 description: Create a taxonomy template to render a list of terms.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 90
-weight: 90
-toc: true
+weight: 80
 aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy-templates/]
 ---
 
@@ -16,7 +11,7 @@ The [taxonomy](g) template below inherits the site's shell from the [base templa
 
 [base template]: /templates/types/
 
-{{< code file=layouts/_default/taxonomy.html >}}
+```go-html-template {file="layouts/_default/taxonomy.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -24,7 +19,7 @@ The [taxonomy](g) template below inherits the site's shell from the [base templa
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 Review the [template lookup order] to select a template path that provides the desired level of specificity.
 
@@ -69,7 +64,7 @@ Once we have the `Taxonomy` object, we can call any of its [methods], allowing u
 
 The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list alphabetically by term, and displays the number of pages associated with each term.
 
-{{< code file=layouts/_default/taxonomy.html >}}
+```go-html-template {file="layouts/_default/taxonomy.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -77,13 +72,13 @@ The taxonomy template below inherits the site's shell from the base template, an
     <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 ## Sort by term count
 
 The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list by the number of pages associated with each term, and displays the number of pages associated with each term.
 
-{{< code file=layouts/_default/taxonomy.html >}}
+```go-html-template {file="layouts/_default/taxonomy.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -91,7 +86,7 @@ The taxonomy template below inherits the site's shell from the base template, an
     <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 ## Include content links
 
@@ -102,7 +97,7 @@ The [`Alphabetical`] and [`ByCount`] methods used in the previous examples retur
 
 The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list by the number of pages associated with each term, displays the number of pages associated with each term, then lists the content to which each term is assigned.
 
-{{< code file=layouts/_default/taxonomy.html >}}
+```go-html-template {file="layouts/_default/taxonomy.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -115,7 +110,7 @@ The taxonomy template below inherits the site's shell from the base template, an
     </ul>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 ## Display metadata
 
@@ -150,7 +145,7 @@ affiliation = "University of Chicago"
 
 Then create a taxonomy template specific to the "authors" taxonomy:
 
-{{< code file=layouts/authors/taxonomy.html >}}
+```go-html-template {file="layouts/authors/taxonomy.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -164,6 +159,6 @@ Then create a taxonomy template specific to the "authors" taxonomy:
     {{ end }}
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 In the example above we list each author including their affiliation and portrait.
index 07b8ef29a52c4daa62f564d4cfc64362dfb9e3b7..cf1097e86e5d7996f15f728589f2f32f9618ec6c 100644 (file)
@@ -1,21 +1,16 @@
 ---
 title: Term templates
 description: Create a term template to render a list of pages associated with the current term.
-categories: [templates]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 100
-weight: 100
-toc: true
+weight: 90
 ---
 
 The [term](g) template below inherits the site's shell from the [base template], and renders a list of pages associated with the current term.
 
 [base template]: /templates/types/
 
-{{< code file=layouts/_default/term.html >}}
+```go-html-template {file="layouts/_default/term.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   {{ .Content }}
@@ -23,7 +18,7 @@ The [term](g) template below inherits the site's shell from the [base template],
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 Review the [template lookup order] to select a template path that provides the desired level of specificity.
 
@@ -93,7 +88,7 @@ affiliation = "University of Chicago"
 
 Then create a term template specific to the "authors" taxonomy:
 
-{{< code file=layouts/authors/term.html >}}
+```go-html-template {file="layouts/authors/term.html"}
 {{ define "main" }}
   <h1>{{ .Title }}</h1>
   <p>Affiliation: {{ .Params.affiliation }}</p>
@@ -107,6 +102,6 @@ Then create a term template specific to the "authors" taxonomy:
     <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
   {{ end }}
 {{ end }}
-{{< /code >}}
+```
 
 In the example above we display the author with their affiliation and portrait, then a list of associated content.
diff --git a/content/en/templates/types.md b/content/en/templates/types.md
new file mode 100644 (file)
index 0000000..b44d3eb
--- /dev/null
@@ -0,0 +1,261 @@
+---
+title: Template types
+description: Create templates of different types to render your content, resources, and data.
+categories: []
+keywords: []
+weight: 30
+aliases: ['/templates/lists/']
+---
+
+## Structure
+
+Create templates in the `layouts` directory in the root of your project.
+
+Although your site may not require each of these templates, the example below is typical for a site of medium complexity.
+
+```text
+layouts/
+├── _default/
+│   ├── _markup/
+│   │   ├── render-image.html   <-- render hook
+│   │   └── render-link.html    <-- render hook
+│   ├── baseof.html
+│   ├── home.html
+│   ├── section.html
+│   ├── single.html
+│   ├── taxonomy.html
+│   └── term.html
+├── articles/
+│   └── card.html               <-- content view
+├── partials/
+│   ├── footer.html
+│   └── header.html
+└── shortcodes/
+    ├── audio.html
+    └── video.html
+```
+
+Hugo's [template lookup order] determines the template path, allowing you to create unique templates for any page.
+
+> [!note]
+> You must have thorough understanding of the template lookup order when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format.
+
+The purpose of each template type is described below.
+
+## Base
+
+Base templates reduce duplicate code by wrapping other templates within a shell.
+
+For example, the base template below calls the [partial] function to include partial templates for the `head`, `header`, and `footer` elements of each page, and it uses the [block] function to include `home`, `single`, `section`, `taxonomy`, and `term` templates within the `main` element of each page.
+
+```go-html-template {file="layouts/_default/baseof.html"}
+<!DOCTYPE html>
+<html lang="{{ or site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
+<head>
+  {{ partial "head.html" . }}
+</head>
+<body>
+  <header>
+    {{ partial "header.html" . }}
+  </header>
+  <main>
+    {{ block "main" . }}{{ end }}
+  </main>
+  <footer>
+    {{ partial "footer.html" . }}
+  </footer>
+</body>
+</html>
+```
+
+Learn more about [base templates](/templates/base/).
+
+## Home
+
+A home page template is used to render your site's home page, and is the only template required for a single-page website. For example, the home page template below inherits the site's shell from the base template and renders the home page content, such as a list of other pages.
+
+```go-html-template {file="layouts/_default/home.html"}
+{{ define "main" }}
+  {{ .Content }}
+  {{ range site.RegularPages }}
+    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+  {{ end }}
+{{ end }}
+```
+
+{{% include "/_common/filter-sort-group.md" %}}
+
+Learn more about [home page templates](/templates/home/).
+
+## Single
+
+A single template renders a single page.
+
+For example, the single template below inherits the site's shell from the base template, and renders the title and content of each page.
+
+```go-html-template {file="layouts/_default/single.html"}
+{{ define "main" }}
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+{{ end }}
+```
+
+Learn more about [single templates](/templates/single/).
+
+## Section
+
+A section template typically renders a list of pages within a section.
+
+For example, the section template below inherits the site's shell from the base template, and renders a list of pages in the current section.
+
+```go-html-template {file="layouts/_default/section.html"}
+{{ define "main" }}
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+  {{ range .Pages }}
+    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+  {{ end }}
+{{ end }}
+```
+
+{{% include "/_common/filter-sort-group.md" %}}
+
+Learn more about [section templates](/templates/section/).
+
+## Taxonomy
+
+A taxonomy template renders a list of terms in a [taxonomy](g).
+
+For example, the taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy.
+
+```go-html-template {file="layouts/_default/taxonomy.html"}
+{{ define "main" }}
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+  {{ range .Pages }}
+    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+  {{ end }}
+{{ end }}
+```
+
+{{% include "/_common/filter-sort-group.md" %}}
+
+Learn more about [taxonomy templates](/templates/taxonomy/).
+
+## Term
+
+A term template renders a list of pages associated with a [term](g).
+
+For example, the term template below inherits the site's shell from the base template, and renders a list of pages associated with the current term.
+
+```go-html-template {file="layouts/_default/term.html"}
+{{ define "main" }}
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+  {{ range .Pages }}
+    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+  {{ end }}
+{{ end }}
+```
+
+{{% include "/_common/filter-sort-group.md" %}}
+
+Learn more about [term templates](/templates/term/).
+
+## Partial
+
+A partial template is typically used to render a component of your site, though you may also create partial templates that return values.
+
+> [!note]
+> Unlike other template types, you cannot create partial templates to target a particular page kind, content type, section, language, or output format. Partial templates do not follow Hugo's [template lookup order].
+
+For example, the partial template below renders copyright information.
+
+```go-html-template {file="layouts/partials/footer.html"}
+<p>Copyright {{ now.Year }}. All rights reserved.</p>
+```
+
+Learn more about [partial templates](/templates/partial/).
+
+## Content view
+
+A content view template is similar to a partial template, invoked by calling the [`Render`] method on a `Page` object. Unlike partial templates, content view templates:
+
+- Automatically inherit the context of the current page
+- Follow a lookup order allowing you to target a given content type or section
+
+For example, the home template below inherits the site's shell from the base template, and renders a card component for each page within the "articles" section of your site.
+
+```go-html-template {file="layouts/_default/home.html"}
+{{ define "main" }}
+  {{ .Content }}
+  <ul>
+    {{ range where site.RegularPages "Section" "articles" }}
+      {{ .Render "card" }}
+    {{ end }}
+  </ul>
+{{ end }}
+```
+
+```go-html-template {file="layouts/articles/card.html"}
+<div class="card">
+  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+  {{ .Summary }}
+</div>
+```
+
+Learn more about [content view templates](/templates/content-view/).
+
+## Render hook
+
+A render hook template overrides the conversion of Markdown to HTML.
+
+For example, the render hook template below adds a `rel` attribute to external links.
+
+```go-html-template {file="layouts/_default/_markup/render-link.html"}
+{{- $u := urls.Parse .Destination -}}
+<a href="{{ .Destination | safeURL }}"
+  {{- with .Title }} title="{{ . }}"{{ end -}}
+  {{- if $u.IsAbs }} rel="external"{{ end -}}
+>
+  {{- with .Text }}{{ . }}{{ end -}}
+</a>
+{{- /* chomp trailing newline */ -}}
+```
+
+Learn more about [render hook templates](/render-hooks/).
+
+## Shortcode
+
+A shortcode template is used to render a component of your site. Unlike partial templates, shortcode templates are called from content pages.
+
+For example, the shortcode template below renders an audio element from a [global resource](g).
+
+```go-html-template {file="layouts/shortcodes/audio.html"}
+{{ with resources.Get (.Get "src") }}
+  <audio controls preload="auto" src="{{ .RelPermalink }}"></audio>
+{{ end }}
+```
+
+Then call the shortcode from within markup:
+
+```text {file="content/example.md"}
+{{</* audio src=/audio/test.mp3 */>}}
+```
+
+Learn more about [shortcode templates](/templates/shortcode/).
+
+## Other
+
+Use other specialized templates to create:
+
+- [Sitemaps](/templates/sitemap)
+- [RSS feeds](/templates/rss/)
+- [404 error pages](/templates/404/)
+- [robots.txt files](/templates/robots/)
+
+[`Render`]: /methods/page/render/
+[block]: /functions/go-template/block/
+[partial]: /functions/partials/include/
+[template lookup order]: /templates/lookup-order/
+[template lookup order]: /templates/lookup-order/
diff --git a/content/en/templates/types/index.md b/content/en/templates/types/index.md
deleted file mode 100644 (file)
index 8369917..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
----
-title: Template types
-linkTitle: Template types
-description: Create templates of different types to render your content, resources, and data.
-categories: [templates]
-keywords: []
-menu:
-  docs:
-    parent: templates
-    weight: 30
-weight: 30
-toc: true
-aliases: ['/templates/lists/']
----
-
-[![structural diagram of a website](site-hierarchy.svg)](site-hierarchy.svg)
-
-## Structure
-
-Create templates in the `layouts` directory in the root of your project.
-
-Although your site may not require each of these templates, the example below is typical for a site of medium complexity.
-
-```text
-layouts/
-├── _default/
-│   ├── _markup/
-│   │   ├── render-image.html   <-- render hook
-│   │   └── render-link.html    <-- render hook
-│   ├── baseof.html
-│   ├── home.html
-│   ├── section.html
-│   ├── single.html
-│   ├── taxonomy.html
-│   └── term.html
-├── articles/
-│   └── card.html               <-- content view
-├── partials/
-│   ├── footer.html
-│   └── header.html
-└── shortcodes/
-    ├── audio.html
-    └── video.html
-```
-
-Hugo's [template lookup order] determines the template path, allowing you to create unique templates for any page.
-
-[template lookup order]: /templates/lookup-order/
-
-{{% note %}}
-You must have thorough understanding of the template lookup order when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format.
-{{% /note %}}
-
-The purpose of each template type is described below.
-
-## Base
-
-Base templates reduce duplicate code by wrapping other templates within a shell.
-
-For example, the base template below calls the [partial] function to include partial templates for the `head`, `header`, and `footer` elements of each page, and it uses the [block] function to include `home`, `single`, `section`, `taxonomy`, and `term` templates within the `main` element of each page.
-
-[block]: /functions/go-template/block/
-[partial]: /functions/partials/include/
-
-{{< code file=layouts/_default/baseof.html >}}
-<!DOCTYPE html>
-<html lang="{{ or site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
-<head>
-  {{ partial "head.html" . }}
-</head>
-<body>
-  <header>
-    {{ partial "header.html" . }}
-  </header>
-  <main>
-    {{ block "main" . }}{{ end }}
-  </main>
-  <footer>
-    {{ partial "footer.html" . }}
-  </footer>
-</body>
-</html>
-{{< /code >}}
-
-Learn more about [base templates](/templates/base/).
-
-## Home
-
-A home page template is used to render your site's home page, and is the only template required for a single-page website.  For example, the home page template below inherits the site's shell from the base template and renders the home page content, such as a list of other pages.
-
-{{< code file=layouts/_default/home.html >}}
-{{ define "main" }}
-  {{ .Content }}
-  {{ range site.RegularPages }}
-    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-  {{ end }}
-{{ end }}
-{{< /code >}}
-
-{{% include "templates/_common/filter-sort-group.md" %}}
-
-Learn more about [home page templates](/templates/home/).
-
-## Single
-
-A single template renders a single page.
-
-For example, the single template below inherits the site's shell from the base template, and renders the title and content of each page.
-
-{{< code file=layouts/_default/single.html >}}
-{{ define "main" }}
-  <h1>{{ .Title }}</h1>
-  {{ .Content }}
-{{ end }}
-{{< /code >}}
-
-Learn more about [single templates](/templates/single/).
-
-## Section
-
-A section template typically renders a list of pages within a section.
-
-For example, the section template below inherits the site's shell from the base template, and renders a list of pages in the current section.
-
-{{< code file=layouts/_default/section.html >}}
-{{ define "main" }}
-  <h1>{{ .Title }}</h1>
-  {{ .Content }}
-  {{ range .Pages }}
-    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-  {{ end }}
-{{ end }}
-{{< /code >}}
-
-{{% include "templates/_common/filter-sort-group.md" %}}
-
-Learn more about [section templates](/templates/section/).
-
-## Taxonomy
-
-A taxonomy template renders a list of terms in a [taxonomy](g).
-
-For example, the taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy.
-
-{{< code file=layouts/_default/taxonomy.html >}}
-{{ define "main" }}
-  <h1>{{ .Title }}</h1>
-  {{ .Content }}
-  {{ range .Pages }}
-    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-  {{ end }}
-{{ end }}
-{{< /code >}}
-
-{{% include "templates/_common/filter-sort-group.md" %}}
-
-Learn more about [taxonomy templates](/templates/taxonomy/).
-
-## Term
-
-A term template renders a list of pages associated with a [term](g).
-
-For example, the term template below inherits the site's shell from the base template, and renders a list of pages associated with the current term.
-
-{{< code file=layouts/_default/term.html >}}
-{{ define "main" }}
-  <h1>{{ .Title }}</h1>
-  {{ .Content }}
-  {{ range .Pages }}
-    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-  {{ end }}
-{{ end }}
-{{< /code >}}
-
-{{% include "templates/_common/filter-sort-group.md" %}}
-
-Learn more about [term templates](/templates/term/).
-
-## Partial
-
-A partial template is typically used to render a component of your site, though you may also create partial templates that return values.
-
-{{% note %}}
-Unlike other template types, you cannot create partial templates to target a particular page kind, content type, section, language, or output format. Partial templates do not follow Hugo's [template lookup order].
-
-[template lookup order]: /templates/lookup-order/
-{{% /note %}}
-
-For example, the partial template below renders copyright information.
-
-{{< code file=layouts/partials/footer.html >}}
-<p>Copyright {{ now.Year }}. All rights reserved.</p>
-{{< /code >}}
-
-Learn more about [partial templates](/templates/partial/).
-
-## Content view
-
-A content view template is similar to a partial template, invoked by calling the [`Render`] method on a `Page` object. Unlike partial templates, content view templates:
-
-- Automatically inherit the context of the current page
-- Follow a lookup order allowing you to target a given content type or section
-
-[`Render`]: /methods/page/render/
-
-For example, the home template below inherits the site's shell from the base template, and renders a card component for each page within the "articles" section of your site.
-
-{{< code file=layouts/_default/home.html >}}
-{{ define "main" }}
-  {{ .Content }}
-  <ul>
-    {{ range where site.RegularPages "Section" "articles" }}
-      {{ .Render "card" }}
-    {{ end }}
-  </ul>
-{{ end }}
-{{< /code >}}
-
-{{< code file=layouts/articles/card.html >}}
-<div class="card">
-  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
-  {{ .Summary }}
-</div>
-{{< /code >}}
-
-Learn more about [content view templates](/templates/content-view/).
-
-## Render hook
-
-A render hook template overrides the conversion of Markdown to HTML.
-
-For example, the render hook template below adds a `rel` attribute to external links.
-
-{{< code file=layouts/_default/_markup/render-link.html >}}
-{{- $u := urls.Parse .Destination -}}
-<a href="{{ .Destination | safeURL }}"
-  {{- with .Title }} title="{{ . }}"{{ end -}}
-  {{- if $u.IsAbs }} rel="external"{{ end -}}
->
-  {{- with .Text }}{{ . }}{{ end -}}
-</a>
-{{- /* chomp trailing newline */ -}}
-{{< /code >}}
-
-Learn more about [render hook templates](/render-hooks/).
-
-## Shortcode
-
-A shortcode template is used to render a component of your site. Unlike partial templates, shortcode templates are called from content pages.
-
-For example, the shortcode template below renders an audio element from a [global resource](g).
-
-{{< code file=layouts/shortcodes/audio.html >}}
-{{ with resources.Get (.Get "src") }}
-  <audio controls preload="auto" src="{{ .RelPermalink }}"></audio>
-{{ end }}
-{{< /code >}}
-
-Then call the shortcode from within markup:
-
-{{< code file=content/example.md >}}
-{{</* audio src=/audio/test.mp3 */>}}
-{{< /code >}}
-
-Learn more about [shortcode templates](/templates/shortcode/).
-
-## Other
-
-Use other specialized templates to create:
-
-- [Sitemaps](/templates/sitemap)
-- [RSS feeds](/templates/rss/)
-- [404 error pages](/templates/404/)
-- [robots.txt files](/templates/robots/)
diff --git a/content/en/templates/types/site-hierarchy.svg b/content/en/templates/types/site-hierarchy.svg
deleted file mode 100644 (file)
index 3c74487..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="446" viewBox="0 0 1730 446" width="1730" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.538462 .461538)"><g transform="translate(2.996935 .388277)"><path d="m64.0494614 5.00059856 58.8489506 34.18916364v67.3333318l-58.8489506 33.404195-58.75248965-33.404195v-67.3333318z" fill="#ff4088"/><path d="m126.283637 35.8185172 1.230228 2.1375217v69.8133611l-1.253295 2.152899-60.9934622 34.621142h-2.4387878l-60.89490434-34.623239-1.25189712-2.1522v-69.8112641l1.22883034-2.1368227 60.89280732-35.43476985h2.4891154zm-116.37121203 6.0253228v61.994421l54.13913343 30.780872 54.2320996-30.782969v-61.990227l-54.2320996-31.5064271z" fill="#c9177e"/></g><path d="m60.4490685 78.3838073h-16.0432056v-32.93617h-27.9340521v32.93617h-16.04320555v-77.90259702h16.04320555v32.56189542h27.9340521v-32.56189542h16.0432056z" fill="#fff" fill-rule="nonzero" transform="translate(35.169824 33.865851)"/><g transform="translate(329.992265 24.431705)"><path d="m.21765.21067h263.332986v115.673517h-263.332986z" fill="#0083c0"/><path d="m263.550636 115.884187h-263.33298624v-115.6735171h263.33298624zm-260.79463916-113.13482905v110.59614105h258.25629216v-110.59614105z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(352.419436 42.870159)"><path d="m22.7288949.05688029h3.6312065v31.52968501h-3.6312065v-14.4804699h-18.90904412v14.4804699h-3.58685032v-31.52968501h3.58685032v13.99359541h18.90904412z"/><path d="m37.3865286 30.4794869c-1.5939528-.9445259-2.826533-2.2879966-3.6974799-4.0296294-.8709468-1.7418937-1.3064203-3.7788866-1.3064203-6.1112394 0-2.332092.4354735-4.3693457 1.3064203-6.1109785.8709469-1.7418937 2.1035271-3.0851036 3.6974799-4.0298904 1.5942137-.94478689 3.4394312-1.41704986 5.5356526-1.41704986 2.0959605 0 3.941178.47226297 5.5353917 1.41704986 1.5942137.9447868 2.826533 2.2879967 3.6974799 4.0298904.8709468 1.7416328 1.3064203 3.7788865 1.3064203 6.1109785 0 2.3323528-.4354735 4.3693457-1.3064203 6.1112394-.8709469 1.7416328-2.1032662 3.0851035-3.6974799 4.0296294-1.5942137.9447869-3.4394312 1.4170499-5.5353917 1.4170499-2.0962214 0-3.9414389-.472263-5.5356526-1.4170499zm10.6280042-3.741836c1.1809184-1.461406 1.7713776-3.594417 1.7713776-6.3990328 0-2.7159035-.6050707-4.8194306-1.8154728-6.3103205-1.2104022-1.4908898-2.8933283-2.2363347-5.0482564-2.2363347-2.1846728 0-3.8822104.7454449-5.0926125 2.2363347-1.2104022 1.4908899-1.8157337 3.594417-1.8157337 6.3103205 0 2.8046158.5977649 4.9376268 1.7935556 6.3990328 1.1955298 1.461406 2.9006339 2.1919786 5.1147906 2.1919786s3.9116942-.7305726 5.0923516-2.1919786z"/><path d="m91.1464927 17.5929699v13.9935954h-3.5868503v-13.8164316c0-2.0959605-.3616334-3.6163341-1.0849002-4.561121-.7232669-.9447869-1.8968795-1.4170498-3.520577-1.4170498-1.8893128 0-3.3655912.6348153-4.4283133 1.9041851-1.0627222 1.2693698-1.5942137 2.9966521-1.5942137 5.181064v12.7093533h-3.5868503v-13.8164316c0-2.0664767-.3692001-3.5795446-1.1070784-4.5389429-.7381392-.9593983-1.9190575-1.4392279-3.542755-1.4392279-1.8893128 0-3.3728969.6348153-4.4504915 1.9041851-1.0775945 1.2693698-1.6163917 2.9966521-1.6163917 5.181064v12.7093533h-3.5868504v-16.0305883c0-2.3026081-.1181962-4.3839571-.3543276-6.24378613h3.4099473l.3540668 3.89682183c.619943-1.4170498 1.5425518-2.5092558 2.7678263-3.27687883 1.2252746-.76762302 2.6496301-1.15143453 4.2733276-1.15143453 1.7713775 0 3.2179112.35432769 4.3398619 1.06272215 1.1216898.70865541 1.9482805 1.80086131 2.479772 3.27713971.6789106-1.3285983 1.6753594-2.3840148 2.9890854-3.16624924 1.313726-.78249538 2.7973101-1.17361262 4.4504915-1.17361262 4.930321 0 7.3952206 2.93742346 7.3952206 8.81227056z"/><path d="m116.609555 20.3386181h-16.340559c.029483 2.8340996.686477 4.9744163 1.970458 6.4212109 1.284242 1.4465336 3.151638 2.1698005 5.601926 2.1698005 2.597968 0 4.989289-.8709469 7.173962-2.6128406l1.19553 2.6128406c-.974271.915303-2.221463 1.6385698-3.741837 2.1698004-1.520373.5314916-3.077797.7971069-4.672011.7971069-3.483526 0-6.214302-1.0259326-8.1923275-3.0775369-1.9780252-2.0518652-2.9669073-4.8637868-2.9669073-8.4360256 0-2.2731244.4427791-4.2882 1.3283374-6.0447052.8858192-1.7565051 2.1257054-3.121893 3.7199194-4.0961637 1.594213-.97427072 3.409686-1.46140606 5.44694-1.46140606 2.952035 0 5.269515.96696496 6.952441 2.90063396 1.682665 1.933669 2.524128 4.5979105 2.524128 7.9929856zm-13.971417-7.0852492c-1.166046 1.1216898-1.911491 2.701292-2.236335 4.7382848h12.974969c-.177164-2.0959604-.789801-3.6901741-1.837651-4.782641-1.048111-1.092206-2.50195-1.6385699-4.36204-1.6385699-1.859829 0-3.372897.5609754-4.538943 1.6829261z"/><path d="m138.352699 10.2421054c1.505502.9742707 2.671548 2.3396586 3.498399 4.0961637.826591 1.7565052 1.239886 3.7861923 1.239886 6.0890613 0 2.3026082-.413295 4.3174229-1.239886 6.0444443-.826851 1.7272822-1.985592 3.0631863-3.476221 4.0077122-1.49089.9447869-3.225478 1.4170499-5.203503 1.4170499-1.741632 0-3.262006-.3838115-4.561121-1.1511736-1.298853-.767623-2.287996-1.8600899-2.966907-3.2771398v13.683624h-3.587111v-25.5958704c0-2.3026081-.117936-4.3839571-.354067-6.24378613h3.409686l.354328 4.29550573c.619943-1.5352461 1.60152-2.7234701 2.944729-3.5649332 1.343471-.841463 2.930118-1.26206406 4.760463-1.26206406 1.948542 0 3.675563.48713534 5.181325 1.46140606zm-.774929 16.4733674c1.19553-1.4760175 1.793295-3.5722389 1.793295-6.2881424 0-2.7161643-.60507-4.8343029-1.815473-6.3546766-1.210402-1.5203736-2.893328-2.2806909-5.048256-2.2806909-2.214418 0-3.911694.7381392-5.092613 2.2141566-1.180918 1.4760175-1.771377 3.5868504-1.771377 6.3324986s.590459 4.8637867 1.771377 6.3546766c1.180919 1.4908898 2.878195 2.2363348 5.092613 2.2363348 2.184412 0 3.874644-.7381392 5.070434-2.2141567z"/><path d="m168.243032 9.31219087v22.27437443h-3.540668v-4.0296295c-.649688 1.387566-1.633352 2.4575939-2.945773 3.2103445-1.313987.7530116-2.841666 1.1292565-4.58356 1.1292565-1.978025 0-3.712352-.472263-5.203242-1.4170499-1.49089-.9445259-2.642325-2.28043-3.454043-4.0077122-.811979-1.7270214-1.217969-3.7418361-1.217969-6.0444443 0-2.302869.413296-4.3325561 1.239886-6.0890613.826852-1.7565051 1.985592-3.121893 3.476221-4.0961637 1.49089-.97427072 3.210606-1.46140606 5.159147-1.46140606 1.741894 0 3.262267.38381151 4.560077 1.15143453 1.299376.76762303 2.288258 1.84521753 2.969256 3.23252263v-3.85246563zm-5.312307 17.38110383c1.179353-1.4908899 1.771639-3.6090284 1.771639-6.3546766s-.592286-4.8564811-1.771639-6.3324986c-1.181962-1.4760174-2.864627-2.2141566-5.0493-2.2141566-2.184412 0-3.889516.7603173-5.114529 2.2806909-1.225275 1.5203737-1.837912 3.6385123-1.837912 6.3546766 0 2.7159035.605331 4.8121249 1.815734 6.2881424 1.210402 1.4760175 2.922551 2.2141567 5.136707 2.2141567 2.184673 0 3.867338-.745445 5.0493-2.2363348z"/><path d="m195.034171 9.31219087v22.09721053c0 3.3066236-.847986 5.8085737-2.543958 7.5061112-1.698581 1.6975375-4.200792 2.5463063-7.506633 2.5463063-3.394553 0-6.319453-.7676231-8.76948-2.3028691l.620987-2.9225511c1.416789.7971068 2.752693 1.3726936 4.007712 1.7270213s2.63528.5314915 4.140781.5314915c2.155189 0 3.778104-.568281 4.871353-1.7051041 1.090641-1.1365622 1.63857-2.826533 1.63857-5.0704345v-5.2695154c-.680998 1.4170498-1.675098 2.5165615-2.990129 3.2990569-1.315031.7822345-2.870106 1.1733517-4.670446 1.1733517-1.949063 0-3.684173-.4573906-5.205329-1.3726936-1.518548-.9150422-2.692682-2.2141567-3.519795-3.8968219-.827112-1.682926-1.239364-3.616595-1.239364-5.8012679 0-2.1846728.412252-4.1183418 1.239364-5.801007.827113-1.682926 2.001247-2.9817797 3.519795-3.8970827 1.521156-.91504214 3.256266-1.37269366 5.205329-1.37269366 1.769029 0 3.313668.38381151 4.62609 1.15143453 1.31503.76762303 2.309131 1.84521753 2.990129 3.23252263v-3.85246563zm-5.424501 16.45118933c1.226318-1.4319222 1.839477-3.4023808 1.839477-5.9118975 0-2.5092558-.613159-4.4799752-1.839477-5.9116365-1.223709-1.4319222-2.914463-2.1478833-5.069652-2.1478833-2.18389 0-3.903345.7159611-5.158364 2.1478833-1.255019 1.4316613-1.881224 3.4023807-1.881224 5.9116365 0 2.5095167.626205 4.4799753 1.881224 5.9118975s2.974474 2.1476224 5.158364 2.1476224c2.155189 0 3.845943-.7157002 5.069652-2.1476224z"/><path d="m220.585946 20.3386181h-16.338733c.028701 2.8340996.686216 4.9744163 1.969936 6.4212109 1.283721 1.4465336 3.151899 2.1698005 5.601926 2.1698005 2.598751 0 4.988767-.8709469 7.172657-2.6128406l1.195008 2.6128406c-.973227.915303-2.220419 1.6385698-3.741575 2.1698004-1.518547.5314916-3.076232.7971069-4.670446.7971069-3.483266 0-6.215085-1.0259326-8.192849-3.0775369-1.977765-2.0518652-2.966647-4.8637868-2.966647-8.4360256 0-2.2731244.443562-4.2882 1.328077-6.0447052.887124-1.7565051 2.126488-3.121893 3.720701-4.0961637 1.594214-.97427072 3.410209-1.46140606 5.445375-1.46140606 2.953601 0 5.270559.96696496 6.953485 2.90063396s2.523085 4.5979105 2.523085 7.9929856zm-13.969591-7.0852492c-1.166307 1.1216898-1.912535 2.701292-2.236074 4.7382848h12.972881c-.177424-2.0959604-.787974-3.6901741-1.836868-4.782641-1.048893-1.092206-2.502211-1.6385699-4.362562-1.6385699-1.86035 0-3.37107.5609754-4.537377 1.6829261z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(347.017193 95.746626)"><path d="m.13103057 17.5444886 1.30960428-16.95274668h3.09535177l-1.16678937 14.42893518h7.92875255l-.1903731 2.5238115z"/><path d="m13.2028032 17.5444886.9524268-12.02408921h2.9762458l-.9524267 12.02408921zm1.1904984-17.47658839h3.3095741l-.2142224 2.92868762h-3.3095741z"/><path d="m18.7267099 16.2111754 1.0238341-2.0715176c1.3493063.936574 2.7858728 1.404861 4.3096994 1.404861 1.5396794 0 2.3095892-.4444378 2.3095892-1.3334535 0-.412592-.202438-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516115-.4563624-1.940487-.7261395-.8413173-.2380716-1.5398197-.4762835-2.0953669-.7143551-.5555471-.2380716-1.0277622-.5833245-1.4166453-1.0357588-.388883-.452294-.5833245-1.04361503-.5833245-1.77382287 0-1.14279984.4602905-2.06352109 1.3808714-2.76188318.9207213-.69850237 2.1429251-1.04768342 3.6667517-1.04768342.8890158 0 1.7461858.13495869 2.5715101.40473576.8254645.26991737 1.5159704.64294766 2.0715176 1.11909088l-.999985 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6906009-1.35716248-.7460606 0-1.3174605.11910595-1.71434.35717755-.3968796.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.202438.74998869.6071738.96421105.4047358.21436265 1.0594677.45636238 1.9643363.72627978.8730227.2539243 1.5793813.4960643 2.1190758.7261394.5396944.2302154 1.0040533.5754683 1.3929363 1.0357588.388883.4604308.5833246 1.0556799.5833246 1.7857475 0 1.1587929-.4602905 2.0635211-1.3810118 2.714325-.9207212.6508038-2.1587778.9762759-3.7143099.9762759-1.9525519 0-3.7064536-.5079889-5.262126-1.5238266z"/><path d="m35.3699775 13.1396729c-.1111094 1.4127172.4841397 2.1190758 1.7857475 2.1190758.3651741 0 .7777661-.0555547 1.2381968-.1666642l-.1905134 2.3334385c-.5238417.1903731-1.1746456.2856298-1.9524116.2856298-1.2540496 0-2.2143325-.3294002-2.8809891-.9880603-.6667969-.6588004-1.0001253-1.6151552-1.0001253-2.8690645 0-.2382119.0079966-.4207288.0238493-.547691l.428585-5.54775586h-2.3095892l.1905134-2.23818175h2.28574l.2380716-2.92854732 3.0476532-1.00012522-.309479 3.92867254h3.2143174l-.1903731 2.23818175h-3.1906085z"/><path d="m39.5605709 16.2111754 1.0238342-2.0715176c1.349166.936574 2.7857324 1.404861 4.309559 1.404861 1.5398197 0 2.3095893-.4444378 2.3095893-1.3334535 0-.412592-.2022978-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516116-.4563624-1.9404871-.7261395-.8413172-.2380716-1.5396793-.4762835-2.0952265-.7143551s-1.0279026-.5833245-1.4167856-1.0357588c-.388883-.452294-.5833246-1.04361503-.5833246-1.77382287 0-1.14279984.4602905-2.06352109 1.3810118-2.76188318.9207212-.69850237 2.142925-1.04768342 3.6667517-1.04768342.8888754 0 1.7460455.13495869 2.57151.40473576.8253243.26991737 1.5158301.64294766 2.0715176 1.11909088l-1.0001252 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6904606-1.35716248-.7460606 0-1.3176008.11910595-1.7143401.35717755-.3968795.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.2022978.74998869.6071738.96421105.4047358.21436265 1.0594678.45636238 1.964196.72627978.8731631.2539243 1.5795217.4960643 2.1192161.7261394.5396945.2302154 1.003913.5754683 1.3927961 1.0357588.388883.4604308.5833245 1.0556799.5833245 1.7857475 0 1.1587929-.4602905 2.0635211-1.3808714 2.714325-.9207213.6508038-2.1587778.9762759-3.7144502.9762759-1.9524117 0-3.7064537-.5079889-5.2619858-1.5238266z"/><path d="m58.3943218 15.592077.7380641-1.4999774c.8413173.7142148 1.6984873 1.2222038 2.57151 1.5238266.8730228.3016229 1.8890008.4524343 3.0476533.4524343 1.365159 0 2.4167706-.2659893 3.1548346-.7976872.7382044-.5318382 1.1071663-1.2818269 1.1071663-2.2501064 0-.5713999-.1784485-1.0357588-.5356261-1.392796-.3571775-.3571776-.8254645-.6390196-1.4048609-.8452454-.5793965-.2063662-1.3532344-.4207288-2.3215139-.6429477-1.3016077-.2857701-2.3730001-.59524916-3.2143174-.92857747s-1.5238266-.81353993-2.0476684-1.44049456c-.5238417-.62695464-.7857625-1.44849108-.7857625-2.46432874 0-.96827945.2540646-1.82152136.7619133-2.55958543.507989-.73820436 1.2262722-1.31353239 2.1548497-1.72626467.9285774-.41273227 2.0120347-.61909841 3.2500913-.61909841 1.1746456 0 2.2698872.18265718 3.2857249.54769096 1.0159779.36503378 1.8731479.896872 2.57151 1.59523409l-.7619133 1.50011768c-.7936188-.68264964-1.5991622-1.18264211-2.4166302-1.50011768-.8174681-.31747557-1.710412-.47614322-2.6786914-.47614322-1.3174605 0-2.3492912.28170171-3.0953518.8452454s-1.1190909 1.33738164-1.1190909 2.32151383c0 .85717002.3254721 1.49997739.976276 1.9285624s1.6507888.8016153 3.0000951 1.11909087c1.4602754.34918105 2.6071436.67058473 3.4404644.96435135.833461.29362633 1.527895.73806407 2.0834422 1.3333132.5555472.5952492.8333208 1.3849399.8333208 2.3690721 0 .9524267-.2539244 1.7896756-.7619133 2.5120272-.507989.7222113-1.2341285 1.2816866-2.1785587 1.6785662-.9445705.3968795-2.0517367.5952491-3.3214987.5952491-2.6509141 0-4.7619934-.7143551-6.3335185-2.142925z"/><path d="m83.9663269 11.4967403h-8.7859225c.0158527 1.5238266.3691021 2.674623 1.059608 3.4525293.6905059.7777661 1.6944189 1.1666491 3.0118794 1.1666491 1.3968645 0 2.6826195-.468287 3.8572651-1.404861l.6429477 1.404861c-.5238417.4921362-1.1945668.8810193-2.0120348 1.1666491-.817468.2857701-1.6547169.428585-2.5118869.428585-1.873148 0-3.3414199-.5516191-4.4049561-1.6547169-1.0635361-1.1032382-1.5952341-2.6151402-1.5952341-4.5358464 0-1.2222038.2380716-2.30566106.7143551-3.25009127.4761433-.94443021 1.1427999-1.67856617 1.9999699-2.20240788s1.833446-.78576257 2.9286876-.78576257c1.5872376 0 2.8334309.5199136 3.7381591 1.55960051.9047283 1.03968691 1.3571625 2.47218496 1.3571625 4.29763441zm-7.5120921-3.80956661c-.6269547.60310539-1.0277623 1.45241918-1.202423 2.54766081h6.9763258c-.0951164-1.1269471-.4245166-1.98411712-.9880603-2.57151006-.5635437-.58725265-1.3452378-.88101927-2.345363-.88101927-.999985 0-1.8135249.30162284-2.4404795.90486852z"/><path d="m88.8830598 16.9492395c-.8650263-.5078487-1.5316829-1.2261319-1.9999699-2.1548497-.468287-.9285775-.7024305-2.0118945-.7024305-3.249951 0-1.2381968.2380716-2.32951036.7143551-3.27394057.4761433-.94443021 1.1547245-1.67856617 2.0357438-2.20240788.8808789-.52384171 1.9087815-.78576257 3.0834271-.78576257.8094715 0 1.591306.1388868 2.3452228.41666039.7540571.27777359 1.3770836.66272851 1.8690796 1.15486475l-.6428074 1.42856993c-.6032457-.4762835-1.1865702-.82546455-1.7501139-1.04768342s-1.1388717-.33332831-1.7262647-.33332831c-1.2222038 0-2.1824867.40880417-2.8809891 1.2262722-.6983621.81746804-1.0475431 1.95633978-1.0475431 3.41675548 0 1.4444227.3452529 2.5674416 1.0356185 3.3690569.6905059.8016153 1.6548572 1.202423 2.8929137 1.202423.587393 0 1.162721-.1111094 1.7262647-.3333283s1.1468682-.5713999 1.7501139-1.0476834l.6428074 1.4285699c-.507989.4762835-1.1468683.8532419-1.9166378 1.1310155-.7699098.2777736-1.567597.4166604-2.3929213.4166604-1.1587928 0-2.1707024-.2539244-3.0358689-.7619133z"/><path d="m101.276251 7.09192453v6.54774077c0 .8888755.182517 1.511902.547691 1.8690796.365034.3571776.880879.5357663 1.547536.5357663.444437 0 .873023-.0714074 1.285755-.2143626v1.6429326c-.491996.1588079-1.047543.2380716-1.666642.2380716-1.14294 0-2.035743-.3214037-2.678691-.9642111-.6428075-.6429476-.9642112-1.591306-.9642112-2.8453555v-6.80966167h-2.3334385v-1.52382664h2.3334385v-3.07150253l1.9285622-.69050586v3.76200839h3.42868v1.52382664z"/><path d="m107.038229 17.5444886v-11.97639071h1.928703v11.97639071zm-.190373-17.04800338h2.357148v2.19062355h-2.357148z"/><path d="m114.681352 16.9492395c-.85717-.5078487-1.519898-1.2302003-1.988185-2.166634-.468287-.936574-.702431-2.0318157-.702431-3.2858652 0-1.2539093.234144-2.3492912.702431-3.2857249.468287-.93657398 1.131015-1.65878532 1.988185-2.1667743.85717-.50798897 1.849159-.76191332 2.976246-.76191332 1.126947 0 2.119076.25392435 2.976246.76191332.85717.50798898 1.519898 1.23020032 1.988185 2.1667743.468147.9364337.702291 2.0318156.702291 3.2857249 0 1.2540495-.234144 2.3492912-.702291 3.2858652-.468287.9364337-1.131015 1.6587853-1.988185 2.166634-.85717.5079889-1.849299.7619133-2.976246.7619133-1.127087 0-2.119076-.2539244-2.976246-.7619133zm5.71442-2.0118945c.634951-.7857626.952287-1.9326308.952287-3.4406047 0-1.4602754-.325332-2.59129092-.976136-3.39290622-.650804-.80161531-1.555532-1.20242296-2.714325-1.20242296-1.174646 0-2.08737.40080765-2.738174 1.20242296-.650804.8016153-.976276 1.93263082-.976276 3.39290622 0 1.5079739.321544 2.6548421.964351 3.4406047.642808.7857626 1.559601 1.1785737 2.750099 1.1785737s2.103223-.3928111 2.738174-1.1785737z"/><path d="m136.610315 10.0204719v7.5240167h-1.928563v-7.42876c0-1.11109441-.222219-1.92463434-.666656-2.44047953-.444438-.5158452-1.142941-.77383795-2.095367-.77383795-1.111095 0-1.99997.34132482-2.666627 1.02383418-.666656.68250935-1.000125 1.6032306-1.000125 2.7620235v6.8572198h-1.928562v-8.61925838c0-1.23805653-.063411-2.35714741-.190514-3.35713233h1.833446l.190514 2.14292505c.365033-.77790635.912724-1.37708362 1.642792-1.79767212.730208-.42072879 1.563529-.63102304 2.500102-.63102304 2.873133 0 4.30956 1.57938136 4.30956 4.73814412z"/><path d="m139.515153 16.1634769.642948-1.4285699c.650803.5079889 1.309464.8730227 1.97626 1.0952416.666517.2222189 1.412858.3333283 2.237761.3333283.904869 0 1.590885-.1547395 2.059453-.4642186s.702851-.7579852.702851-1.3452379c0-.4762835-.158527-.85717-.475582-1.1429401-.318457-.2857701-.841738-.507989-1.572647-.6666566l-2.022977-.4762835c-1.000406-.2222189-1.774104-.6189581-2.321795-1.1904983-.547691-.5713999-.821396-1.2539093-.821396-2.04766838 0-1.04754313.420588-1.90078504 1.261906-2.55958543.841317-.65866011 1.952832-.98806031 3.333283-.98806031.841738 0 1.635778.13495869 2.380716.40473577.746341.26991736 1.373436.65880039 1.881285 1.16678937l-.642527 1.40472069c-1.127929-.93657399-2.333018-1.40472069-3.619474-1.40472069-.85717 0-1.519338.16259575-1.987905.48806784-.468427.32533179-.702571.78169416-.702571 1.3690871 0 .49199596.146883.88101927.44051 1.16664909.294328.28577005.765701.50798895 1.416645.66665665l2.02438.4999924c1.111095.2540647 1.935998.6468758 2.476113 1.178714.540116.531698.809472 1.2261319.809472 2.083302 0 1.0318306-.420869 1.8571549-1.262607 2.4762533-.840336.6190984-1.983697.9285775-3.42868.9285775-2.015402 0-3.610776-.5158452-4.785422-1.5476759z"/><path d="m171.469076 17.5444886-1.857435-4.3572575h-8.857891l-1.881285 4.3572575h-2.022977l7.452188-16.95274668h1.71434l7.452189 16.95274668zm-10.025101-5.9763409h7.476038l-3.737318-8.71437478z"/><path d="m178.348883 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.332487 1.8333057-.22306.5555472-.596231 1.0952416-1.119511 1.6190833l-.904869-.6905058c.618678-.7142148.967999-1.3968645 1.047964-2.0476684h-1.143361v-2.4524041z"/><path d="m200.064324 10.2943173c.540116.7063586.809472 1.5834498.809472 2.6309929 0 1.4762685-.492417 2.6151402-1.475848 3.4167555-.984833.8016153-2.373701 1.2024229-4.166603 1.2024229h-7.048155v-16.95274668h6.809662c1.729772 0 3.07515.38495492 4.036134 1.15486475.959582.76976954 1.439373 1.86108306 1.439373 3.27380026 0 .90486851-.232881 1.68656268-.701449 2.34536307-.468567.65866011-1.12372 1.14686824-1.964055 1.46420352.967998.26991737 1.721354.75798521 2.261469 1.46434378zm-9.95215-2.1785586h4.570638c1.269622 0 2.230606-.25406463 2.88155-.76191332.650944-.50798897.976416-1.25404956.976416-2.23818175 0-1.93655891-1.286456-2.90483837-3.857966-2.90483837h-4.570638zm7.892698 7.0596579c.627095-.4999925.939941-1.2658339.939941-2.2976646 0-2.0793738-1.293471-3.11906071-3.880413-3.11906071h-4.952226v6.16671401h4.952226c1.332752 0 2.313377-.2499962 2.940472-.7499887z"/><path d="m206.064515 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.33389 1.8333057-.221658.5555472-.594828 1.0952416-1.118109 1.6190833l-.904868-.6905058c.618677-.7142148.967999-1.3968645 1.046561-2.0476684h-1.141958v-2.4524041z"/><path d="m218.957137 16.6873186c-1.182642-.6983621-2.090316-1.7024154-2.725828-3.0118794-.635513-1.3096043-.952567-2.853352-.952567-4.63110303 0-1.77789127.317054-3.31364253.952567-4.60725378.635512-1.29361125 1.543186-2.28966807 2.725828-2.98817045 1.182642-.69836209 2.575719-1.04768342 4.17923-1.04768342 1.174225 0 2.250247.17858878 3.226663.53576634.975013.35717755 1.82096.89294389 2.535035 1.60715871l-.737924 1.50011768c-.809471-.69850238-1.60772-1.19849484-2.393342-1.50011768s-1.654016-.45229397-2.606583-.45229397c-1.857435 0-3.29821.60310539-4.322325 1.80945645-1.022712 1.20635107-1.534769 2.92069111-1.534769 5.14302012 0 2.23818173.507848 3.96430613 1.523546 5.17865373 1.015697 1.2143476 2.460681 1.8215213 4.333548 1.8215213.952567 0 1.820961-.1508114 2.606583-.4524342.785622-.3016229 1.583871-.8016153 2.393342-1.4999774l.737924 1.4999774c-.714075.7143551-1.560022 1.2499811-2.535035 1.6071587-.976416.3571776-2.052438.5357663-3.226663.5357663-1.603511 0-2.996588-.349181-4.17923-1.0476834z"/></g><g transform="translate(.267895 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g transform="translate(.968438 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(97.321977 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(193.675515 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(329.309669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(425.663669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(523.997669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(660.171823 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(756.527208 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(852.877977 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(26.69736 242.51167)"><path d="m.00427353 31.0947909 1.49915514-3.0461739c1.70855821 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592255.9188095 6.18921435.9188095 2.772098 0 4.9077245-.5401745 6.4068797-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626805-2.1034326-1.0880414-2.8285086-.7253608-.7253609-1.6763642-1.2977293-2.8527252-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145609-1.3057065-2.6433221-.5803457-4.8194048-1.2088399-6.52767811-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.51567289-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49004483-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08578183-1.25727321 6.60004333-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478846-2.40172515-4.9080094-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399217-.96695791-2.6755162 0-4.7706866.57208353-6.28579626 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272854 1.6279309 6.09263255 2.2726645 2.9658314.7091214 5.2949065 1.3618322 6.9872253 1.9584174 1.6923188.5963002 3.1025845 1.4988702 4.230797 2.70771 1.1284974 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.38322623 0-9.67071874-1.4507218-12.86219267-4.3518804z"/><path d="m51.9362381 22.7779272h-17.8425672c.0324789 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4413331 2.3692463 6.1168493 2.3692463 2.8367707 0 5.4478989-.9510034 7.8330998-2.8530102l1.3057065 2.8530102c-1.0638246.9994368-2.4256569 1.7891855-4.0857817 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037287 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598433-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837638-4.6823669 1.4507217-6.6003282s2.3210979-3.4088543 4.06185-4.4726789c1.7404673-1.0638247 3.7231014-1.595737 5.9473325-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2553707-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418964 5.1738231h14.1676144c-.1934486-2.288619-.8623989-4.0293711-2.0068508-5.2222565-1.1441671-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829302.6125397-4.9561579 1.8376189z"/><path d="m61.9214888 33.8509343c-1.7569916-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.4837639-4.7308002 1.4507218-6.6487615s2.3453145-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7627093.8461594 1.5313491.5641063 2.7965995 1.3458778 3.7960363 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325078.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276493 3.9729605-2.1276493 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749674 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812-1.5635431.5641063-3.1832118.8461594-4.8595761.8461594-2.3532918 0-4.408291-.5156729-6.1649977-1.5473036z"/><path d="m87.0894602 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891855 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994368.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.7912464 35.0597742v-24.321812h3.9165496v24.321812zm-.3868972-34.62130978h4.7869258v4.44874713h-4.7869258z"/><path d="m114.312716 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037634-4.4000289-.950718-1.9020067-1.42622-4.1262378-1.42622-6.6729782 0-2.5464555.475502-4.7709715 1.42622-6.6726933.951004-1.9020068 2.296882-3.3686831 4.037634-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037633 4.4003138c.951004 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475501 4.7709715-1.426505 6.6729782-.951003 1.9017219-2.296881 3.3686831-4.037633 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289467-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.98235 3.9248121-1.98235 6.8903586c0 3.0624133.652711 5.3914884 1.958133 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.846626 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320813-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353856 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.129061-4.786926-.386897-6.8177085h3.723101l.386897 4.3518804c.741316-1.5797825 1.853574-2.7965996 3.33649-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m205.653771 35.0597742-3.772105-8.848776h-17.988722l-3.817689 8.848776h-4.111138l15.134003-34.42786122h3.481504l15.134002 34.42786122zm-20.359108-12.1368318h15.185285l-7.592643-17.69726709z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(22.788376 290.137172)"><path d="m.04658391 21.7701602 1.62834138-20.70276002h4.56506199l-1.36656882 17.01005832h9.24650314l-.2907867 3.6927017z"/><path d="m16.3006611 21.7701602 1.1629859-14.74195382h4.3906544l-1.1629859 14.74195382zm1.5119622-21.66232409h4.7104554l-.319801 4.12904304h-4.7104553z"/><path d="m23.395439 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.6863698.9935752 2.6169196 1.2940334.9303887.3004581 1.8609386.4506872 2.7913273.4506872.8141707 0 1.415087-.1163792 1.8027489-.3489764.387662-.2325971.5815736-.5427267.5815736-.9303886 0-.407166-.2277615-.7269669-.6832845-.9595641-.4555229-.2325972-1.1969969-.5040411-2.224422-.8141707-1.0661106-.2907868-1.9384709-.5815735-2.6169196-.8723603-.6784487-.2907867-1.2648579-.72197-1.7590665-1.2938721-.4943697-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2664471-1.78340617.7995024-2.50054048.5330554-.7172955 1.2891976-1.27936503 2.2681045-1.68653097.9789069-.40700475 2.0983714-.61058772 3.3583937-.61058772 1.1047962 0 2.1855752.16473618 3.2420144.49436973 1.0564393.32947236 1.9433067.7753239 2.6606022 1.33755462l-1.3957442 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2679433-1.1921612-.7948279-.27144401-1.5701518-.40716599-2.3262941-.40716599-.7946667 0-1.395583.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845371.25194 1.2211754.5135513 2.2097537.7849953 1.0662719.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7447205 1.2938721.4942086.5719021.7413128 1.3133761.7413128 2.224422 0 1.4539338-.5765766 2.5927412-1.7300522 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7458015-1.802749z"/><path d="m44.7087867 16.0421124c-.0581896.8141707.1065466 1.415087.4942086 1.8027489.3878231.387662.9208784.5815736 1.5993272.5815736.4458515 0 .94006-.0776936 1.482948-.2327584l-.2907868 3.4020761c-.6591059.271444-1.5119622.4070048-2.5587301.4070048-1.6671881 0-2.9417175-.4458516-3.8237491-1.3375546-.8818705-.8915419-1.3228864-2.1515642-1.3228864-3.7799055 0-.3296336.0096714-.5815736.0290142-.7559811l.4651944-5.8154129h-2.7913273l.2616114-3.28569692h2.7914884l.2616114-3.46010454 4.5070336-1.42475841-.3779906 4.88486295h3.7508913l-.2617725 3.28569692h-3.7508913z"/><path d="m49.3900667 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.686531.9935752 2.6169197 1.2940334.9305498.3004581 1.8609385.4506872 2.7914884.4506872.8141707 0 1.415087-.1163792 1.802749-.3489764.3876619-.2325971.5815735-.5427267.5815735-.9303886 0-.407166-.2277615-.7269669-.6832844-.9595641-.4556842-.2325972-1.196997-.5040411-2.224422-.8141707-1.0661107-.2907868-1.938471-.5815735-2.6169197-.8723603-.6784487-.2907867-1.2648579-.72197-1.7592276-1.2938721-.4942086-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2666082-1.78340617.7996635-2.50054048.5330554-.7172955 1.2890365-1.27936503 2.2679433-1.68653097.9789069-.40700475 2.0983715-.61058772 3.3583937-.61058772 1.1049574 0 2.1857364.16473618 3.2421757.49436973 1.0564392.32947236 1.9433066.7753239 2.6604409 1.33755462l-1.395583 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2681045-1.1921612-.7946667-.27144401-1.5701518-.40716599-2.3261329-.40716599-.7948279 0-1.3957442.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845372.25194 1.2211755.5135513 2.2097537.7849953 1.0661107.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7445594 1.2938721.4943697.5719021.741474 1.3133761.741474 2.224422 0 1.4539338-.5767379 2.5927412-1.7300523 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7459627-1.802749z"/><path d="m73.2145935 2.29179942h7.7695192c2.0061707 0 3.5700361.48340881 4.6917573 1.44990405 1.12156.96665643 1.68234 2.29808583 1.68234 3.9942882 0 1.69604118-.5652933 3.03198393-1.6960412 4.00782813-1.1307478.9756831-2.6900999 1.4636052-4.6780561 1.4636052h-5.526238v8.5627352h-2.2432812zm7.5778643 9.05533178c1.4408774 0 2.5260084-.3101295 3.2555544-.9302274.7295459-.62009798 1.0943189-1.51373534 1.0943189-2.68091213 0-1.16733798-.364773-2.05646202-1.0943189-2.66737212-.729546-.61107129-1.814677-.91652634-3.2555544-.91652634h-5.3345831v7.19503799z"/><path d="m102.432215 8.0095311v13.7606291h-2.188638v-2.4894183c-.4012015.8572084-1.0075983 1.5182486-1.8193511 1.9832817-.8115916.4651944-1.7553591.6976303-2.8314635.6976303-1.2218202 0-2.2934114-.2917539-3.214451-.8754229-.9210397-.5835078-1.63221-1.4088006-2.1338332-2.4758784-.5016233-1.0669166-.7522738-2.3116257-.7522738-3.7341275 0-1.4226629.255325-2.6765599.7659749-3.761691s1.2264947-1.92863838 2.1475344-2.53052184c.9210396-.60188346 1.9834429-.90282519 3.1870487-.90282519 1.0761044 0 2.0153585.23711049 2.8179235.71133147.8024039.47422098 1.4134752 1.13993568 1.8328911 1.99698296v-2.3799704zm-3.2829565 10.7376719c.729546-.9210397 1.0943185-2.2295801 1.0943185-3.9257825s-.3647725-3.0002295-1.0943185-3.9120813c-.7295459-.91185183-1.7690602-1.36785834-3.1187041-1.36785834s-2.4028593.46970764-3.1598076 1.40896184c-.756787.9392541-1.1352611 2.2477945-1.1352611 3.9257824 0 1.6778267.3737996 2.9728272 1.12156 3.884679s1.8056504 1.3678583 3.1735087 1.3678583c1.3496439 0 2.3891582-.4605198 3.1187041-1.3815594z"/><path d="m118.983366 8.0095311v13.6511811c0 2.0427609-.524351 3.5884118-1.573054 4.6371139-1.048702 1.0487022-2.594514 1.5730532-4.637113 1.5730532-2.097405 0-3.903055-.4742209-5.41679-1.4226629l.382987-1.8054892c.875423.4924355 1.700716.8480206 2.475878 1.0669166.775163.218896 1.627697.328344 2.557925.328344 1.331429 0 2.334514-.3510718 3.009256-1.0533766.674902-.7021436 1.012273-1.7461713 1.012273-3.1324053v-3.2553932c-.419417.8754229-1.035001 1.5546775-1.846593 2.0380863-.811591.4832477-1.773735.7248715-2.886268.7248715-1.203606 0-2.275197-.2825661-3.214451-.8480206-.939254-.5652933-1.664287-1.3678584-2.174937-2.4073727-.51065-1.0396755-.765974-2.2342546-.765974-3.5838984 0-1.3496439.255324-2.544223.765974-3.5837373.51065-1.0396755 1.235683-1.84207932 2.174937-2.40753384.939254-.56529333 2.010845-.84802059 3.214451-.84802059 1.094319 0 2.047274.23711049 2.858866.71133147s1.427176 1.13993568 1.846593 1.99698296v-2.3799704zm-3.351302 10.1631907c.756787-.8846107 1.135262-2.1019176 1.135262-3.652243 0-1.5501643-.378475-2.7676323-1.135262-3.6520819-.756948-.88461068-1.800976-1.32691604-3.132405-1.32691604-1.349644 0-2.412047.44230536-3.18721 1.32691604-.775001.8844496-1.162663 2.1019176-1.162663 3.6520819 0 1.5503254.387662 2.7676323 1.162663 3.652243.775163.8846107 1.837566 1.3267549 3.18721 1.3267549 1.331429 0 2.375457-.4421442 3.132405-1.3267549z"/><path d="m134.76838 14.8214205h-10.094846c.018375 1.7508458.424091 3.0730874 1.217468 3.9668859.793377.8936374 1.947014 1.340456 3.460749 1.340456 1.604969 0 3.082275-.5380522 4.431758-1.6141566l.738734 1.6141566c-.601884.5654546-1.372372 1.0122732-2.311626 1.3404561-.939415.328344-1.901397.4924354-2.886268.4924354-2.152048 0-3.839062-.633799-5.061044-1.901236-1.221981-1.2675982-1.833052-3.0047428-1.833052-5.2115951 0-1.4042873.2737-2.6491576.820779-3.7342887s1.313215-1.92863838 2.298086-2.53052184c.98471-.60188346 2.106431-.90282519 3.364841-.90282519 1.823865 0 3.255555.59737014 4.295069 1.79194923 1.039675 1.1945791 1.559352 2.8404902 1.559352 4.9378945zm-8.63108-4.3771144c-.720519.6929558-1.181039 1.6688-1.381559 2.9272104h8.015656c-.109448-1.2948393-.487922-2.2797102-1.135422-2.9546127-.647339-.67474139-1.545651-1.01227325-2.694614-1.01227325-1.148962 0-2.083703.3465585-2.804061 1.03967555z"/><path d="m137.285362 20.1834059.738572-1.6413978c.747761.583669 1.504709 1.0030854 2.270684 1.2584103.765975.255325 1.623506.3829875 2.571303.3829875 1.039675 0 1.827894-.1777926 2.366269-.5333778.538375-.3555851.807562-.8709095.807562-1.5456509 0-.54724-.182145-.9848709-.546434-1.3132149-.365901-.328344-.96714-.583669-1.80694-.7659749l-2.32436-.54724c-1.149446-.255325-2.03857-.7111703-2.667856-1.3678584-.629124-.6565268-.943767-1.4407162-.943767-2.3527292 0-1.2036057.483248-2.18396332 1.449904-2.94091156.966656-.75678705 2.243926-1.13526117 3.830036-1.13526117.96714 0 1.877863.15506478 2.735394.46503315.857531.31012956 1.57805.75694824 2.161558 1.34061723l-.73825 1.61399545c-1.295968-1.0761044-2.682202-1.61399545-4.158702-1.61399545-.984871 0-1.745688.18681921-2.284063.56078005-.538213.3737996-.807239.8981506-.807239 1.5730532 0 .5652933.168605 1.0122732.505975 1.340456.336726.328344.879936.583669 1.627858.7659749l2.325972.5744812c1.276625.291915 2.224422.743247 2.845003 1.3543183.61897.6109101.930067 1.4088006.930067 2.3936715 0 1.1855525-.48357 2.1338333-1.45071 2.8451647-.965529.7113315-2.279227 1.0669166-3.939484 1.0669166-2.315817 0-4.148708-.5926956-5.498352-1.778248z"/><path d="m166.776845 19.8826253h4.294102v1.8875349h-10.860982v-1.8875349h4.295713v-14.8003046l-3.994288 2.54422296v-2.16123552l4.979159-3.17350872h1.286296z"/><path d="m177.692632 18.9523978v1.9971441c0 .7659749-.128952 1.4681185-.383632 2.1064309s-.683446 1.2584104-1.286296 1.8602938l-1.039676-.7933771c.71246-.8206183 1.113823-1.6049689 1.20409-2.3527293h-1.313699v-2.8177624z"/><path d="m194.243621 19.8826253v1.8875349h-12.529298v-1.6960412l6.811889-7.5506231c.910724-1.0214611 1.576438-1.9425007 1.997144-2.76311902.419094-.82077948.628641-1.64139777.628641-2.46217725 0-1.07610444-.311096-1.90139724-.930066-2.4758784-.620582-.57448116-1.505515-.86172174-2.654799-.86172174-1.860133 0-3.700923.74776041-5.525594 2.24328123l-.847859-1.72344348c.765652-.72954594 1.732792-1.31321493 2.899808-1.75084578 1.167016-.43779204 2.343703-.65668806 3.530061-.65668806 1.785985 0 3.199622.46051983 4.239297 1.38155949 1.039676.92103966 1.560319 2.16574884 1.560319 3.73428873 0 1.11253338-.251456 2.18396331-.752757 3.21445098-.501301 1.0304877-1.336265 2.1841245-2.503281 3.4607493l-5.552995 6.0186734z"/><path d="m200.425258 18.9523978v1.9971441c0 .7659749-.12734 1.4681185-.38202 2.1064309-.256292.6383124-.683446 1.2584104-1.286297 1.8602938l-1.039675-.7933771c.710848-.8206183 1.112211-1.6049689 1.204089-2.3527293h-1.313698v-2.8177624z"/><path d="m215.691563 13.4535622c.601239.802565.902664 1.814677.902664 3.0366584 0 1.6962023-.575448 3.0321451-1.723121 4.0078281-1.149285.9758443-2.709604 1.4636052-4.679346 1.4636052-1.257282 0-2.466207-.2097082-3.623551-.6291245-1.158956-.4195776-2.138991-1.0122732-2.941718-1.7782481l.875262-1.7236047c1.805328 1.495682 3.684803 2.2434424 5.635202 2.2434424 1.386234 0 2.440417-.3101295 3.160936-.9302275.72052-.6200979 1.079973-1.5319497 1.079973-2.7357166 0-2.3891582-1.495843-3.5837373-4.485917-3.5837373h-2.243765v-1.8876961h1.805328c1.441038 0 2.54519-.3191562 3.310842-.9574686.765653-.63847359 1.149285-1.55032542 1.149285-2.73571668 0-1.05788997-.315932-1.86948162-.944573-2.43493614-.628641-.56529333-1.51841-.84802059-2.667695-.84802059-1.860132 0-3.702534.74776041-5.525593 2.24328123l-.847859-1.72344348c.783383-.74776041 1.745687-1.33594272 2.885301-1.76454693 1.141225-.42860421 2.330807-.64298691 3.570358-.64298691 1.752135 0 3.151265.44681868 4.200612 1.34061723 1.047735.89363736 1.571602 2.09740428 1.571602 3.61113957 0 1.11253338-.272411 2.08821645-.820457 2.9272104-.546434.838994-1.304027 1.4408774-2.269555 1.8054892 1.147673.328344 2.022934.8937985 2.625785 1.6962024z"/></g><g transform="translate(329.992265 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(359.320353 242.51167)"><path d="m.14615481 31.0947909 1.49887023-3.0461739c1.70855821 1.4504369 3.44931037 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83620748.9188095 6.18921438.9188095 2.7723829 0 4.9080094-.5401745 6.4068796-1.6199537 1.4991552-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3623955-2.1034326-1.0877564-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8530102-1.7165355-1.1766458-.419091-2.7481661-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81911993-1.2088399-6.52767814-1.8857674-1.70855822-.6769275-3.0946072-1.6521476-4.15843184-2.9253753s-1.59573696-2.9416147-1.59573696-5.0045912c0-1.96639471.5159578-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49032973-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08606666-1.25727321 6.60032816-1.25727321 2.3854858 0 4.6097169.37094261 6.6726934 1.11225801 2.0632614.74131541 3.8040135 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6116915-1.38633388-3.2475997-2.40172515-4.9077245-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399218-.96695791-2.6755161 0-4.77097143.57208353-6.28608109 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.660973 3.0461738 1.98263409 3.9165499 1.32166109.870376 3.35244368 1.6279309 6.09263258 2.2726645 2.9655465.7091214 5.2946216 1.3618322 6.9869404 1.9584174 1.6926037.5963002 3.1028694 1.4988702 4.2310819 2.70771 1.1282125 1.2088399 1.6923188 2.8125541 1.6923188 4.8111427 0 1.9342007-.5156729 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5062843 2.602866-4.4242456 3.4088542-1.9182462.8059882-4.166694 1.2088399-6.7453434 1.2088399-5.38351106 0-9.67071867-1.4507218-12.86219259-4.3518804z"/><path d="m52.0781194 22.7779272h-17.8425672c.032194 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4410482 2.3692463 6.1165643 2.3692463 2.8367708 0 5.447899-.9510034 7.8333847-2.8530102l1.3057066 2.8530102c-1.0638246.9994368-2.4259418 1.7891855-4.0860667 2.3692463-1.6601248.5803457-3.3604209.8703761-5.101173.8703761-3.8040136 0-6.7857995-1.1202353-8.9456428-3.3604209-2.1598432-2.2404705-3.2396224-5.310861-3.2396224-9.2114564 0-2.4820676.483479-4.6823669 1.4507218-6.6003282.9669579-1.9179613 2.320813-3.4088543 4.0615651-4.4726789 1.7407522-1.0638247 3.7233863-1.595737 5.9476174-1.595737 3.2233829 0 5.7541688 1.0558474 7.5915028 3.1672572 1.837334 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2556556-7.736518c-1.2732277 1.2247944-2.0871932 2.949592-2.4418964 5.1738231h14.1676143c-.1931636-2.288619-.8621139-4.0293711-2.0065658-5.2222565-1.144452-1.1926004-2.7319268-1.7891855-4.7627094-1.7891855-2.0310674 0-3.683215.6125397-4.9564427 1.8376189z"/><path d="m62.0630852 33.8509343c-1.7567067-1.0313458-3.1105617-2.4900448-4.0615651-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.483479-4.7308002 1.4507218-6.6487615.9669579-1.9179613 2.3450296-3.4088543 4.1342151-4.4726789 1.7889007-1.0638247 3.8763787-1.595737 6.2618645-1.595737 1.6438854 0 3.2316451.2820531 4.7627093.8461594 1.531349.5641063 2.7965995 1.3458778 3.7957514 2.3453145l-1.3054217 2.9011587c-1.2250793-.9672429-2.4097024-1.6763643-3.5541544-2.1276493-1.144167-.451285-2.3128357-.6769276-3.505721-.6769276-2.4820675 0-4.4322228.8302049-5.8507506 2.4903298-1.4182429 1.6601248-2.1273644 3.9729605-2.1273644 6.9387919 0 2.9333526.7011442 5.2139943 2.1031477 6.8419253 1.4022884 1.6279309 3.3607058 2.4418963 5.8749673 2.4418963 1.1928853 0 2.361554-.2256425 3.505721-.6769275 1.144452-.451285 2.3290751-1.1604065 3.5541544-2.1276493l1.3054217 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8923333 2.2968812-1.563543.5641063-3.1834966.8461594-4.859576.8461594-2.3532918 0-4.408291-.5156729-6.1652826-1.5473036z"/><path d="m87.2313415 13.8325694v13.2972382c0 1.80514.3706577 3.0703905 1.112258 3.7957514.7413154.7253609 1.7889006 1.0880413 3.1427556 1.0880413.9025701 0 1.7729461-.1450152 2.6111283-.4353305v3.3364892c-.9991519.3225092-2.1273644.4834789-3.3846376.4834789-2.3210979 0-4.1342152-.6527108-5.4399217-1.9581325-1.3054217-1.3057066-1.9581325-3.2316451-1.9581325-5.7783855v-13.8291505h-4.7387776v-3.0946072h4.7387776v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.9328427 35.0597742v-24.321812h3.9168353v24.321812zm-.3866122-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.454597 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.951004-1.9020067-1.426505-4.1262378-1.426505-6.6729782 0-2.5464555.475501-4.7709715 1.426505-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.755295-1.5473036 6.044199-1.5473036c2.288619 0 4.303447.5156729 6.044199 1.5473036 1.740753 1.0316307 3.08663 2.498307 4.037634 4.4003138.950718 1.9017218 1.42622 4.1262378 1.42622 6.6726933 0 2.5467404-.475502 4.7709715-1.42622 6.6729782-.951004 1.9017219-2.296881 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.75558 1.5473036-6.044199 1.5473036-2.288904 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.933916-3.924812 1.933916-6.9872253 0-2.9655465-.660688-5.2624277-1.982349-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982634 3.9248121-1.982634 6.8903586c0 3.0624133.652996 5.3914884 1.958417 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.988222 19.7799018v15.2798724h-3.916549v-15.0864238c0-2.2564251-.451285-3.9085727-1.353856-4.9561579-.90257-1.0475852-2.321097-1.5715203-4.255298-1.5715203-2.256425 0-4.061565.693167-5.41542 2.079216-1.353855 1.3860489-2.031068 3.2558618-2.031068 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.128775-4.786926-.386897-6.8177085h3.723387l.386897 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336204-3.6507362 1.482916-.8544216 3.175234-1.2814899 5.077241-1.2814899 5.834796 0 8.751909 3.2074284 8.751909 9.6222853z"/><path d="m203.619569 20.3360308c1.096874 1.4344824 1.643886 3.2156906 1.643886 5.343055 0 2.9980254-1.000007 5.3108611-3.00002 6.938792-1.997164 1.6279309-4.817695 2.4418964-8.461594 2.4418964h-14.310635v-34.42786122h13.82915c3.512844 0 6.245056.78177151 8.196635 2.34531453 1.948731 1.56325812 2.923097 3.77951197 2.923097 6.64847666 0 1.83761893-.475787 3.42509373-1.424511 4.76299423-.951573 1.3376156-2.282066 2.3290751-3.991479 2.9735238 1.968673.5481517 3.498598 1.5393263 4.595471 2.9738086zm-20.213807-4.4242455h9.284961c2.578364 0 4.529944-.5159578 5.85189-1.5473036 1.321946-1.0316307 1.982919-2.5467404 1.982919-4.54532897 0-3.93278933-2.612553-5.899184-7.834809-5.899184h-9.284961zm16.031444 14.3368462c1.273512-1.0153913 1.908844-2.5706722 1.908844-4.6661275 0-4.2228197-2.626798-6.3342296-7.880393-6.3342296h-10.059895v12.523444h10.059895c2.70657 0 4.698036-.5076956 5.971549-1.5230869z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(356.809897 292.199308)"><path d="m.10689318 19.8854177 1.48742717-18.91226722h4.17039899l-1.24844346 15.53895012h8.44675212l-.2655896 3.3733171z"/><path d="m14.955185 19.8854177 1.0625151-13.46697537h4.01092l-1.0625151 13.46697537zm1.3811601-19.78885388h4.3031155l-.2921955 3.77193628h-4.3031156z"/><path d="m21.436386 18.4510458 1.3014988-2.7889259c.7437136.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7437136 0 1.2927345-.1062672 1.6469061-.3188015.3541717-.2125343.5311793-.495809.5311793-.8499807 0-.3718568-.2079956-.6640524-.6241435-.8765867-.4161478-.2123778-1.0935031-.4602823-2.0320659-.7437136-.973933-.2655896-1.7708584-.5311792-2.3906197-.7967689-.6197613-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.451518-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2435224-1.62906451.7305671-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9615514.45167454.9651687.30095986 1.7752405.70834338 2.4305286 1.22183754l-1.2750494 2.68281528c-.6551315-.47812392-1.3457898-.84121642-2.0718183-1.08912095s-1.4343718-.37185679-2.1250301-.37185679c-.7260285 0-1.2748928.10626716-1.6467496.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4425972.2302194 1.1155704.4692031 2.0186065.7171076.9740895.2832748 1.7664762.5577852 2.3773168.8233749.610997.2657461 1.1421763.6596702 1.5938508 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5269536 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632067 1.1288734-2.3020377 0-4.3561708-.5490209-6.1623995-1.6469062z"/><path d="m40.9064384 14.6526601c-.0530553.7437136.0973463 1.2927345.451518 1.6469062s.8412165.5311793 1.4609778.5311793c.407227 0 .8589015-.0707405 1.3547106-.2123778l-.2657461 3.1077274c-.6020763.2479045-1.3811601.3718568-2.337408.3718568-1.5229539 0-2.6871974-.407227-3.4928871-1.2218376-.8056897-.8146105-1.2085346-1.9655511-1.2085346-3.4531348 0-.3009598.0087643-.5311792.0264494-.6906582l.4250686-5.31241881h-2.5499422l.2389837-3.00146026h2.5499422l.2391403-3.16093925 4.1170306-1.30149878-.3452509 4.46243803h3.4265289l-.2389837 3.00146026h-3.4265289z"/><path d="m45.182948 18.4510458 1.3014988-2.7889259c.7438701.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7438701 0 1.2927345-.1062672 1.6469062-.3188015.3541716-.2125343.5313357-.495809.5313357-.8499807 0-.3718568-.2081521-.6640524-.6242999-.8765867-.4161479-.2123778-1.0935032-.4602823-2.032066-.7437136-.973933-.2655896-1.7707019-.5311792-2.3904632-.7967689-.6199178-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.4516745-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2433659-1.62906451.7304106-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9617079.45167454.9650122.30095986 1.7752405.70834338 2.4303721 1.22183754l-1.2748929 2.68281528c-.655288-.47812392-1.3459463-.84121642-2.0719748-1.08912095-.7260284-.24790453-1.4343718-.37185679-2.1248736-.37185679-.7260284 0-1.2750493.10626716-1.6469061.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4427538.2302194 1.1155704.4692031 2.018763.7171076.973933.2832748 1.7663198.5577852 2.3773168.8233749.6108405.2657461 1.1421763.6596702 1.5936943 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5267971 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632066 1.1288734-2.3020378 0-4.3561709-.5490209-6.1623996-1.6469062z"/><path d="m67.4951382.97315048h7.543716c1.9478661 0 3.4664378.46935965 4.5554023 1.40776594 1.0891209.93856279 1.6336032 2.23129726 1.6336032 3.87820343 0 1.64674965-.5490209 2.94386628-1.6469062 3.89134985-1.0978853.9473271-2.6119184 1.4210689-4.5420993 1.4210689h-5.3654741v8.3138791h-2.1782419zm7.3577876 8.7921595c1.3990017 0 2.4525959-.30111636 3.1609393-.90319258.7083434-.60207621 1.062515-1.46974206 1.062515-2.60299755 0-1.133412-.3541716-1.9966957-1.062515-2.58985111-.7083434-.59331191-1.7619376-.88988961-3.1609393-.88988961h-5.1795457v6.98593085z"/><path d="m95.8636172 6.52470948v13.36070822h-2.1250301v-2.4170692c-.3895419.8322956-.9783152 1.4741242-1.7663198 1.9256423-.7880046.4516745-1.7043436.6773553-2.7491736.6773553-1.1864673 0-2.2267586-.2832748-3.1210303-.8499808-.8942718-.5665495-1.5849301-1.367857-2.0718183-2.4039227-.4870448-1.0359091-.7305671-2.2444437-.7305671-3.6256037 0-1.3813166.2479045-2.5987719.7437135-3.65236619.4959656-1.05359425 1.191006-1.87258693 2.0852778-2.45697803.8941152-.58439111 1.9256422-.87658666 3.0944244-.87658666 1.04483 0 1.9567869.23021942 2.7358707.69065826.7792403.46043884 1.3723957 1.10680608 1.7796227 1.93894521v-2.31080201zm-3.1873886 10.42560622c.7083433-.8942718 1.0623585-2.1647825 1.0623585-3.8116887 0-1.6469061-.3540152-2.9130347-1.0623585-3.79838565-.7083434-.88535096-1.7178031-1.32810469-3.0280662-1.32810469-1.3104196 0-2.3331823.45605669-3.0679751 1.36801357-.7349493.91195687-1.1024239 2.18246757-1.1024239 3.81168867 0 1.6290645.3630925 2.8864288 1.089121 3.7717797.7260284.885351 1.7530168 1.3281047 3.081278 1.3281047 1.3102631 0 2.3197228-.4471359 3.0280662-1.3414076z"/><path d="m111.933747 6.52470948v13.25444102c0 1.9833927-.509112 3.4841229-1.527336 4.5023469s-2.518955 1.5273361-4.502191 1.5273361c-2.036448 0-3.789621-.4604389-5.259363-1.3813166l.371857-1.7530168c.84998.478124 1.651288.8233749 2.403922 1.0359092.752478.2125343 1.580392.3188014 2.483584.3188014 1.292578 0 2.266511-.3408687 2.921799-1.0227627.655132-.6817374.982854-1.6954228.982854-3.0413691v-3.1607827c-.407384.8499807-1.005078 1.5094944-1.793082 1.978854-.788005.4692032-1.722029.7038048-2.802229.7038048-1.168782 0-2.209074-.274354-3.12103-.8233749-.911957-.5488644-1.615919-1.3281047-2.1117276-2.3374079-.4958091-1.0094597-.7437136-2.1693211-.7437136-3.4797407s.2479045-2.470281.7437136-3.47958423c.4958086-1.00945973 1.1997706-1.78854354 2.1117276-2.33756443.911956-.54886438 1.952248-.82337482 3.12103-.82337482 1.062515 0 1.987775.23021942 2.775779.69065826.788005.46043884 1.385543 1.10680608 1.792926 1.93894521v-2.31080201zm-3.253904 9.86782102c.734949-.8589016 1.102424-2.0408302 1.102424-3.546099 0-1.5051123-.367475-2.6871975-1.102424-3.54594251-.734793-.85890155-1.748634-1.28835233-3.041369-1.28835233-1.31042 0-2.34179.42945078-3.094424 1.28835233-.752635.85874501-1.128874 2.04083021-1.128874 3.54594251 0 1.5052688.376239 2.6871974 1.128874 3.546099.752634.8589015 1.784004 1.2881958 3.094424 1.2881958 1.292735 0 2.306576-.4292943 3.041369-1.2881958z"/><path d="m127.260162 13.138627h-9.801462c.017685 1.6999615.411765 2.9837752 1.182085 3.8515976.770319.8676658 1.890272 1.3014987 3.360014 1.3014987 1.558324 0 2.992696-.5224149 4.303116-1.5672449l.717264 1.5672449c-.584391.5490209-1.332644.9828538-2.244601 1.3014988-.911956.3188015-1.845981.478124-2.802228.478124-2.08966 0-3.727646-.6153792-4.914113-1.8459811-1.186467-1.2307583-1.779623-2.9174168-1.779623-5.060132 0-1.363475.26559-2.572166.796926-3.62576029.531179-1.05359425 1.274893-1.87258693 2.23114-2.45697803.956248-.58439111 2.045369-.87658666 3.267207-.87658666 1.770702 0 3.160939.58000895 4.170242 1.73987036 1.009304 1.1598614 1.514033 2.75793792 1.514033 4.79438592zm-8.380393-4.24990368c-.699423.67281665-1.146559 1.62030028-1.341408 2.84213778h7.7827c-.106111-1.2572078-.473586-2.21345565-1.102268-2.8687437-.628682-.65513154-1.50073-.98285381-2.616457-.98285381-1.11557 0-2.023145.33648658-2.722567 1.00945973z"/><path d="m129.703837 18.3447787.717265-1.5936944c.726028.566706 1.460821.973933 2.204691 1.2218376.743714.2479045 1.576009.3718568 2.496261.3718568 1.00946 0 1.776336-.1726255 2.297499-.5178764.522728-.3452508.784092-.8455986.784092-1.5007301 0-.5313358-.176851-.9562479-.530553-1.2750494-.355268-.3188014-.939033-.566706-1.752861-.7437135l-2.258529-.5313358c-1.115727-.2479046-1.97901-.6905018-2.589851-1.3281047-.610997-.6374465-.916339-1.3988452-.916339-2.2843526 0-1.16862572.469203-2.12049147 1.407766-2.85544076.938563-.73479278 2.178085-1.10226742 3.718411-1.10226742.939033 0 1.824853.15055818 2.655897.45151803.832608.30111636 1.532187.73494929 2.098737 1.30165528l-.716795 1.56708842c-1.256738-1.04482995-2.602684-1.56708842-4.037839-1.56708842-.955934 0-1.695266.18138975-2.217681.54448224-.522415.36293598-.783622.872048-.783622 1.52733603 0 .5488644.163861.9828538.491427 1.3014988.327565.3188015.854362.566706 1.580391.7437136l2.258216.5577852c1.239523.2834312 2.159774.7216463 2.76232 1.3149582.602546.5931554.903036 1.3678571.903036 2.324105 0 1.1510971-.469516 2.0718183-1.408548 2.7624765-.937467.6906583-2.212986 1.0359092-3.824992 1.0359092-2.248356 0-4.027979-.5754703-5.338399-1.7265674z"/><path d="m163.62325 13.9621584v1.8062286h-2.868744v4.1170307h-2.17699v-4.1170307h-8.712655v-1.6469061l9.110179-13.14833042h1.779466v12.98900792zm-11.500016 0h6.454282v-9.29688939z"/><path d="m168.936607 17.149547v1.9391018c0 .7437135-.123639 1.425451-.372483 2.0452123-.247278.6197613-.663582 1.2218376-1.247347 1.8062287l-1.011025-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.273954v-2.7358707z"/><path d="m182.52284 8.76915321c.893645.50472986 1.580704 1.20853458 2.058046 2.11172719.478906.903036.718359 1.947866.718359 3.1343333s-.261364 2.2400616-.784092 3.1609393c-.522728.9207211-1.266128 1.6336032-2.231766 2.1381765-.964074.5047299-2.094043.7570166-3.386777.7570166-1.150315 0-2.283414-.2079957-3.399297-.6241435s-2.054916-.987236-2.815532-1.7132645l.823218-1.673512c1.752861 1.4522134 3.551108 2.1782419 5.391611 2.1782419 1.328731 0 2.369492-.3763954 3.122282-1.1290298.751226-.7524779 1.128404-1.7752406 1.128404-3.0678186 0-1.2573642-.372483-2.2710496-1.115883-3.0413691-.743401-.7703195-1.735645-1.15547928-2.975168-1.15547928-1.806072 0-3.249051.73479278-4.328938 2.20469138h-1.514973v-11.07651212h11.341946v1.80622865h-9.163391v6.74679062c1.045456-1.00930322 2.382012-1.51403309 4.011233-1.51403309 1.186311 0 2.227072.25228668 3.120718.75701655z"/><path d="m191.010127 17.149547v1.9391018c0 .7437135-.125205 1.425451-.372483 2.0452123-.247279.6197613-.663583 1.2218376-1.248913 1.8062287l-1.00946-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.275518v-2.7358707z"/><path d="m204.543147 8.76915321c.893646.50472986 1.58853 1.21307323 2.084652 2.12503009.496122.9119569.743401 1.9522482.743401 3.1210304s-.259799 2.2134557-.782527 3.1343333c-.522728.9208777-1.244218 1.6423675-2.166035 2.1647825-.920251.522415-1.964142.7836225-3.133238.7836225-2.284978 0-4.047229-.7969254-5.286751-2.3906198-1.239523-1.5936943-1.859284-3.8603618-1.859284-6.7998459 0-2.12503014.287969-3.94894389.863909-5.47189779.57594-1.52279739 1.406984-2.6828153 2.496261-3.47958421 1.089278-.79692542 2.396098-1.19538813 3.918895-1.19538813 1.097103 0 2.164469.20377001 3.200535.61099702s1.943797.98285382 2.721629 1.7265674l-.823219 1.67335558c-.88582-.74371359-1.735644-1.29273448-2.549472-1.64690617-.813828-.35401518-1.646437-.53117927-2.496261-.53117927-1.629221 0-2.89535.72602848-3.798386 2.17808544-.903036 1.45205695-1.355336 3.48850502-1.355336 6.10934423v.3984627c.406914-1.0094598 1.072061-1.80622867 1.992313-2.39061978s1.975098-.87658666 3.161409-.87658666c1.150314 0 2.172295.25228668 3.067505.75701655zm-.438215 8.34048499c.743401-.770163 1.115884-1.7929257 1.115884-3.0678186 0-1.2573642-.377178-2.2710496-1.129969-3.0413691s-1.73095-1.15547928-2.934476-1.15547928c-1.239523 0-2.248983.38954188-3.028379 1.16878218-.779397.7790838-1.169096 1.7883871-1.169096 3.0280662 0 1.2572078.389699 2.2754318 1.169096 3.0546721.779396.7790838 1.796681 1.1686257 3.054985 1.1686257 1.203526 0 2.178555-.3851597 2.921955-1.1554792z"/></g><g transform="translate(660.011742 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(688.758199 242.51167)"><path d="m.07350476 31.0947909 1.49915513-3.0461739c1.70855822 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592263.9188095 6.18921443.9188095 2.7720979 0 4.9077245-.5401745 6.4068796-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626804-2.1034326-1.0880413-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8527253-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81940488-1.2088399-6.52767819-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.5156729-3.69916961 1.5473036-5.19803984 1.0316307-1.49915513 2.49004482-2.66753887 4.37609708-3.505721 1.88576736-.83818214 4.08578181-1.25727321 6.60004331-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478845-2.40172515-4.9080094-3.04645873-1.6601248-.64473357-3.473527-.96695791-5.4399217-.96695791-2.6755161 0-4.77068658.57208353-6.28579623 1.71653548-1.51510966 1.14445195-2.27266449 2.71597223-2.27266449 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272853 1.6279309 6.09263253 2.2726645 2.9658315.7091214 5.2949066 1.3618322 6.9872254 1.9584174 1.6923187.5963002 3.1025844 1.4988702 4.2307969 2.70771 1.1284975 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.3832262 0-9.67071872-1.4507218-12.86219264-4.3518804z"/><path d="m52.0054694 22.7779272h-17.8425672c.0324788 3.0946072.7495775 5.4316596 2.1518659 7.011442 1.4022884 1.5794975 3.4413332 2.3692463 6.1168493 2.3692463 2.8367707 0 5.447899-.9510034 7.8330998-2.8530102l1.3057066 2.8530102c-1.0638247.9994368-2.425657 1.7891855-4.0857818 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037286 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598432-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837639-4.6823669 1.4507218-6.6003282s2.3210978-3.4088543 4.06185-4.4726789c1.7407521-1.0638247 3.7231013-1.595737 5.9473324-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561435 5.0205458 2.7561435 8.7276926zm-15.2553708-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418963 5.1738231h14.1676143c-.1934486-2.288619-.8623988-4.0293711-2.0068508-5.2222565-1.144167-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829301.6125397-4.9561579 1.8376189z"/><path d="m61.99072 33.8509343c-1.7569915-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.426505-4.0857818-1.426505-6.6000433 0-2.5145464.4837638-4.7308002 1.4507217-6.6487615s2.3453146-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7629942.8461594 1.5310642.5641063 2.7963147 1.3458778 3.7957514 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325077.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276492 3.9729605-2.1276492 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749673 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812s-3.1832118.8461594-4.859576.8461594c-2.3532918 0-4.4082911-.5156729-6.1649978-1.5473036z"/><path d="m87.1586914 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891856 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994367.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630087v3.0946072z"/><path d="m98.8604776 35.0597742v-24.321812h3.9165494v24.321812zm-.3868971-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.381947 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.950719-1.9020067-1.426221-4.1262378-1.426221-6.6729782 0-2.5464555.475502-4.7709715 1.426221-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037634 4.4003138c.951003 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475502 4.7709715-1.426505 6.6729782-.951004 1.9017219-2.296882 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982349 3.9248121-1.982349 6.8903586c0 3.0624133.652711 5.3914884 1.958132 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.915857 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320812-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353855 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.12906-4.786926-.386897-6.8177085h3.723101l.386898 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336489-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m185.630847 33.319022c-2.401725-1.4182429-4.247891-3.4572876-5.535648-6.1165644-1.290607-2.6595616-1.934486-5.7946249-1.934486-9.404905 0-3.6105649.643879-6.7293888 1.934486-9.35647159 1.287757-2.62708276 3.133923-4.64988805 5.535648-6.06841587 2.401726-1.41824292 5.230804-2.12764929 8.487236-2.12764929 2.384631 0 4.56983.36268044 6.552749 1.08804133 1.98007.72536088 3.69803 1.81340221 5.148182 3.26383907l-1.498585 3.04645873c-1.643886-1.41852782-3.264979-2.4339191-4.860431-3.04645873s-3.358996-.91852454-5.293482-.91852454c-3.772105 0-6.69805 1.22479436-8.777835 3.67466798-2.079786 2.44987362-3.11683 5.93137791-3.11683 10.44451291 0 4.545329 1.031346 8.0507651 3.094037 10.5168782 2.062692 2.466113 4.997184 3.6991695 8.800628 3.6991695 1.934486 0 3.69803-.3062698 5.293482-.9188094 1.595452-.6125397 3.216545-1.6279309 4.860431-3.0461739l1.498585 3.0461739c-1.450152 1.4507217-3.168112 2.5384782-5.148182 3.263839-1.982919.7253609-4.168118 1.0880414-6.552749 1.0880414-3.256432 0-6.08551-.7091215-8.487236-2.1276493z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(683.970025 292.181215)"><path d="m.10947429 20.3655834 1.52334352-19.36893462h4.27110005l-1.27858915 15.91416332h8.65071269l-.2720028 3.4547713z"/><path d="m15.3163023 20.3655834 1.0881712-13.79215735h4.1077702l-1.0881712 13.79215735zm1.4145104-20.26668789h4.4070212l-.2992511 3.86301581h-4.4070212z"/><path d="m21.9540024 18.8965763 1.3329256-2.8562691c.7616718.5258933 1.5778402.9293293 2.4483451 1.2104683.870505.2811389 1.7410099.4217084 2.6115148.4217084.7616717 0 1.3239496-.1088332 1.6866734-.3264995.3627237-.2176663.5440054-.5077811.5440054-.8705049 0-.3808359-.213018-.680087-.6392144-.8977533-.4261964-.217506-1.1199075-.4713966-2.0811335-.7616717-.9974502-.2720027-1.8136186-.5440055-2.4483451-.8160082-.6347265-.272163-1.1833802-.675599-1.6458009-1.2106285-.4624206-.5350296-.6937111-1.2287407-.6937111-2.0811335 0-.88861705.2494026-1.66840095.7482079-2.33951199.4986449-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.963164-.5714141 3.1420563-.5714141c1.0336745 0 2.0447488.15419365 3.0330628.46258095.9884743.30822702 1.8181067.72544747 2.4892177 1.25134079l-1.3058375 2.74759621c-.6709507-.489669-1.3782861-.86152895-2.1218457-1.11541954-.7435596-.25389058-1.4690071-.38083588-2.1763424-.38083588-.7435596 0-1.3056772.10883315-1.6865131.32649945-.3808359.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.6800869.95225.4532845.2357784 1.1425077.4805328 2.067349.7344234.9976105.2901149 1.8091307.5712538 2.434721.8432566.6257505.272163 1.169756.675599 1.6323369 1.2106285.4624207.5350295.6937112 1.2287407.6937112 2.0811334 0 1.360174-.5396778 2.4255848-1.6187128 3.1963928s-2.5344179 1.1561318-4.3661487 1.1561318c-2.3576242 0-4.4613577-.5622779-6.3112007-1.6866734z"/><path d="m41.8941909 15.0064724c-.0543365.7616718.0996969 1.3239497.4624206 1.6866734.3627238.3627238.861529.5440055 1.4962555.5440055.4170601 0 .8796411-.0724486 1.3874223-.217506l-.272163 3.1827685c-.6166144.2538906-1.4145104.3808359-2.3938485.3808359-1.5597281 0-2.7520842-.4170602-3.5772286-1.2513408s-1.2377166-2.0130125-1.2377166-3.5365164c0-.308227.0089759-.5440054.0270881-.7073353l.4353326-5.44069574h-2.6115148l.2447544-3.07393541h2.6115147l.2449147-3.23726527 4.216443-1.33292558-.3535875 4.57019085h3.509268l-.2447544 3.07393541h-3.509268z"/><path d="m46.2739638 18.8965763 1.3329255-2.8562691c.7618321.5258933 1.5778403.9293293 2.4483452 1.2104683.8705049.2811389 1.7410098.4217084 2.6115147.4217084.7618321 0 1.3239497-.1088332 1.6866734-.3264995.3627238-.2176663.5441658-.5077811.5441658-.8705049 0-.3808359-.2131784-.680087-.6393748-.8977533-.4261963-.217506-1.1199075-.4713966-2.0811334-.7616717-.9974502-.2720027-1.8134584-.5440055-2.4481849-.8160082-.6348867-.272163-1.1833801-.675599-1.6458008-1.2106285-.462581-.5350296-.6937112-1.2287407-.6937112-2.0811335 0-.88861705.2492424-1.66840095.7480476-2.33951199.498645-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.9631641-.5714141 3.1420563-.5714141c1.0336745 0 2.0447489.15419365 3.0332232.46258095.988314.30822702 1.8181066.72544747 2.4890574 1.25134079l-1.3056773 2.74759621c-.671111-.489669-1.3784463-.86152895-2.1220059-1.11541954-.7435597-.25389058-1.4690071-.38083588-2.1761822-.38083588-.7435596 0-1.3058375.10883315-1.6866734.32649945-.3808358.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.680087.95225.4534447.2357784 1.1425076.4805328 2.0675093.7344234.9974502.2901149 1.8089704.5712538 2.4347209.8432566.6255903.272163 1.169756.675599 1.6321767 1.2106285s.6937111 1.2287407.6937111 2.0811334c0 1.360174-.5395175 2.4255848-1.6187127 3.1963928-1.079035.770808-2.5344179 1.1561318-4.3661488 1.1561318-2.3576241 0-4.4613577-.5622779-6.3112006-1.6866734z"/><path d="m69.124918.99664878h7.7258714c1.9949004 0 3.5501405.4806931 4.6653998 1.44175873 1.1154195.96122592 1.6730492 2.28517557 1.6730492 3.97184896 0 1.6865131-.5622779 3.01495072-1.6866734 3.98531283-1.1243955.9702019-2.6749874 1.4553829-4.6517756 1.4553829h-5.4950322v8.5146312h-2.2308392zm7.5354534 9.00446052c1.4327828 0 2.5118178-.30838734 3.2372653-.92500167.7254475-.61661432 1.0881712-1.50523137 1.0881712-2.66585116 0-1.16078007-.3627237-2.04490916-1.0881712-2.65238727-.7254475-.60763839-1.8044825-.91137745-3.2372653-.91137745h-5.3046142v7.15461755z"/><path d="m98.1784001 6.6822592v13.6833242h-2.1763424v-2.4754332c-.3989481.8523927-1.0019382 1.5097193-1.8089705 1.97214-.8070322.4625809-1.7454977.6937111-2.8155568.6937111-1.2151165 0-2.2805273-.2901148-3.1963927-.8705049-.9158655-.5802297-1.6232008-1.4008862-2.1218457-2.4619693-.4988053-1.0609229-.7482079-2.2986395-.7482079-3.7131498 0-1.4146707.2538906-2.6615235.7616717-3.74055852.5079415-1.07903499 1.2197648-1.91780358 2.1356302-2.51630576.9157051-.59850218 1.97214-.89775327 3.1691444-.89775327 1.0700591 0 2.0040366.23577845 2.8019327.70733533.7980563.47155689 1.4055344 1.13353171 1.8225946 1.9857642v-2.36660008zm-3.2643534 10.6773494c.7254475-.9158654 1.088011-2.2170547 1.088011-3.9037281 0-1.6866733-.3625635-2.9833746-1.088011-3.89010384-.7254474-.90672919-1.7592822-1.36017394-3.1011837-1.36017394-1.3420618 0-2.3895208.46706892-3.1420563 1.40104648-.7526958.9339776-1.1290438 2.2351668-1.1290438 3.9037281 0 1.6684009.37186 2.9561263 1.1154196 3.8628555s1.7953463 1.3601739 3.1556805 1.3601739c1.3419015 0 2.3757363-.4579327 3.1011837-1.3737981z"/><path d="m114.636569 6.6822592v13.574491c0 2.031285-.521405 3.5682527-1.564216 4.6110634s-2.579779 1.5642161-4.610903 1.5642161c-2.085622 0-3.881128-.4715569-5.38636-1.4146707l.380836-1.7953462c.870505.489669 1.691162.8432565 2.46197 1.0609228.770647.2176663 1.618552.3264995 2.543554.3264995 1.323789 0 2.321239-.3490996 2.99235-1.047459.670951-.6981991 1.006587-1.7363615 1.006587-3.1148079v-3.237105c-.417221.8705049-1.029347 1.5459436-1.836379 2.0266367-.807033.4805329-1.76361.7207993-2.869894.7207993-1.197004 0-2.262415-.2809787-3.196392-.8432566-.933978-.5621176-1.654937-1.3601739-2.162719-2.3938484-.507781-1.0338348-.761671-2.2217029-.761671-3.5637647s.25389-2.52993.761671-3.56360448c.507782-1.03383477 1.228741-1.83173082 2.162719-2.39400871.933977-.56211761 1.999388-.84325656 3.196392-.84325656 1.088172 0 2.035773.23577845 2.842806.70733533.807032.47155689 1.418998 1.13353171 1.836218 1.9857642v-2.36660008zm-3.332474 10.1060956c.752695-.8796411 1.129043-2.0901094 1.129043-3.6317253 0-1.5414557-.376348-2.7520842-1.129043-3.63156509-.752536-.87964112-1.790859-1.31946169-3.114808-1.31946169-1.342062 0-2.398337.43982057-3.169145 1.31946169-.770808.87948089-1.156131 2.09010939-1.156131 3.63156509 0 1.5416159.385323 2.7520842 1.156131 3.6317253s1.827083 1.3193014 3.169145 1.3193014c1.323949 0 2.362272-.4396603 3.114808-1.3193014z"/><path d="m130.333066 13.4558805h-10.038135c.018112 1.7410099.421708 3.0558233 1.210628 3.9446006.788921.8886171 1.935916 1.3329256 3.441148 1.3329256 1.595952 0 3.064959-.5350295 4.407021-1.6050886l.734584 1.6050886c-.598503.5622779-1.364823 1.0065864-2.2988 1.3329256-.933978.3264995-1.890555.489669-2.869893.489669-2.140119 0-3.817656-.6302385-5.032772-1.8905552-1.215117-1.260477-1.822595-2.9878626-1.822595-5.1823172 0-1.3963982.272003-2.6342751.816169-3.71331012.544005-1.07903499 1.305677-1.91780358 2.285015-2.51630576s2.094757-.89775327 3.346098-.89775327c1.813459 0 3.237266.59401422 4.27094 1.78188236 1.033675 1.18786815 1.550592 2.82453279 1.550592 4.91015419zm-8.582752-4.35252451c-.716311.6890629-1.174244 1.65942501-1.373798 2.91076581h7.970625c-.108672-1.2875651-.48502-2.26690312-1.128883-2.93801417-.643863-.67095075-1.536968-1.00658641-2.679636-1.00658641-1.142507 0-2.071997.34461159-2.788308 1.03383477z"/><path d="m132.835747 18.7877432.734584-1.6321767c.74356.58039 1.496095.9974502 2.257927 1.2513408.761672.2538906 1.614065.3808359 2.556538.3808359 1.033834 0 1.819228-.1767938 2.352975-.5303813.535351-.3535875.803026-.866017.803026-1.5369677 0-.5441658-.181122-.9793381-.543365-1.3058375-.363845-.3264995-.961706-.5803901-1.795186-.7616718l-2.313065-.5441657c-1.142668-.2538906-2.026797-.7071751-2.652387-1.360174-.625751-.6528386-.938466-1.4326225-.938466-2.339512 0-1.19684406.480533-2.17169415 1.441759-2.92438998.961226-.75253555 2.230679-1.12888347 3.808199-1.12888347.961706 0 1.868917.15419366 2.720027.46242067.852713.30838731 1.569185.75269584 2.149415 1.33308587l-.734103 1.60492831c-1.287084-1.07005906-2.665531-1.60492831-4.135339-1.60492831-.979018 0-1.736202.18576969-2.271231.55762964-.53503.37169967-.802544.89310502-.802544 1.56421607 0 .5621176.167817 1.0065864.503293 1.3329256.335475.3264994.874993.58039 1.618552.7616717l2.312745.5712539c1.269453.2902751 2.211925.7390716 2.829021 1.34671.617095.6074781.924841 1.4008862.924841 2.3802243 0 1.1788922-.480854 2.1218457-1.44256 2.829181-.960104.7073353-2.266423 1.0609228-3.917353 1.0609228-2.302646 0-4.125241-.5893659-5.467303-1.7682581z"/><path d="m153.917963.99664878h12.785891v1.65942503l-9.084923 17.70950959h-2.39465l9.032029-17.49184329h-10.338347z"/><path d="m173.015856 17.5636507v1.9859245c0 .7616718-.126624 1.4598709-.381477 2.0945973-.253249.6347265-.679606 1.2513408-1.277467 1.849843l-1.035437-.7889201c.708457-.8160082 1.107565-1.5959524 1.197324-2.339512h-1.304715v-2.8019327z"/><path d="m188.807081 12.1909156c.698841.8434168 1.048261 1.8543309 1.048261 3.0332231 0 1.6502888-.626712 2.9516384-1.878534 3.9037281-1.250219.9520897-2.938014 1.4281345-5.058578 1.4281345-2.122166 0-3.809961-.4760448-5.06018-1.4281345-1.251822-.9520897-1.876931-2.2534393-1.876931-3.9037281 0-1.1788922.357434-2.1944545 1.073906-3.0468473.716471-.8523928 1.700618-1.4417587 2.95244-1.7682582-1.16046-.3444513-2.050039-.91121715-2.667134-1.70013727-.615492-.78892012-.924841-1.71840971-.924841-2.78830849 0-1.03383478.272483-1.93607601.815848-2.70688399.544967-.77064769 1.311127-1.36914987 2.300082-1.79534625.987352-.42619638 2.117357-.63937472 3.38681-.63937472s2.397856.21317834 3.386811.63937472c.987352.42619638 1.753512 1.02469856 2.298479 1.79534625.543365.77080798.815848 1.67304921.815848 2.70688399 0 1.06989878-.312555 1.99938837-.939267 2.78830849-.625109.78892012-1.500262 1.35568597-2.623856 1.70013727 1.269452.3446116 2.251996.9386258 2.950836 1.7818824zm-9.004781-3.59085282c.770969.64386269 1.809612 1.03832275 3.11593 1.18338018 1.304716-.14505743 2.343359-.53951749 3.114327-1.18338018.770969-.64386268 1.155651-1.48263127 1.155651-2.51630576 0-1.07005906-.376668-1.91331562-1.128402-2.52992994-.753337-.61661432-1.799995-.92500163-3.141576-.92500163-1.343183 0-2.389841.30838731-3.143178.92500163-.751734.61661432-1.128403 1.45987088-1.128403 2.52992994 0 1.03367449.384683 1.87244308 1.155651 2.51630576zm6.624557 9.18125422c.815848-.6166143 1.224574-1.5143676 1.224574-2.6932598 0-1.0698988-.431166-1.9267795-1.291893-2.5706422-.862331-.6438627-2.009967-1.0383227-3.441308-1.1833802-1.432943.1450575-2.580579.5395175-3.441307 1.1833802-.86233.6438627-1.293496 1.5007434-1.293496 2.5706422 0 1.1788922.408726 2.0766455 1.224574 2.6932598s1.985924.9248414 3.510229.9248414c1.522703 0 2.692779-.3082271 3.508627-.9248414z"/><path d="m195.622377 17.5636507v1.9859245c0 .7616718-.128228 1.4598709-.381477 2.0945973-.25325.6347265-.679606 1.2513408-1.27907 1.849843l-1.033835-.7889201c.708457-.8160082 1.107566-1.5959524 1.197325-2.339512h-1.306318v-2.8019327z"/><path d="m210.339696 3.22732763c1.26785 1.63217667 1.902577 3.95357653 1.902577 6.96419957 0 3.2824655-.657167 5.8351558-1.971499 7.6577504-1.314333 1.8225946-3.151193 2.7339721-5.508977 2.7339721-1.105963 0-2.189486-.2085301-3.250569-.6257505-1.061083-.4170602-1.998747-1.0064262-2.816198-1.7680979l.871947-1.7139218c.924842.7799442 1.803201 1.3465498 2.638283 1.7002976.833479.3535875 1.676575.5303813 2.529288.5303813 1.668562 0 2.960454-.7435596 3.877282-2.2306789.915224-1.4871192 1.373637-3.5727406 1.373637-6.2568642v-.35358755c-.416739 1.01556235-1.097948 1.81810665-2.040421 2.40747265-.944075.5895262-2.02279.8841291-3.237746.8841291-1.178091 0-2.221543-.2583786-3.128753-.775296-.905607-.5167571-1.614064-1.2422046-2.120563-2.1761821-.508102-.93413786-.762954-1.99954868-.762954-3.19655303 0-1.19684408.267675-2.26690314.803025-3.21001692.53535-.94295348 1.274262-1.68202514 2.216734-2.21705467.944076-.53502953 2.013173-.8025443 3.210498-.8025443 2.340153 0 4.143353.81616848 5.414409 2.44834515zm-2.176663 6.85536647c.796614-.79805638 1.195722-1.83173087 1.195722-3.10118381 0-1.28772536-.399108-2.33053607-1.195722-3.12843212-.798217-.79805633-1.841668-1.19700436-3.128753-1.19700436-1.232587 0-2.231159.39446006-2.992511 1.18338018-.761351.78892012-1.142828 1.83621879-1.142828 3.1420563 0 1.28756508.381477 2.32588782 1.142828 3.11480791.761352.7889202 1.767938 1.1833802 3.01976 1.1833802 1.269453 0 2.303287-.3991083 3.101504-1.1970043z"/></g><path d="m17.8381448 46.9715784h11.4351924v5.0258027h-28.91585333v-5.0258027h11.43519243v-39.40433576l-10.63396507 6.77374006v-5.75407418l13.25608567-8.44915063h3.4233479z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(21.524072 376.769072)"/><path d="m35.1591611 47.829883v5.0258027h-33.35886717v-4.5159698l18.13640567-20.1027815c2.4277146-2.719109 4.2001136-5.1712853 5.3167679-7.3565289 1.1170835-2.1848144 1.6754107-4.3700579 1.6754107-6.5553015 0-2.8645916-.8256891-5.06185144-2.476638-6.59135026-1.6509489-1.52992798-4.0057077-2.29467739-7.0651345-2.29467739-4.9528467 0-9.85677016 1.99083755-14.71262852 5.97294185l-2.25819944-4.58892566c2.03976092-1.94234334 4.61295815-3.4958747 7.72087917-4.66145237 3.10749189-1.16557766 6.23944539-1.74793734 9.39586059-1.74793734 4.7584408 0 8.5216774 1.22608814 11.2897098 3.67826442 2.7676032 2.45217629 4.1516194 5.76609041 4.1516194 9.94174235 0 2.9620092-.667761 5.8150138-2.003283 8.5585845-1.3350928 2.7431415-3.5568143 5.8145846-6.6643061 9.2134709l-14.7855845 16.024118z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(113.15712 375.910768)"/><path d="m32.1649655 30.7131432c1.6024547 2.1367493 2.403682 4.8318258 2.403682 8.0848003 0 4.5159698-1.5294988 8.0727841-4.5884964 10.6708722-3.0594268 2.5976589-7.2110463 3.8967029-12.4548583 3.8967029-3.3508212 0-6.5677469-.5587563-9.65077711-1.6754106-3.08345933-1.1166543-5.69356366-2.6950765-7.82988385-4.7344083l2.33072618-4.5884964c4.806935 3.9816751 9.80827598 5.9725126 15.00402298 5.9725126 3.6902807 0 6.494791-.825689 8.4126727-2.4766379 1.9178817-1.650949 2.8770371-4.0786636 2.8770371-7.283573 0-6.3608955-3.9816751-9.5413433-11.9450254-9.5413433h-5.9729418v-5.0258026h4.8073642c3.8361924 0 6.77374-.8497216 8.8130718-2.5491647 2.0393317-1.6994432 3.0594268-4.1275869 3.0594268-7.283573 0-2.8165266-.8377053-4.97730847-2.513116-6.48234561-1.6749814-1.50546629-4.0421855-2.25819944-7.1016123-2.25819944-4.9528468 0-9.85677025 1.99083755-14.71262861 5.97294185l-2.25819944-4.58892566c2.08825513-1.99083756 4.6494361-3.55681433 7.68440122-4.69793031 3.03496513-1.14111599 6.20339663-1.7114594 9.50529443-1.7114594 4.6614524 0 8.388211 1.18961019 11.180276 3.56883059 2.7920649 2.37922039 4.1880973 5.58412982 4.1880973 9.61429918 0 2.9620092-.7287006 5.5596681-2.1852435 7.7934059-1.456543 2.2337377-3.4718422 3.8361925-6.0454686 4.8073641 3.0589977.8737541 5.390153 2.3792204 6.9921786 4.5155406z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(210.490122 375.910768)"/><path d="m37.9113149 35.7548245v4.9528468h-7.8663618v11.2897098h-5.9725127v-11.2897098h-23.89005067v-4.5159697l24.98267247-36.05394371h4.8798909v35.61706661zm-31.53797398 0h17.69909948v-25.4925054z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(344.333123 377.543534)"/><path d="m27.0614862 21.5151218c2.4521763 1.3840162 4.3340092 3.3143433 5.6450695 5.7905521 1.3110603 2.4766379 1.9663758 5.3412296 1.9663758 8.5946332 0 3.2534037-.7162552 6.142457-2.1487656 8.6675892-1.4320812 2.5251322-3.4718421 4.4794918-6.1179953 5.863508-2.6465822 1.383587-5.7420578 2.0758097-9.2868559 2.0758097-3.1559861 0-6.2634779-.5707726-9.32290473-1.7118886-3.05899765-1.1411159-5.63262403-2.7070927-7.72045001-4.6979303l2.25777029-4.5884964c4.80736415 3.9816751 9.73574925 5.9725126 14.78558445 5.9725126 3.6422156 0 6.494791-1.0316821 8.5585845-3.0954756 2.0633643-2.0637934 3.0954756-4.8678746 3.0954756-8.4126727 0-3.4473804-1.0196659-6.2274291-3.0589977-8.3397168-2.0397609-2.1122876-4.7588699-3.1684314-8.1577562-3.1684314-4.9528468 0-8.91048936 2.0152992-11.87249858 6.0454685h-4.15161943v-30.37282541h31.10109691v4.95284678h-25.12858424v18.50075603c2.86502084-2.7680324 6.53126894-4.1520486 10.99831534-4.1520486 3.2534036 0 6.105979.6922227 8.5581553 2.0758097z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(442.786269 377.543534)"/><path d="m28.6326128 22.3734264c2.4521763 1.3840162 4.3580417 3.3263595 5.7175962 5.82703s2.0393318 5.3536751 2.0393318 8.5581554c0 3.2049094-.7162552 6.0699302-2.1487656 8.5946332-1.4320813 2.5251322-3.4109026 4.5039535-5.9360347 5.9364639-2.5247031 1.4320813-5.3897239 2.1483365-8.5946333 2.1483365-6.2639071 0-11.09530378-2.1848144-14.49419005-6.5553015-3.39931543-4.370058-5.09875857-10.5854709-5.09875857-18.6458095 0-5.82703.78921109-10.828371 2.36720413-15.004023 1.57799303-4.1760811 3.86022501-7.35652885 6.84669592-9.5417724 2.98604177-2.18524355 6.56731777-3.27743617 10.74339887-3.27743617 3.0105034 0 5.9360347.55832715 8.7765938 1.67498145 2.8405592 1.11708346 5.3292134 2.69507649 7.4655336 4.73440826l-2.2577703 4.58892566c-2.4277146-2.03976095-4.7584408-3.5447981-6.9921786-4.51596977-2.2337377-.97117167-4.5159697-1.45697208-6.8466959-1.45697208-4.4670463 0-7.9388885 1.99083755-10.41552648 5.97294185-2.47620881 3.9816751-3.71474237 9.5653758-3.71474237 16.7519603v1.0926218c1.11708345-2.7676033 2.93797669-4.9528468 5.46267975-6.5553015 2.5251321-1.6024547 5.4141855-2.4036821 8.6675891-2.4036821 3.1564153 0 5.9604964.6922227 8.4126727 2.0758097zm-1.2016264 22.8708139c2.0393317-2.1122876 3.0589976-4.9163688 3.0589976-8.4126726 0-3.4473805-1.0321113-6.2274292-3.0954756-8.3397168-2.0637934-2.1122877-4.7464245-3.1684315-8.0483224-3.1684315-3.3993154 0-6.1669186 1.0681601-8.303668 3.2049094-2.13632016 2.1363202-3.20448025 4.9043526-3.20448025 8.3032389 0 3.4473804 1.06816009 6.2394454 3.20448025 8.3761947 2.1367494 2.1363202 4.9288143 3.2049094 8.3761948 3.2049094 3.3018978 0 5.9725126-1.0561438 8.0122736-3.1684315z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(539.405045 376.685229)"/><path d="m.06008132.13775789h34.23305048v4.44301384l-24.32735691 47.41660937h-6.40938972l24.18144513-46.83382053h-27.67774898z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(678.757195 376.512457)"/><path d="m34.6622027 30.9684888c1.8693875 2.2577703 2.8040812 4.9648631 2.8040812 8.1208491 0 4.4189814-1.6749814 7.9028398-5.0253735 10.4520045-3.3508212 2.5495939-7.8663618 3.8241762-13.5474801 3.8241762-5.6815474 0-10.19708794-1.2745823-13.54748-3.8241762-3.35082122-2.5491647-5.02580268-6.0330231-5.02580268-10.4520045 0-3.155986.95872626-5.875095 2.87703707-8.157327 1.91788167-2.282232 4.55201853-3.8606542 7.90241061-4.7344083-3.10749187-.9226774-5.48671227-2.44016-7.1376612-4.5524477-1.65094892-2.1122876-2.47663796-4.6005127-2.47663796-7.4655335 0-2.7676032.72870062-5.18373073 2.18524355-7.24709502 1.45654293-2.06379345 3.50832011-3.66624817 6.15447324-4.80736415 2.64658227-1.14111599 5.66910197-1.7114594 9.06841737-1.7114594 3.3988863 0 6.421406.57034341 9.0679883 1.7114594 2.6461531 1.14111598 4.6979303 2.7435707 6.1544733 4.80736415 1.456972 2.06336429 2.1852435 4.47949182 2.1852435 7.24709502 0 2.8650208-.8377053 5.3532459-2.5131159 7.4655335-1.6749815 2.1122877-4.0177239 3.6297703-7.0286565 4.5524477 3.3993154.9226775 6.0334523 2.5126868 7.9028397 4.7708862zm-24.1084891-9.6147283c2.0633642 1.7239048 4.8434129 2.7800487 8.3397167 3.1684315 3.4958747-.3883828 6.2759234-1.4445267 8.3397168-3.1684315 2.0633643-1.7234756 3.0954756-3.9692297 3.0954756-6.7372621 0-2.8645916-1.0076496-5.12279105-3.0229488-6.77373998-2.0148701-1.65094892-4.8193804-2.47620881-8.4122436-2.47620881-3.5932922 0-6.3978026.82525989-8.4126726 2.47620881-2.01529928 1.65094893-3.0229489 3.90914838-3.0229489 6.77373998 0 2.7680324 1.0321113 5.0137865 3.0959048 6.7372621zm17.7355774 24.5822734c2.1848144-1.650949 3.2774361-4.054631 3.2774361-7.2106171 0-2.8650208-1.1531322-5.1592691-3.4598259-6.8831739-2.3062645-1.7239048-5.3777075-2.7800486-9.2134709-3.1684315-3.8361924.3883829-6.9076355 1.4445267-9.2139 3.1684315-2.30669365 1.7239048-3.4598259 4.0181531-3.4598259 6.8831739 0 3.1559861 1.09262177 5.5596681 3.27786532 7.2106171 2.18481438 1.6509489 5.31676798 2.4766379 9.39586058 2.4766379 4.0786636 0 7.2106171-.825689 9.3958607-2.4766379z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(773.608278 376.236614)"/><path d="m31.3560134 6.96900432c3.3988862 4.37005798 5.0987585 10.58547078 5.0987585 18.64580948 0 8.7890393-1.7603827 15.6232898-5.2807191 20.5031806-3.5203364 4.8803201-8.4367052 7.320051-14.7495357 7.320051-2.9620092 0-5.8630788-.5583272-8.70363793-1.6749815-2.84055913-1.1170835-5.35367504-2.6950765-7.53848944-4.7344083l2.33072618-4.5884964c2.47620882 2.0878259 4.83139668 3.6053085 7.06513445 4.5520185 2.23330864.94671 4.49150804 1.4204941 6.77374004 1.4204941 4.4670464 0 7.9268723-1.9908375 10.3790485-5.9725126 2.4521763-3.9821043 3.6782645-9.565805 3.6782645-16.7523895v-.9471392c-1.1170835 2.7195382-2.9379767 4.8678747-5.4626798 6.4462969-2.5251321 1.577993-5.4141855 2.3672041-8.6675891 2.3672041-3.1564152 0-5.9484801-.6922227-8.37619475-2.0758097-2.42771461-1.3840162-4.32156374-3.3263596-5.68111825-5.8270301s-2.03933177-5.353675-2.03933177-8.5581553c0-3.2049094.7162552-6.0699302 2.14833645-8.59463325 1.43251041-2.52513218 3.4113317-4.50395347 5.93646388-5.93646387 2.52470304-1.43208125 5.38972384-2.14833645 8.59463324-2.14833645 6.2639071 0 11.0953038 2.18481439 14.4941901 6.55530149zm-5.8270301 18.35441508c2.1367494-2.1363202 3.2049095-4.9043526 3.2049095-8.3032389 0-3.4473805-1.0681601-6.2394454-3.2049095-8.37619472-2.1363202-2.13632019-4.9283851-3.20490943-8.3757656-3.20490943-3.3018978 0-5.9729418 1.05614383-8.01227355 3.16843149-2.03933176 2.11228766-3.05899765 4.91636886-3.05899765 8.41267266 0 3.4473805 1.01966589 6.2274292 3.05899765 8.3397168 2.03933175 2.1122877 4.73440825 3.1684315 8.08480035 3.1684315 3.3993154 0 6.1669186-1.0681601 8.3032388-3.2049094z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(867.854354 375.654152)"/><path d="m330.093135.33214542v84.43190468-42.5518783h-329.66215607v42.5518783" stroke="#000" stroke-width="2.538347" transform="translate(131.785126 139.982935)"/><path d="m.10801477.42233775h329.31542823v42.21595235" stroke="#000" stroke-width="2.538347" transform="translate(461.770246 182.108695)"/><path d="m36.186655 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><path d="m132.152376 331.426017v30.871702" stroke="#000" stroke-width="2.538347"/><path d="m228.893645 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><g transform="translate(1221.45577 24.489117)"><path d="m.197608.154988h239.084215v85.099871h-239.084215z" fill="#0083c0"/><path d="m239.281823 85.2548586h-239.08421531v-85.09987082h239.08421531zm-236.54571658-82.56147761v80.02308441h234.00574658v-80.02308441z" fill="#000"/></g><g transform="translate(956.909366 124.770501)"><path d="m.184449.095195h223.163411v52.269131h-223.163411z" fill="#c9177e"/><path d="m223.347859 52.3643259h-223.16341016v-52.26913097h223.16341016zm-220.62506465-49.73066919v47.19220749h218.08488865v-47.19220749z" fill="#000"/></g><g transform="translate(1231.923745 124.770501)"><path d="m.183618.095195h222.158079v52.269131h-222.158079z" fill="#c9177e"/><path d="m222.341696 52.3643259h-222.15807809v-52.26913097h222.15807809zm-219.61932129-49.73066919v47.19220749h217.08147629v-47.19220749z" fill="#000"/></g><path d="m91.4241325.12672749v8.67595862h-91.3476086v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1252.516016 177.005152)"/><g transform="translate(1504.487683 124.770501)"><path d="m.182671.095195h221.012609v52.269131h-221.012609z" fill="#c9177e"/><path d="m221.19528 52.3643259h-221.01260884v-52.26913097h221.01260884zm-218.47425033-49.73066919v47.19220749h215.93589233v-47.19220749z" fill="#000"/></g><g transform="translate(1018.734446 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.5454361 18.6632185c.9737513 1.298422 1.4606269 2.9361183 1.4606269 4.9128281 0 2.7441845-.9294187 4.9055264-2.7882562 6.4842865-1.8590982 1.5784993-4.3818807 2.3678794-7.5683475 2.3678794-2.03616765 0-3.99097204-.3395352-5.86441318-1.0180839-1.87370191-.6785486-3.45976385-1.6376963-4.75792503-2.8769212l1.41629437-2.7882563c2.92099306 2.4195138 5.96011931 3.6292707 9.11737874 3.6292707 2.2424444 0 3.9466395-.5017401 5.1120638-1.5049595 1.1654244-1.0032194 1.7482669-2.4784499 1.7482669-4.4259525 0-3.8652762-2.4195137-5.7979144-7.2585412-5.7979144h-3.62953146v-3.0539906h2.92125384c2.33110942 0 4.11614632-.5163438 5.35537122-1.5490313 1.239225-1.0326875 1.8590983-2.5081788 1.8590983-4.4259525 0-1.71149696-.5090419-3.02452258-1.5271257-3.93907688-1.0178231-.91481507-2.4562837-1.37222261-4.315382-1.37222261-3.00965814 0-5.9895874 1.20975688-8.94030934 3.62953142l-1.37222261-2.78851699c1.26895386-1.20975688 2.82528692-2.16134189 4.66952073-2.85475502 1.84423381-.69341314 3.7695701-1.03998932 5.77600882-1.03998932 2.8325888 0 5.0971994.72288124 6.7938319 2.16864372 1.6966326 1.44576248 2.5449488 3.39326503 2.5449488 5.8422469 0 1.79990128-.4428039 3.37840058-1.32789 4.73575878-.8850862 1.3573582-2.1097076 2.3311094-3.6736032 2.9212538 1.8588374.5309474 3.2753926 1.4457625 4.2488831 2.7439237z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1028.654902 202.599599)"/><g transform="translate(1078.488158 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m22.936251 22.0604515v3.0096581h-4.7800913v6.8603307h-3.6292707v-6.8603307h-14.51708251v-2.7441844l15.18102761-21.9086215h2.9653256v21.6431478zm-19.16443702 0h10.75507502v-15.49083387z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1089.451732 203.121158)"/><g transform="translate(1138.52553 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4136394 13.9290806c1.4900951.8410145 2.6336139 2.0140014 3.4302958 3.5187001.7966819 1.5049595 1.1948924 3.2456637 1.1948924 5.2226344s-.4352412 3.7325394-1.3057238 5.2669669c-.8702217 1.5344276-2.1097075 2.7220182-3.7176749 3.5630326-1.6082282.8407537-3.489232 1.2613913-5.643272 1.2613913-1.9177737 0-3.80607928-.346837-5.66517753-1.0402501-1.85883747-.6934131-3.42273314-1.6449981-4.69142622-2.854755l1.37196183-2.7882562c2.92125384 2.4195137 5.91604755 3.6292706 8.98464192 3.6292706 2.213237 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538286-1.2540895 1.8810037-2.9580238 1.8810037-5.1120639 0-2.094843-.6196125-3.7841737-1.8588374-5.0677312-1.2394858-1.2835576-2.8917858-1.9253363-4.9571607-1.9253363-3.00965819 0-5.41456828 1.2246213-7.21446955 3.6736031h-2.52278251v-18.45642016h18.89896326v3.00965815h-15.26969262v11.24221151c1.74096506-1.6820289 3.96880576-2.5230433 6.68326132-2.5230433 1.9769707 0 3.7103731.4206376 5.2004681 1.2613912z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1148.445985 201.599599)"/><g transform="translate(957.360703 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m10.8395677 28.5428562h6.948735v3.0539907h-17.57107324v-3.0539907h6.94873503v-23.94452832l-6.46185939 4.11614628v-3.49653379l8.05522316-5.1342301h2.08023944z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(970.410431 203.121158)"/><g transform="translate(1231.099754 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m21.3648958 29.0644155v3.0539907h-20.27092509v-2.7441844l11.02080949-12.215702c1.4752306-1.6523 2.5522507-3.142395 3.2307994-4.4702851.6788094-1.3276293 1.0180838-2.6555193 1.0180838-3.98340939 0-1.74070428-.5017401-3.07589618-1.5049595-4.00531492-1.0032194-.92967951-2.4341174-1.39438888-4.2932157-1.39438888-3.0096581 0-5.98958737 1.20975688-8.94030931 3.62953142l-1.37222261-2.78851699c1.23948576-1.18028878 2.80312065-2.12431118 4.691687-2.83258875 1.88830558-.70827758 3.79147559-1.06215559 5.70951002-1.06215559 2.891525 0 5.1783019.74504751 6.8603307 2.23514253 1.6817681 1.49009502 2.5227826 3.50383562 2.5227826 6.04122179 0 1.79990128-.4057732 3.53356448-1.2173195 5.20072888-.8112856 1.6669037-2.1613419 3.5333038-4.0496475 5.5986787l-8.98464189 9.737252z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1241.784164 202.570441)"/><g transform="translate(1292.473373 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1301.574474 203.100332)"/><g fill="#fff" fill-rule="nonzero" transform="translate(974.127869 141.527307)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m60.3369055 14.1252405h3.214004v1.4134989h-8.1271311v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.9621541z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m133.890513 14.1252405h3.214004v1.4134989h-8.127131v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.962154z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m153.481607 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.429898 2.2713464-1.289696 3.0024665-.859797.726246-2.026665 1.0918061-3.500603 1.0918061-.941682 0-1.845834-.1559723-2.712455-.4679169-.866621-.3168187-1.600178-.7603649-2.200672-1.3306386l.655084-1.2916455c1.35111 1.1210508 2.75681 1.6815762 4.217101 1.6815762 1.037215 0 1.825363-.2339584 2.364442-.6970012.539079-.4630427.808619-1.1454215.808619-2.0471363 0-1.78880715-1.119101-2.68077369-3.357304-2.68077369h-1.678651v-1.41349887h1.35111c1.078158 0 1.903836-.23883257 2.477034-.71649771.573199-.47766514.859798-1.1600439.859798-2.0471363 0-.79448385-.235421-1.39887648-.706262-1.82292614-.470842-.42404966-1.136161-.63363743-1.995958-.63363743-1.392053 0-2.770458.56052542-4.135216 1.67670212l-.634612-1.28677139c.586846-.56052542 1.306756-.99919749 2.159729-1.32089033.852973-.32169285 1.743478-.48253927 2.671513-.48253927 1.310167 0 2.357619.33631525 3.142354 1.00407161.784736.66775637 1.177103 1.56947117 1.177103 2.70027027 0 .83347692-.204713 1.56459703-.61414 2.19336032-.409428.62388916-.975802 1.07718363-1.699124 1.35013514.859798.2437067 1.514881.66775636 1.965251 1.26727485z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m171.98772 10.9716758v1.3940023h-2.210908v3.1730613h-1.678651v-3.1730613h-6.714608v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.864101 0h4.974542v-7.1649771z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m186.553094 6.9700117c.689203.38993073 1.218046.93095961 1.586531 1.62796078.368484.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573s-1.613826.580022-2.610099.580022c-.887092 0-1.760537-.1559723-2.620334-.4776652-.859797-.3216928-1.583119-.7603649-2.169965-1.3208903l.634613-1.2916455c1.35111 1.1210508 2.736338 1.6815762 4.155686 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859797-2.34445848-.573198-.59464435-1.337462-.89196653-2.292793-.89196653-1.392052 0-2.50433.57027369-3.336832 1.70107279h-1.166867v-8.53460874h8.741272v1.38912821h-7.062621v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091176-1.16491804.914388 0 1.716183.19496536 2.405385.58002195z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1248.643217 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m63.8784513 14.1252405v1.4134989h-9.3758843v-1.2672749l5.0973694-5.65399549c.6823788-.76036491 1.1805153-1.45249195 1.4944095-2.06663284.3138943-.61414089.4708414-1.22828178.4708414-1.84242267 0-.80423212-.2320088-1.42324715-.6960264-1.85217094-.4640175-.4289238-1.1259249-.6433857-1.9857222-.6433857-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5731982-.54590302 1.2965197-.98457508 2.1699645-1.31114206.8734448-.32656699 1.7537134-.49228754 2.6408058-.49228754 1.3374624 0 2.3951495.34606351 3.1730613 1.03331642.7779118.6872529 1.1668677 1.62308664 1.1668677 2.79287881 0 .83347692-.1876542 1.63770904-.5629625 2.40782222-.3753083.77011319-.9996849 1.63283491-1.8731297 2.58816519l-4.1556867 4.50369987z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.432059 14.1252405v1.4134989h-9.375885v-1.2672749l5.09737-5.65399549c.682379-.76036491 1.180515-1.45249195 1.494409-2.06663284.313895-.61414089.470842-1.22828178.470842-1.84242267 0-.80423212-.232009-1.42324715-.696027-1.85217094-.464017-.4289238-1.125925-.6433857-1.985722-.6433857-1.392053 0-2.770458.56052542-4.135215 1.67670212l-.634612-1.28677139c.573198-.54590302 1.296519-.98457508 2.169964-1.31114206.873445-.32656699 1.753713-.49228754 2.640806-.49228754 1.337462 0 2.395149.34606351 3.173061 1.03331642.777912.6872529 1.166868 1.62308664 1.166868 2.79287881 0 .83347692-.187654 1.63770904-.562963 2.40782222-.375308.77011319-.999685 1.63283491-1.873129 2.58816519l-4.155687 4.50369987z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m154.976017 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021677-10.13332466h1.371582v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m169.541392 6.9700117c.689202.38993073 1.218046.93095961 1.58653 1.62796078.368485.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573-.743792.3899307-1.613825.580022-2.610098.580022-.887093 0-1.760538-.1559723-2.620335-.4776652-.859797-.3216928-1.583119-.7603649-2.169964-1.3208903l.634612-1.2916455c1.35111 1.1210508 2.736339 1.6815762 4.155687 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859798-2.34445848-.573198-.59464435-1.337462-.89196653-2.292792-.89196653-1.392053 0-2.50433.57027369-3.336832 1.70107279h-1.166868v-8.53460874h8.741272v1.38912821h-7.06262v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091175-1.16491804.914388 0 1.716183.19496536 2.405386.58002195z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.965618 9.38758219c.525432.63363741.788148 1.39400231.788148 2.28109471 0 1.2429042-.470842 2.2226052-1.412524 2.9391029-.941683.7164977-2.210907 1.0723095-3.807674 1.0723095-1.596766 0-2.865991-.3558118-3.807673-1.0723095-.941683-.7164977-1.412524-1.6961987-1.412524-2.9391029 0-.8870924.269539-1.6523314.808619-2.29084297.539079-.6433857 1.27946-1.0869319 2.221142-1.3306386-.873444-.25832911-1.542176-.6872529-2.006193-1.28189726-.464018-.59464435-.696026-1.29164552-.696026-2.09587764 0-.77986145.204713-1.45736609.61414-2.03738804.409428-.58002195.986038-1.02844229 1.729831-1.35013513.743792-.32169285 1.593354-.48253927 2.548684-.48253927.955331 0 1.804892.16084642 2.548685.48253927.743793.32169284 1.320403.77011318 1.72983 1.35013513s.614141 1.25752659.614141 2.03738804c0 .80423212-.235421 1.50123329-.706262 2.09587764-.470841.59464436-1.129337 1.02356815-1.975487 1.28189726.955331.2583291 1.695712.70674944 2.221143 1.34038686zm-6.776021-2.7051444c.580022.48741341 1.361346.78473559 2.343971.89196653.982626-.10723094 1.763949-.40455312 2.343971-.89196653.580022-.48253927.870033-1.11130256.870033-1.89116401 0-.80423212-.283187-1.43786955-.849561-1.90578642-.566375-.46304273-1.354522-.69212703-2.364443-.69212703-1.00992 0-1.798068.2290843-2.364442.69212703-.566375.46791687-.849562 1.1015543-.849562 1.90578642 0 .77986145.290011 1.40862474.870033 1.89116401zm4.984777 6.91152211c.614141-.4630428.921211-1.1405474.921211-2.0276398 0-.8042321-.324129-1.4476178-.972389-1.9350312-.64826-.48253927-1.511469-.77986145-2.589628-.8870924-1.078158.10723095-1.941367.40455313-2.589627.8870924-.64826.4874134-.97239 1.1307991-.97239 1.9350312 0 .8870924.307071 1.564597.921211 2.0276398.614141.4630427 1.49441.6970012 2.640806.6970012 1.146397 0 2.026665-.2339585 2.640806-.6970012z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1520.629778 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m62.9162972 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.4298986 2.2713464-1.2896959 3.0024665-.8597972.726246-2.0266649 1.0918061-3.500603 1.0918061-.9416827 0-1.8458346-.1559723-2.7124556-.4679169-.8666211-.3168187-1.6001782-.7603649-2.2006716-1.3306386l.6550837-1.2916455c1.3511099 1.1210508 2.7568102 1.6815762 4.2171007 1.6815762 1.0372158 0 1.8253632-.2339584 2.3644425-.6970012.5390792-.4630427.8086188-1.1454215.8086188-2.0471363 0-1.78880715-1.1191012-2.68077369-3.3573035-2.68077369h-1.6786518v-1.41349887h1.35111c1.0781584 0 1.9038367-.23883257 2.4770349-.71649771s.8597972-1.1600439.8597972-2.0471363c0-.79448385-.2354206-1.39887648-.706262-1.82292614-.4708413-.42404966-1.1361606-.63363743-1.9959579-.63363743-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5868458-.56052542 1.3067554-.99919749 2.1597288-1.32089033.8529735-.32169285 1.7434778-.48253927 2.6715129-.48253927 1.3101672 0 2.3576186.33631525 3.1423542 1.00407161.7847356.66775637 1.1771034 1.56947117 1.1771034 2.70027027 0 .83347692-.2047136 1.56459703-.6141409 2.19336032-.4094272.62388916-.9758016 1.07718363-1.6991231 1.35013514.8597972.2437067 1.5148808.66775636 1.9652508 1.26727485z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.964314 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m152.488746 6.9700117c.689203.38993073 1.22487.93583374 1.607002 1.63770904.382132.70674944.573198 1.50610746.573198 2.40782226s-.201301 1.7059469-.603905 2.4126963c-.402603.7116236-.958742 1.2672749-1.668416 1.671828-.709674.399679-1.514881.6043926-2.415621.6043926-1.760537 0-3.118471-.6141409-4.073801-1.8424226-.95533-1.2282818-1.432995-2.978096-1.432995-5.24456829 0-1.63770904.221773-3.04145965.665319-4.21612596.443546-1.1746663 1.084982-2.06663284 1.924308-2.68077373s1.845835-.92121133 3.019526-.92121133c.84615 0 1.668416.15597229 2.466799.472791.798383.31194458 1.497822.75549078 2.098315 1.3306386l-.634612 1.28677139c-.682379-.57027369-1.337463-.99432335-1.965251-1.26727486-.627789-.2729515-1.269225-.40942726-1.924308-.40942726-1.255577 0-2.231379.56052542-2.927405 1.67670212-.696026 1.12105083-1.04404 2.690522-1.04404 4.7084135v.30707044c.313895-.77498731.825679-1.3891282 1.535353-1.84242267.709674-.44842033 1.521704-.6726305 2.436092-.6726305.887092 0 1.67524.19496536 2.364442.58002195zm-.337777 6.4289828c.573198-.5946443.859797-1.3793799.859797-2.363955 0-.9699527-.290011-1.74981412-.870033-2.34445848-.580022-.59464435-1.33405-.89196653-2.262086-.89196653-.95533 0-1.733242.30219631-2.333735.9017148s-.90074 1.37937991-.90074 2.33471021c0 .9699527.300247 1.7546883.90074 2.3542068.600493.5995184 1.385229.9017148 2.354207.9017148.928035 0 1.678652-.2973222 2.25185-.8919666z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m161.711095.96507854h9.621541v1.24777832l-6.837435 13.32588254h-1.80148l6.796492-13.16503611h-7.779118z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.157 2.64178066c.95533 1.22828178 1.432995 2.97322177 1.432995 5.23969411 0 2.47118593-.494725 4.39159483-1.484174 5.76610063-.989449 1.3696316-2.371266 2.0568845-4.145451 2.0568845-.832502 0-1.647945-.1608464-2.446328-.472791s-1.504645-.7554908-2.118786-1.3306386l.655084-1.2916455c.696026.5897702 1.357934 1.0138199 1.985722 1.2818973.627788.2680773 1.262401.399679 1.903837.399679 1.255577 0 2.227966-.5605255 2.917169-1.6815763.689203-1.1161767 1.033804-2.68564786 1.033804-4.70841349v-.26320324c-.313894.76523904-.825679 1.36963167-1.535352 1.80830373-.709674.44842034-1.521705.6677564-2.436093.6677564-.887092 0-1.671828-.19496539-2.354206-.58489612-.682379-.38505659-1.214635-.93583374-1.596767-1.63770904-.382132-.70187531-.573198-1.50123329-.573198-2.40294809s.201302-1.70594692.603905-2.41757049c.402604-.70674944.958743-1.26727486 1.668416-1.66695385.709674-.40455313 1.514881-.60439262 2.415621-.60439262 1.760538 0 3.118471.61414089 4.073802 1.84242267zm-1.63771 5.15683383c.600494-.59951849.90074-1.3745058.90074-2.32983608 0-.96995268-.300246-1.75468826-.90074-2.35420675-.600493-.60439262-1.385228-.9017148-2.354206-.9017148-.928035 0-1.678652.29732218-2.25185.89196653-.573198.58977023-.859797 1.37937994-.859797 2.36395502 0 .96507855.286599 1.74981413.859797 2.34445848.573198.58977022 1.330638.8870924 2.272321.8870924.95533 0 1.733242-.29732218 2.333735-.9017148z"/></g><g transform="translate(1352.227084 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4442443 13.0739279c1.490095.8410144 2.6336139 2.0140013 3.4302957 3.5187.7966819 1.5049595 1.1948925 3.2456638 1.1948925 5.2226344 0 1.9769707-.4352413 3.7325394-1.3057238 5.266967-.8702218 1.5344275-2.1097075 2.7220182-3.717675 3.5630326-1.6082282.8407536-3.4892319 1.2613912-5.643272 1.2613912-1.91777365 0-3.80607922-.3468369-5.66517747-1.0402501-1.85883748-.6934131-3.42273314-1.6449981-4.69142623-2.854755l1.37196183-2.7882562c2.92125384 2.4195138 5.91604755 3.6292706 8.98464187 3.6292706 2.2132371 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538287-1.2540894 1.8810038-2.9580238 1.8810038-5.1120638 0-2.0948431-.6196125-3.7841738-1.8588375-5.0677313-1.2394857-1.2835575-2.8917857-1.9253363-4.9571607-1.9253363-3.00965814 0-5.41456823 1.2246213-7.2144695 3.6736032h-2.52278251v-18.45642023h18.89896331v3.00965815h-15.26969267v11.24221148c1.74096506-1.6820289 3.96880577-2.5230433 6.68326137-2.5230433 1.9769706 0 3.7103731.4206376 5.2004681 1.2613913z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1362.630417 203.100332)"/><g transform="translate(1412.266122 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m21.062913 18.8183824c1.1359562 1.3719618 1.7039343 3.01696 1.7039343 4.9347336 0 2.6852483-1.017823 4.8022576-3.0537299 6.3512889-2.0361676 1.549292-4.7800913 2.3238076-8.2322925 2.3238076-3.45246205 0-6.19638571-.7745156-8.23229258-2.3238076-2.03616764-1.5490313-3.05399069-3.6660406-3.05399069-6.3512889 0-1.9177736.58258178-3.5700736 1.7482669-4.9568999 1.16542433-1.3868263 2.76608993-2.3459739 4.8019968-2.8769213-1.88830558-.5606763-3.33406805-1.4827932-4.33728744-2.7663507-1.00321938-1.2835575-1.50495946-2.795558-1.50495946-4.5365231 0-1.68176807.44280388-3.1499576 1.32789007-4.40378625.88508619-1.25408942 2.13187378-2.2278407 3.73984121-2.92125383 1.60822822-.69341314 3.44489942-1.03998932 5.51053519-1.03998932 2.0653749 0 3.9020461.34657618 5.5102744 1.03998932 1.6079674.69341313 2.854755 1.66716441 3.7398412 2.92125383.8853469 1.25382865 1.32789 2.72201818 1.32789 4.40378625 0 1.7409651-.5090419 3.2529656-1.5271257 4.5365231-1.017823 1.2835575-2.4414192 2.2056744-4.2710494 2.7663507 2.0656358.5606763 3.6663014 1.526865 4.8022576 2.8990876zm-14.64981941-5.8425077c1.25382864 1.0475519 2.94315933 1.6893307 5.06773131 1.9253363 2.1243111-.2360056 3.8136418-.8777844 5.0677313-1.9253363 1.2538286-1.0472911 1.8810037-2.4119511 1.8810037-4.09397999 0-1.74070429-.6123107-3.1129269-1.836932-4.11614628-1.2243605-1.00321938-2.9285556-1.50469868-5.111803-1.50469868-2.18350818 0-3.88770331.5014793-5.11206385 1.50469868-1.22462132 1.00321938-1.83693198 2.37544199-1.83693198 4.11614628 0 1.68202889.6271751 3.04668889 1.88126452 4.09397999zm10.77724131 14.9377202c1.3276293-1.0032194 1.9915743-2.4638463 1.9915743-4.38162 0-1.7409651-.7007149-3.1350932-2.1024056-4.1826451-1.40143-1.0475519-3.2678301-1.6893307-5.5986787-1.9253363-2.33110948.2360056-4.19750956.8777844-5.59893949 1.9253363-1.40169072 1.0475519-2.10240568 2.44168-2.10240568 4.1826451 0 1.9177737.66394503 3.3784006 1.9918351 4.38162 1.32762929 1.0032193 3.2307993 1.5049594 5.70951007 1.5049594 2.4784499 0 4.38162-.5017401 5.70951-1.5049594z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1421.105194 202.753717)"/><g transform="translate(1503.787344 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1512.887196 203.275277)"/><g transform="translate(1565.163879 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m17.3989587 13.5954872c1.490095.8410144 2.6482175 2.0213032 3.4743675 3.5408663.82615 1.5195632 1.239225 3.2532264 1.239225 5.2004682 0 1.9475025-.4352413 3.6884676-1.3057238 5.2226344-.8702218 1.5344275-2.0726768 2.7368826-3.6071044 3.6073651-1.5341668.8702218-3.2751319 1.305463-5.2226344 1.305463-3.80634005 0-6.74219755-1.3276293-8.80757252-3.9834094-2.06563575-2.6555193-3.09832323-6.4323913-3.09832323-11.330355 0-3.5408663.47957381-6.5799926 1.43846065-9.11737874.95888684-2.53764695 2.34571311-4.47028507 4.16047882-5.79817514 1.81450493-1.32789007 3.99071125-1.99157432 6.52835818-1.99157432 1.8293694 0 3.6071044.33927435 5.333205 1.01782304 1.7261006.67880948 3.2383619 1.63769632 4.5365231 2.8769213l-1.3719618 2.78851699c-1.4752306-1.23948576-2.891525-2.15404006-4.2488832-2.74418445-1.3573581-.59014439-2.7441844-.88534697-4.1604788-.88534697-2.71445553 0-4.82416305 1.20975688-6.32912251 3.62953142-1.50469868 2.41951375-2.2573088 5.81251797-2.2573088 10.17953437v.663945c.67880947-1.6817681 1.7852976-3.0096582 3.31946439-3.9834094 1.53442756-.9737513 3.28999632-1.460627 5.26696692-1.460627 1.9180345 0 3.6219688.4206377 5.1120639 1.2613913zm-.7301831 13.8977308c1.239225-1.2835575 1.8588375-2.9874918 1.8588375-5.1120638 0-2.0948431-.6271751-3.7841737-1.8810038-5.0677313-1.2540894-1.2835575-2.8842231-1.9253363-4.8906619-1.9253363-2.06563572 0-3.7474038.6490806-5.04582577 1.9475026-1.29816118 1.2981612-1.94724178 2.98019-1.94724178 5.045565 0 2.0948431.6490806 3.7914756 1.94724178 5.0898976 1.29842197 1.2981612 2.99505449 1.9475025 5.08989757 1.9475025 2.0064388 0 3.6292706-.6417787 4.8687564-1.9253363z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1574.52451 202.753717)"/><g transform="translate(1624.915924 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m.03650915.08371027h20.80213335v2.6998519l-14.78281705 28.81328473h-3.89474434l14.69415189-28.45914594h-16.81872385z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1635.972745 203.629332)"/><g transform="translate(1684.951213 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.0538664 4.23480103c2.065375 2.65551935 3.0983233 6.43239127 3.0983233 11.33035497 0 5.3407676-1.0697182 9.4936838-3.2088939 12.4590094-2.1391756 2.9655864-5.1266674 4.4481188-8.96273635 4.4481188-1.79990127 0-3.56277183-.3392743-5.28887245-1.017823-1.72610062-.6788095-3.25322635-1.6376963-4.58085564-2.8769213l1.41629437-2.7882562c1.50469869 1.2686931 2.9358575 2.19081 4.29321568 2.7660899 1.35709739.57528 2.72932.8631807 4.11614627.8631807 2.71445552 0 4.81686122-1.2097569 6.30695622-3.6292706 1.4900951-2.4197745 2.2351426-5.8127788 2.2351426-10.1797951v-.5755408c-.6788095 1.6525608-1.7852976 2.9580238-3.3194644 3.9171714-1.5344276.9588869-3.2899963 1.4384607-5.26696696 1.4384607-1.91803446 0-3.61466698-.4206376-5.08989756-1.2613913-1.47523058-.8410144-2.62605125-2.0213032-3.45220124-3.5408663s-1.23922498-3.2532264-1.23922498-5.2004681c0-1.94750259.43524126-3.68846765 1.30546302-5.22263444.87048253-1.53442756 2.07293758-2.73688261 3.60736514-3.60736514 1.53416679-.87022175 3.27513185-1.30546302 5.22263438-1.30546302 3.8063401 0 6.7421976 1.32762929 8.8075725 3.98340943zm-3.5408663 11.15328557c1.298422-1.2981611 1.9475026-2.98019 1.9475026-5.045565 0-2.09484305-.6490806-3.79147556-1.9475026-5.08989753-1.2981612-1.29816119-2.9947937-1.94750256-5.0896368-1.94750256-2.00643874 0-3.62953139.64177876-4.86875638 1.92533629-1.23922498 1.28355752-1.85883747 2.98749187-1.85883747 5.1120638 0 2.0948431.61961249 3.7841738 1.85883747 5.0677313 1.23922499 1.2835575 2.8769213 1.9253363 4.91282818 1.9253363 2.0656357 0 3.7474038-.6490806 5.045565-1.9475026z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1694.05523 202.753717)"/><path d="m274.413747 0v15.1195638-7.54515948h-274.07401986v7.54515948" stroke="#000" stroke-width="2.539424" transform="translate(1068.761162 109.742102)"/><path d="m0 .24858084h272.688304v7.55978192" stroke="#000" stroke-width="2.539424" transform="translate(1343.17491 117.053303)"/><path d="m90.8465476.12672749v8.60284661h-90.40348881v8.7441965" stroke="#000" stroke-width="2.539424" transform="translate(978.589682 177.005152)"/><path d="m1040.343498 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.18765416.0292448h90.06863584v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1069.248576 185.778593)"/><path d="m1100.026783 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m1314.628568 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.27782564.0292448h88.64587606v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1343.662323 185.778593)"/><path d="m1373.584633 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m90.3956902.12672749v8.67595862h-90.07887149v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1525.467524 177.005152)"/><path d="m1586.145618 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.22421017.0292448h90.27871103v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1615.639004 185.778593)"/><path d="m1645.921998 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1263.581889 37.572233)"><path d="m7.95815261 22.540308v-20.02691984h-7.73636299v-2.18343345h18.06186388v2.18343345h-7.736363v20.02691984z"/><path d="m32.5082157 6.84954575v15.69076225h-2.495645v-2.8385659c-.4572278.9772392-1.1488702 1.7313239-2.0742447 2.2615717s-2.001566.7953717-3.2285744.7953717c-1.3935212 0-2.6154113-.3326845-3.6653293-.9980533-1.0502591-.6657101-1.8613267-1.6067805-2.4332026-2.8232112-.571876-1.2164307-.857814-2.6358843-.857814-4.2580194s.2910562-3.0518251.8731686-4.2894112c.5824537-1.2372448 1.3986395-2.1991293 2.4488986-2.88531225s2.2615716-1.02944503 3.6342787-1.02944503c1.2270084 0 2.2977405.27024212 3.2128785.81106756.9151381.54082545 1.6118987 1.29968715 2.0899406 2.27726753v-2.71402246zm-3.7431262 12.24381045c.8315404-1.0502592 1.2474812-2.5423915 1.2474812-4.4763969 0-1.9340055-.4159408-3.4210195-1.2474812-4.460701-.8318817-1.04002268-2.0172619-1.55969281-3.5564818-1.55969281-1.5388787 0-2.7396136.53536601-3.602887 1.60643921-.8629322 1.0710733-1.294569 2.5632056-1.294569 4.4763969s.4265185 3.3896277 1.2788731 4.4296504c.8526958 1.0396815 2.0588901 1.5596929 3.6185829 1.5596929 1.5392199 0 2.7246001-.5251296 3.5564818-1.5753887z"/><path d="m44.8301643 14.4610241 6.4571488 8.0792839h-3.0258928l-4.9598983-6.176329-4.8974559 6.176329h-3.0883351l6.5195911-8.0792839-6.1452784-7.61147835h3.0572845l4.5541938 5.77096575 4.5545351-5.77096575h3.0879939z"/><path d="m56.3720959 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.422625-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8990615.99805327 1.1232791.66571006 1.9913295 1.61189868 2.6048337 2.83890711.6135042 1.2270084.9202563 2.6618166.9202563 4.3047658s-.3067521 3.0777574-.9202563 4.3047658-1.4815546 2.173197-2.6048337 2.8389071c-1.1229379.6653688-2.422625.9980533-3.8990615.9980533-1.4767776 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478225-2.532155 1.2478225-4.5077886 0-1.9131914-.4261773-3.3950872-1.2788731-4.4453463-.8526957-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526957 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2631771 4.5077886.8424594 1.0291038 2.0435354 1.543997 3.6032282 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m85.1023814 12.6829538v9.8573542h-2.5270367v-9.7324695c0-1.4559636-.2910562-2.5215774-.8731687-3.19752386-.5824536-.67594651-1.4975917-1.01374915-2.7454142-1.01374915-1.4556223 0-2.6201884.44699138-3.4936983 1.34131535-.8735098.89432396-1.3102648 2.10051826-1.3102648 3.61858286v8.9838443h-2.5266955v-11.2925036c0-1.62179388-.0832564-3.08799385-.249428-4.39825865h2.4018109l.2497692 2.80751531c.4783832-1.01886737 1.1956167-1.80400261 2.152383-2.3550645.956425-.55106189 2.0483124-.82676344 3.2753208-.82676344 3.7642815 0 5.6464223 2.0691265 5.6464223 6.20772068z"/><path d="m92.4640906 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.4229662-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8994028.99805327 1.122938.66571006 1.990988 1.61189868 2.604492 2.83890711.613505 1.2270084.920257 2.6618166.920257 4.3047658s-.306752 3.0777574-.920257 4.3047658c-.613504 1.2270084-1.481554 2.173197-2.604492 2.8389071-1.1232792.6653688-2.4229663.9980533-3.8994028.9980533-1.4764364 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478226-2.532155 1.2478226-4.5077886 0-1.9131914-.426177-3.3950872-1.2788732-4.4453463-.8526958-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526958 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2635183 4.5077886.8421182 1.0291038 2.0431942 1.543997 3.602887 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m130.334156 12.6829538v9.8573542h-2.526696v-9.7324695c0-1.4767777-.254546-2.5478509-.764321-3.21321974-.509434-.66536885-1.336197-.99805327-2.479949-.99805327-1.330738 0-2.370761.44699138-3.119386 1.34131535-.748625.89432396-1.122938 2.11075466-1.122938 3.64963346v8.9527937h-2.526695v-9.7324695c0-1.4559636-.260006-2.5215774-.780017-3.19752386-.520012-.67594651-1.351552-1.01374915-2.495645-1.01374915-1.330738 0-2.375879.44699138-3.135082 1.34131535-.758861.89432396-1.138292 2.11075466-1.138292 3.64963346v8.9527937h-2.527037v-11.2925036c0-1.62179388-.082915-3.08799385-.249428-4.39825865h2.402152l.249428 2.74507301c.436755-.99805327 1.086428-1.76749263 1.949701-2.30831808.862933-.54082544 1.866445-.81106756 3.010197-.81106756 1.247823 0 2.26669.24942801 3.056944.74862526.790253.49919724 1.372707 1.26863659 1.747019 2.30831807.478383-.93561096 1.180262-1.679118 2.105637-2.23017989.925374-.55106189 1.970515-.82676344 3.135081-.82676344 3.472884 0 5.209327 2.0691265 5.209327 6.20772068z"/><path d="m148.926608 6.84954575-7.330999 17.12591165c-.76944 1.7883067-1.736784 3.0985715-2.90135 3.9304532s-2.599374 1.4037577-4.304766 1.715628l-.530247-1.9653972c1.476436-.3326844 2.594256-.7745576 3.353459-1.3256195.758861-.5510619 1.388061-1.3986394 1.887259-2.5423914l.62374-1.4037577-6.644475-15.53482705h2.65158l5.30316 12.94568925 5.364238-12.94568925z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1242.021555 73.436333)"><path d="m.1061178 18.7869453 1.3955685-17.74521654h3.91271003l-1.17104917 14.58010814h7.92539604l-.2490868 3.1651084z"/><path d="m14.0379178 18.7869453.9970296-12.63586623h3.763258l-.9970297 12.63586623zm1.2959338-18.56754419h4.0375946l-.2739955 3.53907983h-4.0375946z"/><path d="m20.1190478 17.4411941 1.2212078-2.6167762c.6981254.4817953 1.445727.8513309 2.243146 1.1089481.7977602.2576171 1.5951792.3862551 2.3925981.3862551.6977843 0 1.2130186-.0996347 1.5453618-.2989042.3323432-.1996106.4985148-.4654169.4985148-.7977601 0-.3487216-.1951748-.6230583-.5858658-.8223277-.3903497-.1996106-1.0260328-.4319779-1.906367-.6977842-.9141144-.2494281-1.661716-.4985149-2.243146-.7479429-.5817713-.2490868-1.0843807-.6189636-1.5078282-1.108948-.4237888-.4903257-.6356832-1.1256676-.6356832-1.9067083 0-.8141385.2286139-1.52864228.6855005-2.14317012.4568867-.61486905 1.1048535-1.09666434 1.9439007-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472123 0 1.8736104.14126293 2.7791945.42378878.9052428.28252585 1.6654694.66468641 2.2803385 1.1464817l-1.1962991 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9439007-1.02193831-.6814059-.23236727-1.3460923-.34872152-1.9940592-.34872152-.6810648 0-1.1962991.09963472-1.5450206.29890416-.3490627.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2074586.65615608.6230582.87214498.4152584.215989 1.046847.4405083 1.8940833.6728756.9137732.2661475 1.6572803.5234235 2.2305211.7728515.5732409.2490868 1.0717557.6189636 1.4955445 1.1089481.4237887.4903256.6353419 1.1256676.6353419 1.9067082 0 1.2461165-.494079 2.222332-1.4829195 2.9283054-.9884992.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598896 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m38.3876878 13.8772056c-.0498173.6977843.0914456 1.2130186.4237888 1.5453618.3323432.332002.7892298.4981736 1.3706598.4981736.3821606 0 .8059494-.0661957 1.2710251-.1992694l-.2490868 2.9160216c-.5650517.2327085-1.2959338.3490627-2.1933287.3490627-1.4286663 0-2.5212361-.3821605-3.2773681-1.1464817-.7557907-.7643211-1.1338567-1.8442659-1.1338567-3.2401757 0-.2825258.0081891-.4985148.0249087-.6479668l.3988801-4.98446573h-2.3925982l.2241782-2.8163869h2.3925981l.2241781-2.96583898 3.8632339-1.22120774-.3241541 4.18704672h3.215267l-.2245193 2.8163869h-3.2149258z"/><path d="m42.4003738 17.4411941 1.2212077-2.6167762c.6977843.4817953 1.4457271.8513309 2.2431461 1.1089481.7974189.2576171 1.5951791.3862551 2.3925981.3862551.6977842 0 1.2130186-.0996347 1.5453618-.2989042.332002-.1996106.4981736-.4654169.4981736-.7977601 0-.3487216-.1951749-.6230583-.5855246-.8223277-.3903497-.1996106-1.0260329-.4319779-1.9067083-.6977842-.9137732-.2494281-1.6613748-.4985149-2.243146-.7479429-.58143-.2490868-1.0840394-.6189636-1.5078282-1.108948-.4234475-.4903257-.6353419-1.1256676-.6353419-1.9067083 0-.8141385.2282727-1.52864228.6851593-2.14317012.4572278-.61486905 1.1051947-1.09666434 1.9442419-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472122 0 1.8732692.14126293 2.7788532.42378878.9055841.28252585 1.6658107.66468641 2.2806797 1.1464817l-1.196299 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9442419-1.02193831-.6810648-.23236727-1.3457512-.34872152-1.9937181-.34872152-.6814059 0-1.196299.09963472-1.5453618.29890416-.3487215.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2077999.65615608.6233995.87214498.4152584.215989 1.0465057.4405083 1.8940833.6728756.9137732.2661475 1.6572802.5234235 2.2305211.7728515.5732408.2490868 1.0717556.6189636 1.4955444 1.1089481.4234476.4903256.635342 1.1256676.635342 1.9067082 0 1.2461165-.4944203 2.222332-1.4829195 2.9283054-.9884993.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598897 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m67.62263 18.7869453v-16.0005853h-6.1811059v-1.74463124h14.430656v1.74463124h-6.181106v16.0005853z"/><path d="m86.688689 12.4567284h-9.1967623c.0167195 1.594838.3865964 2.7996674 1.1092893 3.6138059s1.7736345 1.2212077 3.1528247 1.2212077c1.4621054 0 2.8078565-.4903256 4.0372534-1.4706357l.6732168 1.4706357c-.5483322.5148932-1.2505522.9219624-2.1059777 1.2212078-.8557667.2989041-1.7323475.4486974-2.6294012.4486974-1.9606202 0-3.4977928-.5776766-4.6108355-1.7323475-1.1133839-1.1546708-1.6699052-2.737225-1.6699052-4.7476626 0-1.2795555.2490868-2.4134122.7476016-3.40225268.4985148-.98849926 1.1962991-1.75691497 2.093694-2.30524714.8970537-.54833217 1.918992-.82232765 3.0654737-.82232765 1.6613748 0 2.965839.54389638 3.9130512 1.63237157.9468711 1.08813397 1.4204772 2.587773 1.4204772 4.4985758zm-7.8632949-3.98777725c-.656156.63124737-1.0758502 1.52011191-1.2584001 2.66659365h7.3023377c-.0996347-1.17957958-.4446028-2.07697448-1.034222-2.69150233-.5899604-.61486905-1.4081934-.92230358-2.4550404-.92230358s-1.8981779.31562368-2.5546752.94721226z"/><path d="m96.7326876 6.10126171-.0498173 1.84426595c-.3821606-.13307377-.8226689-.19926944-1.3208425-.19926944-1.2130186 0-2.114508.37772478-2.7041272 1.13385676-.5899604.75613198-.88477 1.67399982-.88477 2.75394462v7.1528857h-2.0189679v-9.02206036c0-1.29593379-.0665369-2.46732417-.1992694-3.51417115h1.918992l.1992694 2.31787208c.3159649-.84723633.8226689-1.49554443 1.5204531-1.94390067.6977843-.44869745 1.4955445-.67287557 2.3925981-.67287557.4152584 0 .797419.04981736 1.1464817.14945208z"/><path d="m116.845594 10.9113666v7.8755787h-2.018627v-7.7759439c0-1.17957958-.203705-2.03534628-.610775-2.56695893-.407069-.53161264-1.067661-.79776018-1.981434-.79776018-1.063225 0-1.894083.35725189-2.492233 1.07175566-.598149.71450378-.897395 1.68662475-.897395 2.91602165v7.1528857h-2.018626v-7.7759439c0-1.16320127-.2078-2.01453218-.623059-2.55467519-.415258-.53980181-1.079944-.81004392-1.993718-.81004392-1.063566 0-1.898519.35725189-2.504857 1.07175566-.606339.71450378-.909679 1.68662475-.909679 2.91602165v7.1528857h-2.018968v-9.02206036c0-1.29593379-.0661956-2.46732417-.1992694-3.51417115h1.9189924l.19961 2.19332868c.348722-.79776018.868051-1.41228802 1.557646-1.84426595s1.491108-.64796689 2.404882-.64796689c.997029 0 1.811168.19926944 2.442415.59814953.631589.39853888 1.096664 1.01340793 1.39591 1.84426595.38216-.74794282.942776-1.34165656 1.682189-1.78216486.739412-.44016708 1.574365-.66025062 2.504858-.66025062 2.774758 0 4.162138 1.65318567 4.162138 4.95955697z"/><path d="m119.911067 17.3415594.672876-1.4955444c.681406.5316126 1.371001.9137732 2.068785 1.1464817s1.478825.3490627 2.342781.3490627c.946871 0 1.665469-.162077 2.155795-.4862311.489984-.3238128.735318-.7933244.735318-1.4078522 0-.4985148-.166172-.8973949-.498515-1.1962991-.332343-.2992453-.880675-.5319538-1.644996-.6981254l-2.118603-.4981736c-1.046506-.2327085-1.85655-.6483081-2.429791-1.2464577-.573241-.5981495-.859861-1.3123121-.859861-2.14317008 0-1.09666435.440167-1.98962346 1.320843-2.67921855.880675-.6895951 2.043876-1.03422204 3.489262-1.03422204.880675 0 1.711533.14092171 2.492233.42344756.781041.28252584 1.437197.68959509 1.96915 1.22120774l-.673216 1.47063576c-1.17958-.9803101-2.442416-1.47063576-3.788167-1.47063576-.897054 0-1.591085.17026618-2.081069.51113976-.489984.34053236-.735318.81823307-.735318 1.43310213 0 .51489308.153888.92196238.461323 1.22120778.307093.2989041.801513.5316126 1.482919.6977842l2.118261.5234235c1.163202.2658063 2.027158.6769702 2.592209 1.2334915.564711.5568625.847237 1.28365.847237 2.1807037 0 1.0802861-.440168 1.9442419-1.320843 2.5922088s-2.076974.9721209-3.588897.9721209c-2.110414 0-3.779978-.540143-5.009716-1.6200878z"/><path d="m146.77832 17.0672227h3.91271v1.7197226h-9.894546v-1.7197226h3.913051v-13.48310252l-3.638715 2.31753087v-1.96880935l4.53611-2.89111294h1.17139z"/><path d="m156.722343 16.2199864v1.8193573c0 .6977842-.116013 1.3375619-.348722 1.918992-.232708.5817712-.623058 1.1464817-1.17139 1.6948138l-.947212-.7226929c.647967-.7476016 1.013749-1.4621054 1.096664-2.1435113h-1.196299v-2.5669589z"/><path d="m171.801648 17.0672227v1.7197226h-11.415341v-1.5450206l6.204991-6.8788902c.832564-.93049277 1.436515-1.76953995 1.818675-2.51714156.382161-.74794282.573241-1.49554443.573241-2.24314604 0-.9803101-.279796-1.73200629-.846213-2.25542978-.563004-.5234235-1.371683-.78513524-2.4158-.78513524-1.696179 0-3.374274.68106472-5.03599 2.04353539l-.77251-1.56992926c.697784-.66468642 1.57846-1.19629906 2.641685-1.59517916 1.063567-.39888009 2.136346-.59814953 3.214585-.59814953 1.627594 0 2.917386.41935298 3.862551 1.25874137.948577.83904718 1.422866 1.97290393 1.422866 3.40191149 0 1.01340793-.228614 1.98962345-.685842 2.92830535-.457228.93868189-1.218137 1.98962347-2.279315 3.15282467l-5.061239 5.4829805z"/><path d="m177.435104 16.2199864v1.8193573c0 .6977842-.119425 1.3375619-.351451 1.918992-.232026.5817712-.621011 1.1464817-1.170367 1.6948138l-.948577-.7226929c.648308-.7476016 1.01682-1.4621054 1.098712-2.1435113h-1.197664v-2.5669589z"/><path d="m191.339607 11.2102708c.549356.7312233.822328 1.6535269.822328 2.7665695 0 1.5453618-.522059 2.762475-1.569588 3.6513395-1.04753.8888646-2.466983 1.3334674-4.261773 1.3334674-1.146482 0-2.245193-.1910802-3.302959-.5732408-1.054354-.3821606-1.948337-.9223036-2.678536-1.6200878l.798442-1.5702705c1.644656 1.3624706 3.354142 2.0438766 5.131871 2.0438766 1.265907 0 2.22472-.2825259 2.879853-.8475776.658544-.5647104.98611-1.3955685.98611-2.4922328 0-2.1766092-1.364859-3.2650844-4.087753-3.2650844h-2.043876v-1.71938129h1.644655c1.313677 0 2.316848-.29105622 3.016339-.87248623.696078-.58143001 1.047529-1.41228803 1.047529-2.49223284 0-.96359058-.290033-1.70300303-.859861-2.21823737-.573241-.51489312-1.385332-.77251029-2.432862-.77251029-1.692425 0-3.371202.68106472-5.032918 2.04353539l-.771145-1.56992926c.713139-.68140594 1.590061-1.21711317 2.627354-1.6078041 1.037293-.39034973 2.122356-.58552459 3.251777-.58552459 1.596885 0 2.873028.40706925 3.82843 1.22120775.955401.81413849 1.433102 1.91080284 1.433102 3.28999303 0 1.01340793-.252499 1.90227247-.750673 2.6665936-.498174.76432114-1.187427 1.31265331-2.067762 1.64499652 1.04753.29890416 1.845972.81413848 2.391916 1.54502058z"/></g><g transform="translate(1238.737766 301.42884)"><path d="m.162355.124952h196.432387v68.608179h-196.432387z" fill="#0083c0"/><path d="m196.594742 68.7331309h-196.43238687v-68.60817855h196.43238687zm-193.8939261-66.06958614v63.53099374h191.3558681v-63.53099374z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1249.006069 345.842567)"><path d="m.56874621 14.4291604 1.02879531-13.08192845h2.88430112l-.8634532 10.74723665h5.84208763l-.18371345 2.3346918z"/><path d="m10.8383279 14.4291604.7348538-9.31580278h2.7740731l-.7348538 9.31580278zm.95531-13.68665188h2.9761578l-.2020848 2.6102619h-2.9761578z"/><path d="m15.320936 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329648-1.07166178.618502-.25260599 1.3257988-.38273635 2.1218904-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m28.7871317 10.8084745c-.0367426.5128667.0673616.895603.3123129 1.1405543s.5817593.3674269 1.010424.3674269c.2816939 0 .5940068-.0459284.9369385-.1454398l-.1837134 2.1509783c-.4164171.168404-.9553099.252606-1.6166783.252606-1.0532905 0-1.8585677-.2832249-2.4158319-.84202-.5572641-.5664498-.8358962-1.3625414-.8358962-2.3882748 0-.2066776.0061238-.3674269.0183714-.4822478l.2939415-3.67426897h-1.7636491l.1653421-2.07443101h1.7636491l.1653421-2.18159719 2.8475584-.90325778-.2388274 3.08485497h2.3699034l-.1653421 2.07443101h-2.3699034z"/><path d="m31.7449182 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329649-1.07166178.6185019-.25260599 1.3257987-.38273635 2.1218903-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m52.3208244 13.1584757h2.8843011v1.2706847h-7.2934239v-1.2706847h2.8843011v-9.93583564l-2.6822163 1.70700411v-1.4467434l3.3435848-2.13566882h.8634532z"/><path d="m59.6509909 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592836.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083392-1.5768737h-.8818246v-1.8907176z"/><path d="m70.7656545 13.1584757v1.2706847h-8.4140759v-1.1405544l4.5744648-5.06742923c.6123782-.68892542 1.0594142-1.30895831 1.3411082-1.86009865.2816939-.55114034.4225409-1.10228069.4225409-1.65342103 0-.71954434-.2082085-1.27068468-.6246257-1.66107575-.4164171-.38273635-1.010424-.57410453-1.7820204-.57410453-1.2492515 0-2.4862554.49755726-3.7110117 1.50032649l-.5695117-1.15586377c.5143977-.48990253 1.1635185-.8802936 1.9473626-1.17117323.783844-.29853435 1.5738118-.44397416 2.3699035-.44397416 1.2002611 0 2.1494473.30618907 2.8475584.92622196.6981111.62003288 1.0471666 1.45439813 1.0471666 2.51075045 0 .74250851-.168404 1.46205285-.5052119 2.15863301-.336808.68892542-.897134 1.46205285-1.6809781 2.31938227l-3.729383 4.04169587z"/><path d="m74.9175784 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592837.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083391-1.5768737h-.8818245v-1.8907176z"/><path d="m85.1687888 8.84120966c.4041695.54348561.6062543 1.22475634.6062543 2.04381214 0 1.1405543-.3857982 2.0361573-1.1573947 2.6868091-.7715965.6583065-1.8187631.9874598-3.1414999.9874598-.8450819 0-1.6564829-.1454398-2.4342032-.42101-.7777203-.2832249-1.4360268-.6812707-1.9749196-1.1941374l.5878831-1.1635185c1.2125087 1.010424 2.4740077 1.5079812 3.784497 1.5079812.9308148 0 1.6381116-.2066776 2.1218903-.6200329.4837787-.4210099.7256681-1.0333881.7256681-1.8371344 0-1.60749269-1.0043002-2.41123903-3.0129005-2.41123903h-1.5064503v-1.26302995h1.2125088c.9675574 0 1.708535-.21433235 2.2229327-.64299706.5143976-.42866471.7715965-1.04104287.7715965-1.83713448 0-.71188961-.2112705-1.25537522-.6338114-1.63811157-.422541-.38273635-1.0196097-.5664498-1.7912062-.5664498-1.2492514 0-2.4862553.49755726-3.7110116 1.50032649l-.5695117-1.15586377c.5266452-.49755726 1.1727042-.89560306 1.9381769-1.18648268.7654727-.2832249 1.5646262-.42866471 2.3974605-.42866471 1.175766 0 2.1157665.29853435 2.8200014.90325778.7042349.5970687 1.0563523 1.40846976 1.0563523 2.41889372 0 .75016325-.1837134 1.40846977-.5511403 1.96726484-.3674269.56644979-.8757008.97215032-1.5248216 1.21710159.7715964.21433235 1.3594795.5970687 1.7636491 1.13289959z"/><path d="m90.1841659 12.5384428v1.3395772c0 .5128667-.085733.9874598-.2571988 1.4161245-.1714659.4286647-.4592837.84202-.8634533 1.2477205l-.6981111-.5358309c.477655-.5511403.7471014-1.0716618.8083392-1.5768737h-.8818245v-1.8907176z"/><path d="m101.776484 10.3338814v1.2477205h-1.9841048v2.8475585h-1.5064503v-2.8475585h-6.0258011v-1.1405543l6.3013713-9.09381565h1.2308801v8.98664945zm-7.9547919 0h4.4642368v-6.42997064z"/><path d="m105.450753 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257198 1.4161245-.171466.4286647-.459284.84202-.863454 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m114.847696 6.74381447c.618502.34446271 1.093095.83436524 1.423779 1.45439812.330685.62768761.496027 1.34723195.496027 2.17394251 0 .8190557-.180652 1.5462548-.541955 2.1815971-.361303.6353424-.875701 1.1328996-1.543193 1.4773623-.667492.3521175-1.448274.5281762-2.342346.5281762-.796092 0-1.579936-.1454398-2.351532-.4363194-.771597-.2832249-1.420718-.6812707-1.947363-1.178828l.569512-1.1635185c1.212508 1.010424 2.455636 1.5079812 3.729383 1.5079812.918567 0 1.638111-.2602607 2.158633-.7807821.520521-.5205215.780782-1.2247563.780782-2.1203594 0-.87263887-.257199-1.56921902-.771597-2.10504991-.514397-.52817616-1.200261-.79609161-2.05759-.79609161-1.249252 0-2.247428.50521198-2.994529 1.52329067h-1.047167v-7.6623817h7.844564v1.2477205h-6.338114v4.66938345c.722606-.69658015 1.647297-1.04869759 2.774073-1.04869759.820587 0 1.540131.17605872 2.158633.52817616z"/><path d="m120.717341 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m130.077541 6.74381447c.618502.34446271 1.099219.83436524 1.442151 1.46970758.342931.62768761.514397 1.34723194.514397 2.15863305 0 .8037463-.180651 1.5309453-.541954 2.1662877-.361304.6353423-.860392 1.1328996-1.497265 1.4926717-.636873.3674269-1.35948.5434857-2.167819.5434857-1.579935 0-2.798568-.5511404-3.655897-1.6534211-.85733-1.1022806-1.285994-2.6714997-1.285994-4.70000233 0-1.46970758.199022-2.73273753.597068-3.78908985.398046-1.0486976.973681-1.85244393 1.726907-2.40358427.753225-.55114034 1.656483-.82671051 2.709773-.82671051.759349 0 1.497265.13778508 2.213747.42100998s1.34417.6812707 1.883063 1.19413741l-.569512 1.15586377c-.612378-.51286671-1.200261-.88794833-1.763649-1.13289959s-1.139023-.3674269-1.726906-.3674269c-1.126776 0-2.002477.49755726-2.627103 1.50032649-.624625 1.01042396-.936938 2.41889373-.936938 4.22540929v.27557017c.281694-.69658015.740977-1.24772049 1.377851-1.65342102.636873-.39804581 1.365603-.60472343 2.18619-.60472343.796091 0 1.503388.17605872 2.12189.52817616zm-.303127 5.76400943c.514397-.5281762.771596-1.2400658.771596-2.1203594 0-.87263887-.26026-1.56921902-.780782-2.10504991-.520521-.52817616-1.197199-.79609161-2.030033-.79609161-.85733 0-1.555441.26791545-2.094334.80374634-.538893.54348561-.808339 1.24006577-.808339 2.09739518 0 .8726389.269446 1.5768738.808339 2.1127047.538893.5358308 1.243128.811401 2.112705.811401.832834 0 1.50645-.2679154 2.020848-.8037463z"/><path d="m135.983928 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m138.353832 1.34723195h8.634532v1.12524486l-6.136029 11.95668359h-1.616679l6.099287-11.81124377h-6.981111z"/><path d="m151.250516 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m161.915081 8.9101022c.471532.5664498.707297 1.2477205.707297 2.0438121 0 1.1175901-.422541 1.9978837-1.267623 2.6408808-.845081.6429971-1.984105.9644956-3.41707.9644956s-2.571988-.3214985-3.41707-.9644956-1.267623-1.5232907-1.267623-2.6408808c0-.7960916.24189-1.4773623.725669-2.05146683.483778-.58175925 1.148209-.97980505 1.99329-1.1941374-.783844-.23729654-1.383974-.62003289-1.800391-1.14820905-.416418-.53583089-.624626-1.1635185-.624626-1.88306284 0-.70423488.183713-1.30895831.55114-1.82947974.367427-.52052144.884887-.92622197 1.552379-1.21710159.667492-.2832249 1.429903-.42866471 2.287232-.42866471.85733 0 1.619741.14543981 2.287233.42866471.667492.29087962 1.184951.69658015 1.552378 1.21710159.367427.52052143.551141 1.12524486.551141 1.82947974 0 .71954434-.211271 1.34723195-.633812 1.88306284-.422541.52817616-1.013486.91091251-1.772834 1.14820905.857329.2296418 1.521759.62768761 1.99329 1.20179213zm-6.080915-2.42654845c.520522.43631944 1.221695.70423488 2.103519.7960916.881825-.09185672 1.582998-.35977216 2.103519-.7960916.520522-.43631944.780782-1.00276923.780782-1.69934939 0-.71954434-.254137-1.29364886-.76241-1.70700412-.508274-.42100998-1.215571-.62768761-2.121891-.62768761-.906319 0-1.613616.20667763-2.12189.62768761-.508274.41335526-.762411.98745978-.762411 1.70700412 0 .69658016.260261 1.26302995.780782 1.69934939zm4.473423 6.20032885c.55114-.4133553.82671-1.0257334.82671-1.821825 0-.7195444-.290879-1.30130361-.872639-1.72996832-.581759-.43631943-1.356417-.70423488-2.323975-.80374633-.967557.09951145-1.742216.3674269-2.323975.80374633-.581759.42866471-.872639 1.01042392-.872639 1.72996832 0 .7960916.27557 1.4084697.826711 1.821825.55114.4133553 1.341108.6276876 2.369903.6276876 1.028796 0 1.818763-.2143323 2.369904-.6276876z"/><path d="m166.517103 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m176.456001 2.85521316c.857329 1.10228069 1.285994 2.67149972 1.285994 4.70000237 0 2.21987082-.443974 3.94218437-1.331923 5.17459547-.887948 1.232411-2.128014 1.8447892-3.720197 1.8447892-.747101 0-1.478893-.1377851-2.195376-.42101-.716482-.2832249-1.350293-.6812707-1.901434-1.1941374l.587883-1.1558638c.624626.5281762 1.218633.9109125 1.782021 1.148209.563388.2372966 1.132899.3597722 1.708535.3597722 1.126776 0 1.999414-.505212 2.617916-1.5079812s.927753-2.411239.927753-4.22540929v-.23729654c-.281694.6812707-.740977 1.22475632-1.377851 1.62280212-.636873.3980458-1.365603.5970687-2.18619.5970687-.796091 0-1.500326-.17605872-2.112704-.52052143-.612378-.35211744-1.090033-.84201997-1.432965-1.46970758-.342932-.63534234-.514398-1.35488667-.514398-2.15863301 0-.81140106.180652-1.53094539.541955-2.17394246.361303-.63534234.860391-1.13289959 1.497265-1.49267176.636873-.35977217 1.359479-.54348561 2.167818-.54348561 1.579936 0 2.798568.55114034 3.655898 1.65342102zm-1.469708 4.63110982c.538893-.54348561.808339-1.24006577.808339-2.09739519 0-.86498415-.269446-1.56921903-.808339-2.11270464-.538893-.53583089-1.243127-.80374634-2.112704-.80374634-.832835 0-1.506451.26026072-2.020848.79609161-.514398.53583089-.771597 1.24006577-.771597 2.12035937 0 .87263888.257199 1.56921903.771597 2.10504992.514397.53583089 1.194137.79609161 2.039219.79609161.857329 0 1.55544-.26791545 2.094333-.80374634z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1307.966463 315.478416)"><path d="m15.7309762 20.418335h-2.3788531l-2.4066219-6.4812177c-.2915715-.8025158-.6979203-1.3403033-1.21719525-1.6133623-.51927495-.2739846-1.2532946-.4100513-2.20205898-.4100513h-4.86785547v8.5046313h-2.21501771v-19.47142187h7.74006606c2.09653785 0 3.70527205.46466314 4.82620245 1.39491504 1.121856.92932627 1.6818584 2.26962951 1.6818584 4.01998408 0 1.2764352-.332299 2.34738191-.9978225 3.21284015-.6655235.8663839-1.6272466 1.4819237-2.8851693 1.8466194.5655561.0907112 1.0487317.332299 1.4495268.7247635.4007951.3915388.7386478.9524668 1.0117068 1.6818584zm-7.73914047-10.3651351c2.98976477 0 4.48464727-1.22089777 4.48464727-3.66454456 0-1.20331091-.3646958-2.10116598-1.0940874-2.6935652-.7284659-.59239922-1.85957813-.88859883-3.39055987-.88859883h-5.33344423v7.24670859z"/><path d="m18.2745903 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536655 1.7503546 1.0024506.3461833 2.1696621.5192749 3.5007091.5192749 1.5680067 0 2.7759458-.3054558 3.6228915-.9154419.8478714-.6109117 1.2718071-1.4726674 1.2718071-2.5843416 0-.6571929-.2045629-1.1903522-.6146142-1.6004035-.410977-.4100513-.9487644-.7340197-1.6142879-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923132-1.0672442-.9663513-.3822826-1.7503546-.93395442-2.3520101-1.65408972-.6016554-.72013531-.9024831-1.66427156-.9024831-2.83055753 0-1.11259978.2915714-2.09190974.8747144-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.166286.41930758 2.1511497 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117394-.78400334-1.8364376-1.35881571-2.7759457-1.72351148-.9385825-.36377015-1.9641737-.54611803-3.0767735-.54611803-1.5133948 0-2.6981933.3230427-3.5553209.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966031.92099566 3.4460973 1.28569143 1.6772303.40079512 2.994393.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693-.5831429.8293589-1.41713 1.4726675-2.501961 1.9280744-1.0848311.4554069-2.3566382.6840359-3.8154213.6840359-3.0443766 0-5.4695109-.8210283-7.2744773-2.4621592z"/><path d="m35.3125473 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536654 1.7503546 1.0024506.3461833 2.1696622.5192749 3.5007092.5192749 1.5680067 0 2.7750201-.3054558 3.6228915-.9154419.8478714-.6109117 1.271807-1.4726674 1.271807-2.5843416 0-.6571929-.2045628-1.1903522-.6155398-1.6004035-.4100513-.4100513-.9478387-.7340197-1.6133622-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923133-1.0672442-.9663512-.3822826-1.7503545-.93395442-2.35201-1.65408972-.6016555-.72013531-.9024832-1.66427156-.9024832-2.83055753 0-1.11259978.2915715-2.09190974.8747145-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.1662859.41930758 2.1511496 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117395-.78400334-1.8364376-1.35881571-2.7759458-1.72351148-.9385825-.36377015-1.9641736-.54611803-3.0767734-.54611803-1.5133949 0-2.6981933.3230427-3.555321.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966032.92099566 3.4460974 1.28569143 1.6772303.40079512 2.9943929.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693s-1.41713 1.4726675-2.5019611 1.9280744-2.3566381.6840359-3.8154212.6840359c-3.0443766 0-5.469511-.8210283-7.2744773-2.4621592z"/></g><g transform="translate(1132.952069 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.6732656 32.2046798v3.383959h-22.46109685v-3.0406798l12.21155275-13.5355472c1.6346218-1.8308227 2.8280084-3.4819151 3.5798709-4.953277.7521514-1.4710729 1.1280827-2.9424349 1.1280827-4.4137968 0-1.92877865-.5559506-3.40823133-1.6675628-4.43806909-1.1116122-1.03012673-2.6971116-1.54504561-4.7570761-1.54504561-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048438-3.08980225c1.37340598-1.30781306 3.10598377-2.35383234 5.19860024-3.13863575 2.09232752-.78480342 4.2011255-1.17691617 6.32639393-1.17691617 3.2039397 0 5.7377914.82554616 7.6015551 2.47663847 1.8634746 1.65109231 2.7953564 3.88240747 2.7953564 6.69394548 0 1.99437155-.4496149 3.91534845-1.3488447 5.76264155-.8989409 1.8470042-2.394864 3.9150595-4.4871916 6.2035878l-9.95538731 10.7893133z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1144.791113 397.615433)"/><g transform="translate(1191.307406 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m21.6572224 20.6796856c1.0789602 1.4387099 1.6184403 3.2533511 1.6184403 5.4436346 0 3.0406798-1.0298378 5.4355438-3.0895133 7.184881-2.0599645 1.7490483-4.855321 2.6237169-8.3860695 2.6237169-2.25616532 0-4.42217651-.3762202-6.49803356-1.1280827-2.076146-.7518625-3.83357397-1.8146412-5.27199496-3.1877582l1.56931788-3.0895133c3.2365917 2.6809301 6.60408028 4.0213951 10.10246574 4.0213951 2.4847292 0 4.3730541-.5559506 5.6643967-1.6675628s1.9371583-2.746234 1.9371583-4.9041544c0-4.2829-2.68093-6.4243499-8.0427902-6.4243499h-4.02168406v-3.3839591h3.23688066c2.5829741 0 4.5608752-.5721321 5.9339922-1.7163963 1.3731171-1.1442642 2.0599645-2.779175 2.0599645-4.90415445 0-1.89641562-.5640413-3.35130707-1.692124-4.36467437-1.1277937-1.01365625-2.7216728-1.52048438-4.7816373-1.52048438-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048437-3.08980225c1.40605796-1.34046504 3.13054499-2.39486403 5.17403901-3.16319698 2.04349402-.76833294 4.17685323-1.15235494 6.40007765-1.15235494 3.1386357 0 5.6479262.80098493 7.5278713 2.40295479 1.8799452 1.60196986 2.8199177 3.75989029 2.8199177 6.47347235 0 1.99437156-.4906466 3.74341986-1.4713619 5.24743376s-2.3376508 2.5829741-4.0705175 3.2368806c2.0596755.5883136 3.6292823 1.6019699 4.7079536 3.0403909z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1203.470522 396.880376)"/><g transform="translate(1249.976943 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m25.5263379 24.074336v3.3348366h-5.2965562v7.601555h-4.0213951v-7.601555h-16.08558047v-3.0406798l16.82126147-24.27573805h3.2857141v23.98158125zm-21.23505825 0h11.91710695v-17.16454069z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1260.680298 397.799392)"/><g transform="translate(1072.3219 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m12.0107286 31.6267686h7.6995109v3.383959h-19.46953948v-3.383959h7.69951097v-26.53161447l-7.16003086 4.56087523v-3.87431672l8.92554959-5.68895789h2.30499888z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1086.781678 397.799392)"/><g transform="translate(1310.293872 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m18.2209624 14.4865002c1.6510923.9318818 2.9181626 2.2316041 3.8009219 3.8988779.8827594 1.6675628 1.3239946 3.5963414 1.3239946 5.7869138 0 2.1905725-.4822669 4.1358216-1.4468007 5.8360363-.9642448 1.7002148-2.3376508 3.0161186-4.119351 3.9480004-1.7819892.9315929-3.866226 1.3976783-6.2529993 1.3976783-2.12497947 0-4.21730699-.384311-6.27727148-1.1526439-2.05967553-.768333-3.79254227-1.822732-5.19831128-3.163197l1.52019542-3.0895133c3.23688066 2.6809301 6.55524679 4.0213951 9.95538734 4.0213951 2.4523662 0 4.3730541-.6946492 5.7626416-2.0842367 1.3892985-1.3895875 2.0842368-3.2776234 2.0842368-5.6643967 0-2.3211804-.6865586-4.1930347-2.0596756-5.6152742-1.373406-1.4222395-3.2042286-2.1333592-5.492757-2.1333592-3.33483662 0-5.99958518 1.3569355-7.99395675 4.0705175h-2.79535649v-20.45054375h20.94090144v3.3348366h-16.91950633v12.45687605c1.9290676-1.8637637 4.39761531-2.7956455 7.40535413-2.7956455 2.1905725 0 4.1112603.4660854 5.7623527 1.3976783z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1322.999783 398.270213)"/><g transform="translate(1374.317793 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m19.2788288 15.0644114c1.6510923.9318818 2.9343442 2.2396948 3.8497555 3.9234391.9154114 1.6837443 1.373117 3.6047212 1.373117 5.7623526 0 2.1579205-.4822669 4.0869881-1.4468007 5.7869139-.9642448 1.7002148-2.2966191 3.032589-3.9968339 3.9971228-1.6999258.9642449-3.6289934 1.4465118-5.7869138 1.4465118-4.21759597 0-7.47065814-1.471073-9.75918651-4.4137968-2.28881733-2.9424349-3.43308151-7.1273789-3.43308151-12.554543 0-3.9234392.53138935-7.2909278 1.5938791-10.10246581 1.06248975-2.81182696 2.59915564-4.95327693 4.60999768-6.42463886 2.01055308-1.47136192 4.42188754-2.20675393 7.23371454-2.20675393 2.0270235 0 3.9968339.37593124 5.909431 1.12779372 1.9125972.75215143 3.5882507 1.81464118 5.0266717 3.1877582l-1.5201954 3.08980225c-1.6346219-1.37340597-3.2039398-2.38677327-4.7079537-3.0406798s-3.0406798-.98100427-4.6099976-.98100427c-3.0077389 0-5.34538973 1.34046504-7.01295251 4.02168407-1.66727383 2.68093003-2.5011997 6.44053143-2.5011997 11.27938193v.735681c.75215144-1.8634747 1.97819006-3.3348366 3.67811586-4.4137969 1.70021477-1.0789602 3.64546385-1.6184403 5.83603635-1.6184403 2.1252684 0 4.0133043.4660854 5.6643966 1.3976783zm-.8090757 15.3993109c1.3731171-1.4222395 2.0596756-3.3102754 2.0596756-5.6643967 0-2.3211804-.6949383-4.1930347-2.0842368-5.6152742-1.3895875-1.4222395-3.195849-2.1333592-5.4190734-2.1333592-2.2888173 0-4.15229196.7192105-5.5910019 2.1579204-1.43842099 1.438421-2.15763148 3.3021846-2.15763148 5.590713 0 2.3211803.71921049 4.2011255 2.15763148 5.6398354 1.43870994 1.438421 3.3186551 2.1579205 5.6398354 2.1579205 2.2232244 0 4.0213952-.7111198 5.3948011-2.1333592z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1384.69083 397.697106)"/><g transform="translate(1436.988825 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01528916-52.05176699v49.51333329h42.47662036v-49.51333329z" fill="#000"/></g><path d="m.04045378.09275475h23.04969942v2.99155735l-16.38002621 31.9264155h-4.31555192l16.28178133-31.5340138h-18.63590262z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1447.938813 398.275017)"/><g transform="translate(1499.78573 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.338655 20.8516142c1.2586906 1.5201954 1.8880359 3.3429273 1.8880359 5.4679068 0 2.9753759-1.1277937 5.3211174-3.3836701 7.0375137-2.2561653 1.7166852-5.2965562 2.5748834-9.1217504 2.5748834-3.82548323 0-6.86587408-.8581982-9.12175046-2.5748834-2.25616535-1.7163963-3.38395906-4.0621378-3.38395906-7.0375137 0-2.1249795.64552681-3.9558022 1.93715836-5.4924681 1.29134258-1.5366659 3.06495207-2.5994446 5.32082845-3.1877582-2.09232751-.6212545-3.69429737-1.6430015-4.80590957-3.065241s-1.66756278-3.0976041-1.66756278-5.02667165c0-1.86347468.49064661-3.49029472 1.47136193-4.87959325.98071531-1.38958749 2.36221204-2.46854771 4.14391229-3.23688066 1.78198919-.76833294 3.81710354-1.15235494 6.10592084-1.15235494 2.2885284 0 4.3236427.384022 6.1056319 1.15235494 1.7817002.76833295 3.1631969 1.84729317 4.1439122 3.23688066.9810043 1.38929853 1.471362 3.01611857 1.471362 4.87959325 0 1.92906755-.5640414 3.60443215-1.692124 5.02667165-1.1277937 1.4222395-2.7052024 2.4439865-4.7325149 3.065241 2.2888173.6212546 4.0624268 1.6918351 5.3211174 3.2123195zm-16.23265883-6.4737613c1.38929853 1.1607346 3.26115293 1.8718543 5.61527423 2.1333592 2.3538323-.2615049 4.2256867-.9726246 5.6152742-2.1333592 1.3892985-1.1604457 2.0842368-2.6725504 2.0842368-4.53631405 0-1.92877864-.6784678-3.44926302-2.0354033-4.56087522-1.3566466-1.1116122-3.2449714-1.66727383-5.6641077-1.66727383-2.4194253 0-4.30775013.55566163-5.66439668 1.66727383-1.35693551 1.1116122-2.03540327 2.63209658-2.03540327 4.56087522 0 1.86376365.69493823 3.37586835 2.08452572 4.53631405zm11.94166813 16.5516658c1.471073-1.1116122 2.206754-2.7300525 2.206754-4.855032 0-1.9290676-.7764237-3.4738243-2.3295601-4.6345589-1.5528474-1.1607347-3.6209026-1.8718544-6.2035878-2.1333592-2.5829741.2615048-4.65102939.9726245-6.20387679 2.1333592-1.55313637 1.1607346-2.32956007 2.7054913-2.32956007 4.6345589 0 2.1249795.73568096 3.7434198 2.20704289 4.855032 1.47107297 1.1116122 3.57987096 1.6675628 6.32639397 1.6675628 2.746234 0 4.855032-.5559506 6.3263939-1.6675628z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1509.579895 397.697106)"/><g transform="translate(1565.056846 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m21.1125411 4.69235002c2.2885283 2.9424349 3.4330815 7.12737888 3.4330815 12.55454298 0 5.9178108-1.1852959 10.5194287-3.5555987 13.8051429-2.3703028 3.2860031-5.6805782 4.9287157-9.9311151 4.9287157-1.99437156 0-3.94771143-.3759313-5.86030856-1.1277937-1.91259713-.7521515-3.60472114-1.8146412-5.07579411-3.1877582l1.56931788-3.0895133c1.66727382 1.405769 3.25306216 2.427516 4.75707607 3.064952 1.50372496.6374361 3.02420934.9564431 4.56087522.9564431 3.0077389 0 5.3372989-1.3404651 6.9883912-4.0213951 1.6510924-2.6812191 2.4766385-6.4408204 2.4766385-11.2796709v-.637725c-.7521514 1.8311116-1.97819 3.2776234-3.6781158 4.3404021-1.7002148 1.0624897-3.6454639 1.5938791-5.8360363 1.5938791-2.1252685 0-4.00521365-.4660854-5.63983549-1.3976783-1.63462184-.9318818-2.90978291-2.2396949-3.82519426-3.9234391-.91541134-1.6837443-1.37311702-3.6047212-1.37311702-5.7623527 0-2.1579204.4822669-4.086988 1.44651175-5.78691381.9645338-1.70021476 2.29690808-3.03258905 3.99712284-3.99712285 1.69992581-.96424484 3.62899341-1.44651174 5.78691388-1.44651174 4.2175959 0 7.4706581 1.47107297 9.7591865 4.41379682zm-3.9234392 12.35834218c1.4387099-1.438421 2.1579204-3.3021847 2.1579204-5.590713 0-2.32118037-.7192105-4.20112552-2.1579204-5.63983546-1.438421-1.43842099-3.3183661-2.15792044-5.6395465-2.15792044-2.22322439 0-4.02168405.71111974-5.39480107 2.13335921-1.37311703 1.42223948-2.05967554 3.31027538-2.05967554 5.66439669 0 2.3211803.68655851 4.1930347 2.05967554 5.6152742 1.37311702 1.4222395 3.1877582 2.1333592 5.44363457 2.1333592 2.2888173 0 4.152292-.7192105 5.590713-2.1579204z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1575.139966 397.697106)"/><g stroke="#000"><path d="m1096.073546 379.827207v8.703347" stroke-width="2.540471"/><path d="m1334.698583 379.827107h-238.625356" stroke-width="2.536666"/><path d="m1157.047962 379.827207v8.703347" stroke-width="2.540471"/><path d="m1214.724654 379.827207v8.703347" stroke-width="2.540471"/><path d="m1273.792589 379.827207v8.703347" stroke-width="2.540471"/><path d="m.25679382.11881745v8.70067791h253.66824618v8.70607874" stroke-width="2.537062" transform="translate(1333.854479 371.007868)"/><path d="m1522.192353 379.827363v8.706079" stroke-width="2.538373"/><path d="m1460.272258 379.827363v8.706079" stroke-width="2.538373"/><path d="m1398.172318 379.827363v8.706079" stroke-width="2.538373"/><path d="m461.035492 332.200017v30.871702" stroke-width="2.538347"/><path d="m555.359389 347.854087v15.218407" stroke-width="2.537588"/><path d="m695.541211 347.854373v14.187222" stroke-width="2.538524"/><path d="m790.885848 362.040642v-30.871702" stroke-width="2.538347"/><path d="m887.942518 362.041595v-14.187222" stroke-width="2.538524"/><path d="m.019213 15.299472.406607-15.172668" stroke-width="2.539569" transform="matrix(-1 0 0 1 367.859321 347.727644)"/></g><g transform="translate(728.528993 23.597628)"><path d="m.027562.06972h33.346975v38.281514h-33.346975z" fill="#00a88a"/><path d="m33.3745364 38.3512337h-33.34697449v-38.28151366h33.34697449zm-30.80847438-35.74309116v33.20466866h28.26976908v-33.20466866z" fill="#000"/></g><g fill="#000" transform="translate(771.880716 31.029736)"><path d="m12.5751769 7.68008917v1.60645421h-12.54602874v-1.60645421zm0 5.15096053v1.6066044h-12.54602874v-1.6066044z"/><path d="m26.1286201 17.4720676c-1.3345049-.7649138-2.3587471-1.8486543-3.0727268-3.2512217-.7141299-1.4025673-1.0711197-3.0473348-1.0711197-4.93430252 0-1.86998963.3569898-3.50634324 1.0711197-4.90876034.7139797-1.40256734 1.7382219-2.48210096 3.0727268-3.23860086 1.3345049-.75649991 2.8942319-1.13467473 4.6793313-1.13467473 1.2239222 0 2.3757252.19126601 3.4552588.57364779 1.0795337.38253202 1.9762152.91380981 2.6901948 1.59383335l-1.0709695 2.39706047c-.8159982-.6630455-1.6277894-1.14338913-2.4352235-1.44088065-.8075843-.29749152-1.6703097-.44623728-2.5883264-.44623728-1.7509931 0-3.1068332.56959109-4.06722 1.70862301-.960537 1.13888168-1.4408806 2.77102834-1.4408806 4.89598924 0 2.14193892.4761367 3.78670642 1.4281095 4.93430252.9519729 1.1474458 2.31202 1.7212439 4.0799911 1.7212439.9180167 0 1.7807421-.1487458 2.5883264-.4462373.8074341-.2974915 1.6192253-.7778352 2.4352235-1.4407304l1.0709695 2.3969102c-.7139796.6800236-1.6106611 1.2113013-2.6901948 1.5938334-1.0795336.382532-2.2313366.573798-3.4552588.573798-1.7850994 0-3.3448264-.382532-4.6793313-1.1475961z"/><path d="m41.938792 17.7781233c-.9944932-.5440489-1.7595572-1.3217338-2.295042-2.333205-.5354847-1.0116214-.8032271-2.1973805-.8032271-3.5574276 0-1.3598968.2677424-2.54565597.8032271-3.55727739.5354848-1.01147117 1.3005488-1.78915607 2.295042-2.33320496.9944931-.54404888 2.1462961-.8159982 3.4552588-.8159982 1.2919846 0 2.4310166.27194932 3.4169455.8159982.9860792.54404889 1.7467861 1.32173379 2.2822708 2.33320496.535635 1.01162142.8033774 2.19738059.8033774 3.55727739 0 1.3600471-.2677424 2.5458062-.8033774 3.5574276-.5354847 1.0114712-1.2961916 1.7891561-2.2822708 2.333205-.9859289.5440489-2.1249609.8159982-3.4169455.8159982-1.3089627 0-2.4607657-.2719493-3.4552588-.8159982zm5.9160245-2.7412792c.5694408-.7055657.8543115-1.7552.8543115-3.1493534 0-1.3768749-.2890776-2.42665936-.8670826-3.14920316s-1.3940032-1.08374057-2.4479946-1.08374057c-1.0709695 0-1.8955318.36119677-2.4735368 1.08374057s-.8670826 1.77232826-.8670826 3.14920316c0 1.3941534.2848706 2.4437877.8543115 3.1493534.5695911.7055658 1.3897962 1.0581984 2.4607657 1.0581984 1.0880978 0 1.9167168-.3526326 2.4863079-1.0581984z"/><path d="m66.6356966 10.4850736v7.9050108h-3.1875165v-7.7520581c0-1.0200353-.1954729-1.7637641-.5864189-2.23118638-.3910962-.46757253-.9946433-.7013588-1.8106415-.7013588-.968951 0-1.7509931.31026262-2.3459761.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2038868-3.64652485h2.9834793l.2295793 2.116547c.4418801-.78204211 1.0412203-1.38543905 1.7977202-1.81049133s1.6108115-.63750329 2.5627843-.63750329c3.0769338 0 4.6154758 1.76797107 4.6154758 5.30406345z"/><path d="m74.0818492 7.90951823v5.76307187c0 1.5129998.7054155 2.2694997 2.1163968 2.2694997.3910962 0 .8161484-.0680625 1.2751568-.2040371v2.5246212c-.5610269.2038869-1.2410505.3059054-2.0400706.3059054-1.4620657 0-2.5841195-.407924-3.3660114-1.2239222-.7820421-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.4735368v-2.39706046h2.4735368v-3.13643206l3.1875164-1.07111972v4.20755178h3.4169456v2.39706046z"/><path d="m90.9629905 12.11707h-8.8741119c.0680624 1.3770252.4122812 2.3927033 1.0328064 3.0473349.6205252.6544813 1.542749.981722 2.7666711.981722 1.4111315 0 2.7200942-.4590084 3.9270384-1.3770251l.9180167 2.1930233c-.6119611.4929645-1.364254.8882676-2.2567286 1.1857591-.8924745.2974915-1.7977202.4462373-2.715737.4462373-2.1081331 0-3.7655214-.594983-4.9726158-1.7849491-1.2069441-1.1901163-1.8104913-2.8221128-1.8104913-4.8961395 0-1.3089627.2635354-2.47353681.790456-3.49357213.5270708-1.01988507 1.2665927-1.81469827 2.2185655-2.38413911.9519729-.56959109 2.0315065-.85431151 3.2386009-.85431151 1.7679711 0 3.1661812.57379804 4.1947807 1.72124387 1.0284492 1.14759607 1.5427489 2.72430113 1.5427489 4.73026538zm-7.7392869-3.88872499c-.535635.50137838-.8798538 1.22812913-1.0328065 2.18025229h5.9925009c-.1020185-.96910121-.3951528-1.70005891-.8797034-2.1930234-.4845506-.49311473-1.151803-.73952185-2.0017574-.73952185-.8501045 0-1.5427489.25076432-2.0782336.75229296z"/><path d="m105.651108 10.4850736v7.9050108h-3.187516v-7.7520581c0-1.0200353-.195473-1.7637641-.586569-2.23118638-.390946-.46757253-.994493-.7013588-1.810491-.7013588-.9689514 0-1.7509935.31026262-2.3459765.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2040371-3.64652485h2.9836296l.2294291 2.116547c.4420303-.78204211 1.0412203-1.38543905 1.7977202-1.81049133.7566501-.42505228 1.6108118-.63750329 2.5627838-.63750329 3.077084 0 4.615626 1.76797107 4.615626 5.30406345z"/><path d="m113.097111 7.90951823v5.76307187c0 1.5129998.705566 2.2694997 2.116547 2.2694997.391096 0 .815998-.0680625 1.275006-.2040371v2.5246212c-.561026.2038869-1.24105.3059054-2.03992.3059054-1.462066 0-2.584119-.407924-3.366162-1.2239222-.781891-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.473536v-2.39706046h2.473536v-3.13643206l3.187517-1.07111972v4.20755178h3.417096v2.39706046z"/><path d="m125.923803.23393651h7.879619c1.95488 0 3.476444.47177949 4.564542 1.41533845 1.087947.94340871 1.631996 2.2311864 1.631996 3.86318281s-.548256 2.9241313-1.644767 3.87610416c-1.096512.95197287-2.613869 1.42795927-4.551771 1.42795927h-4.590084v7.5735632h-3.289535zm7.497087 8.03257155c1.139032 0 2.001758-.23378627 2.588176-.70120855.58657-.46757253.879854-1.14323888.879854-2.02729954 0-.90103871-.289078-1.5852692-.867083-2.05269149-.578004-.46757253-1.444937-.70135879-2.600947-.70135879h-4.207552v5.48255837z"/><path d="m154.509583 5.51245777v12.87762663h-3.136582v-2.0654626c-.390946.7139797-.951973 1.2707996-1.683081 1.6703097-.730958.3995101-1.563934.59919-2.498929.59919-1.122054 0-2.116547-.2719493-2.983479-.8159982-.867083-.5440489-1.538542-1.3175268-2.014528-2.3205841-.476137-1.002907-.71413-2.1674811-.71413-3.4934219 0-1.326091.24235-2.50328596.72675-3.53188543.484551-1.02844922 1.160368-1.82746937 2.0273-2.39691021.867083-.56959109 1.853012-.85431151 2.958087-.85431151.934995 0 1.767971.19967991 2.498929.59918999.731108.39951008 1.292135.95633006 1.683081 1.67030971v-1.93805208zm-4.003514 9.48607303c.578005-.7309577.866932-1.7594069.866932-3.0854979 0-1.3600471-.288927-2.40547436-.866932-3.13643206-.578005-.73110795-1.402568-1.09651167-2.473537-1.09651167-1.053992 0-1.874347.37817482-2.460766 1.13467473-.586569.7564999-.879854 1.8062844-.879854 3.1493534 0 1.3259408.293285 2.3459761.879854 3.0599557.586419.7139797 1.415188 1.0709695 2.486158 1.0709695 1.053991 0 1.87014-.3654037 2.448145-1.0965117z"/><path d="m170.421623 5.51245777v12.46970263c0 2.0059643-.552462 3.5275283-1.657388 4.5645416-1.105076 1.0370134-2.728658 1.5555201-4.870597 1.5555201-1.988987 0-3.73998-.4164881-5.25313-1.2496147l.510093-2.4224524c1.563934.8159982 3.119454 1.2239222 4.66656 1.2239222 2.295042 0 3.442488-1.1388817 3.442488-3.4169455v-2.5500132c-.390946.6970016-.960537 1.2622355-1.708473 1.6957017-.748086.4336164-1.589626.6502744-2.524621.6502744-1.121904 0-2.120754-.2677424-2.99625-.8032271-.875497-.5354848-1.55552-1.2919847-2.039921-2.2694997-.48455-.9775151-.72675-2.095362-.72675-3.3532403 0-1.2580286.2422-2.37587548.72675-3.35339054.484401-.97751507 1.164424-1.73401497 2.039921-2.26949971.875496-.53548473 1.874346-.8032271 2.99625-.8032271.952123 0 1.797871.19967991 2.537392.59918999.739522.39951008 1.304756.95633006 1.695702 1.67030971v-1.93805208zm-4.06722 8.97613053c.603548-.6970016.905246-1.6575386.905246-2.8814608 0-1.2240724-.297491-2.18460946-.892474-2.88161106s-1.42811-1.04542727-2.499079-1.04542727c-1.053992 0-1.882761.34842567-2.486308 1.04542727-.603397.6970016-.905246 1.65753866-.905246 2.88161106 0 1.2239222.301849 2.1844592.905246 2.8814608.603547.6970016 1.432316 1.0455775 2.486308 1.0455775 1.053991 0 1.88276-.3485759 2.486307-1.0455775z"/><path d="m185.135284 12.11707h-8.874112c.068062 1.3770252.412281 2.3927033 1.032806 3.0473349.620525.6544813 1.542749.981722 2.766821.981722 1.410982 0 2.719944-.4590084 3.927039-1.3770251l.918016 2.1930233c-.612111.4929645-1.364254.8882676-2.256878 1.1857591-.892475.2974915-1.797721.4462373-2.715737.4462373-2.107983 0-3.765522-.594983-4.972466-1.7849491-1.207094-1.1901163-1.810491-2.8221128-1.810491-4.8961395 0-1.3089627.263385-2.47353681.790456-3.49357213.52692-1.01988507 1.266442-1.81469827 2.218565-2.38413911.951973-.56959109 2.031507-.85431151 3.238451-.85431151 1.767971 0 3.166331.57379804 4.194781 1.72124387 1.028599 1.14759607 1.542749 2.72430113 1.542749 4.73026538zm-7.739287-3.88872499c-.535485.50137838-.879704 1.22812913-1.032807 2.18025229h5.992651c-.102018-.96910121-.395303-1.70005891-.879853-2.1930234-.484401-.49311473-1.151653-.73952185-2.001758-.73952185-.849954 0-1.542749.25076432-2.078233.75229296z"/></g><path d="m367.838539 347.854154h94.040308" stroke="#000" stroke-width="2.538462"/><path d="m461.878846 347.854154h93.484616" stroke="#000" stroke-width="2.538462"/><path d="m.33230769 1.70030769 96.35538461-1.24846154 96.0461537 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(695.209615 346.153846)"/><path d="m.05446154.45184615h95.96584616l96.7416923 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(36.132692 346.153846)"/></g></svg>
\ No newline at end of file
index a4df238005e4f20495c45f8d5adf8af7df1a6d5a..3acc287aeea6757a00ec36394a9f500db8d3bb72 100644 (file)
@@ -1,20 +1,7 @@
 ---
 title: Developer tools
-
 description: Third-party tools to help you create and manage sites.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: developer-tools-in-this-section
-    parent: developer-tools
-    weight: 10
 weight: 10
 ---
-
-One of Hugo's greatest strengths is its passionate---and always evolving---developer community. With the exception of the `highlight` shortcode mentioned in [Syntax Highlighting][syntax], the tools and other projects featured in this section are offerings from both commercial services and open-source projects, many of which are developed by Hugo developers just like you.
-
-[See the popularity of Hugo compared with other static site generators.][staticgen]
-
-[staticgen]: https://staticgen.com
-[syntax]: /content-management/syntax-highlighting/
index b2e2cc47b133cf7a18f53d01b50a5d2176ef6261..c375fcba802af45fcf2c2c7463d1871d824c828d 100644 (file)
@@ -1,15 +1,9 @@
 ---
 title: Editor plugins
-linkTitle: Editor plugins
 description: The Hugo community uses a wide range of tools and has developed plugins for some of the most popular text editors to help automate parts of your workflow.
-categories: [developer tools]
-keywords: [editor,plugin]
-menu:
-  docs:
-    parent: developer-tools
-    weight: 20
-weight: 20
-toc: true
+categories: []
+keywords: []
+weight: 10
 ---
 
 ## Visual Studio Code
index 217f96e2cb306f11aa18d2e091d0a5bc05e3b1db..0c52a4687ec69f2e9e7b43e0bcc7c6860bd0ae44 100644 (file)
@@ -2,14 +2,9 @@
 title: Front-end interfaces
 linkTitle: Front-ends
 description: Do you prefer a graphical user interface over a text editor? Give these front-ends a try.
-categories: [developer tools]
-keywords: [frontend, gui]
-menu:
-  docs:
-    parent: developer-tools
-    weight: 30
-weight: 30
-toc: true
+categories: []
+keywords: []
+weight: 20
 aliases: [/tools/frontends/]
 ---
 
index 0fc78153f674a669128b2e0e494725625c9d26d9..103e28b9ef69f3da9380027dc1345d0439208660 100644 (file)
@@ -2,14 +2,9 @@
 title: Migrate to Hugo
 linkTitle: Migrations
 description: A list of community-developed tools for migrating from your existing static site generator or content management system to Hugo.
-categories: [developer tools]
-keywords: [migrations,jekyll,wordpress,drupal,ghost,contentful]
-menu:
-  docs:
-    parent: developer-tools
-    weight: 50
-weight: 50
-toc: true
+categories: []
+keywords: []
+weight: 40
 aliases: [/developer-tools/migrations/, /developer-tools/migrated/]
 ---
 
@@ -49,7 +44,7 @@ Alternatively, you can use the [Jekyll import command](/commands/hugo_import_jek
 : A small utility written in Java that exports the entire WordPress site from the database and resource (e.g., images) files stored locally or remotely. Therefore, migration from the backup files is possible. Supports merging multiple WordPress sites into a single Hugo site.
 
 [wp2hugo](https://github.com/ashishb/wp2hugo)
-: A Go-based CLI tool to migrate WordPress website to Hugo while preserving original URLs, GUIDs (for feeds), image URLs, code highlights, table of contents, YouTube embeds, Google Maps embeds, and original WordPress navigation categories. 
+: A Go-based CLI tool to migrate WordPress website to Hugo while preserving original URLs, GUIDs (for feeds), image URLs, code highlights, table of contents, YouTube embeds, Google Maps embeds, and original WordPress navigation categories.
 
 ## Medium
 
@@ -68,7 +63,7 @@ Alternatively, you can use the [Jekyll import command](/commands/hugo_import_jek
 : Export all your Tumblr content to Hugo Markdown files with preserved original formatting.
 
 [Tumblr to Hugo](https://github.com/jipiboily/tumblr-to-hugo)
-: A migration tool that converts each of your Tumblr posts to a content file with a proper title and path. It also generates a  CSV file to help you set up URL redirects.
+: A migration tool that converts each of your Tumblr posts to a content file with a proper title and path. It also generates a CSV file to help you set up URL redirects.
 
 ## Drupal
 
index 8edfc42589caacb9beea50995b639c7bc7bd679e..489d78506cf0c79c8d8bf40788435e89cecf46a9 100644 (file)
@@ -2,13 +2,9 @@
 title: Other community projects
 linkTitle: Other projects
 description: Some interesting projects developed by the Hugo community that don't quite fit into our other developer tool categories.
-categories: [developer tools]
-keywords: [frontend,gui]
-menu:
-  docs:
-    parent: developer-tools
-    weight: 60
-weight: 60
+categories: []
+keywords: []
+weight: 50
 ---
 
 And for all the other community projects around Hugo:
index 152774304ffaf0654c51b4c28397157169dd7050..2c392c75a922653076b2bff3407908fc50b6abdf 100644 (file)
@@ -2,14 +2,9 @@
 title: Search tools
 linkTitle: Search
 description: See some of the open-source and commercial search options for your newly created Hugo website.
-categories: [developer tools]
-keywords: [search]
-menu:
-  docs:
-    parent: developer-tools
-    weight: 40
-weight: 40
-toc: true
+categories: []
+keywords: []
+weight: 30
 ---
 
 A static website with a dynamic search function? Yes, Hugo provides an alternative to embeddable scripts from Google or other search engines for static websites. Hugo allows you to provide your visitors with a custom search function by indexing your content files directly.
@@ -48,8 +43,8 @@ A static website with a dynamic search function? Yes, Hugo provides an alternati
 
 ## Commercial
 
-[Algolia](https://www.algolia.com/)
-: Algolia's Search API makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search.
+[Algolia DocSearch](https://docsearch.algolia.com/)
+: Algolia DocSearch is free for public technical documentation sites and easy to set up. For other use cases, [Algolia's Search API](https://www.algolia.com) makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search.
 
 [Bonsai](https://www.bonsai.io)
 : Bonsai is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://bonsai.io/docs/hugo).
index a113fa9cf9507e92abb7b4dd0043673b543a17df..fd51b4fc825b1b4061f629d4208dd3808a0ad037 100644 (file)
@@ -1,16 +1,8 @@
 ---
 title: Troubleshooting
-
 description: Use these techniques when troubleshooting your site.
 categories: []
 keywords: []
-menu:
-  docs:
-    identifier: troubleshooting-in-this-section
-    parent: troubleshooting
-    weight: 10
 weight: 10
 aliases: [/templates/template-debugging/]
 ---
-
-Use these techniques when troubleshooting your site.
index e0de0d5df01f64a3653bb8659866f9772f2117b6..2efad55e36c4c15ee24d446d459885592f863204 100644 (file)
@@ -2,20 +2,15 @@
 title: Site audit
 linkTitle: Audit
 description: Run this audit before deploying your production site.
-categories: [troubleshooting]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 20
-weight: 20
 ---
 
 There are several conditions that can produce errors in your published site which are not detected during the build. Run this audit before your final build.
 
-{{< code copy=true >}}
+```text {copy=true}
 HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true hugo && grep -inorE "<\!-- raw HTML omitted -->|ZgotmplZ|\[i18n\]|\(<nil>\)|(&lt;nil&gt;)|hahahugo" public/
-{{< /code >}}
+```
 
 _Tested with GNU Bash 5.1 and GNU grep 3.7._
 
index 5dd9f3fa6ef787c8f32350316eed1d0fe7867ce2..f2e5259a65a8fd742bf5b8d736bd69727cfbf282 100644 (file)
@@ -1,13 +1,8 @@
 ---
 title: Deprecation
 description: The Hugo project follows a formal and consistent process to deprecate functions, methods, and configuration settings.
-categories: [troubleshooting]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 50
-weight: 50
 ---
 
 When a project _deprecates_ something, they are telling its users:
index 2edb309be69c038191a757297c1b90df1ad4c4e9..6992af5d32bb708dfed08334994c307f6b8d3292 100644 (file)
 title: Frequently asked questions
 linkTitle: FAQs
 description: These questions are frequently asked by new users.
-categories: [troubleshooting]
-keywords: [faq]
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 70
-weight: 70
+categories: []
+keywords: []
 ---
 
-Hugos [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
+Hugo's [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
 
 These are just a few of the questions most frequently asked by new users.
 
-###### An error message indicates that a feature is not available. Why? {#feature-not-available}
+An error message indicates that a feature is not available. Why?
+: <!-- do not remove preceding space -->
+  {{% include "/_common/installation/01-editions.md" %}}
 
-{{% include "installation/_common/01-editions.md" %}}
+  When you attempt to use a feature that is not available in the edition that you installed, Hugo throws this error:
 
-When you attempt to use a feature that is not available in the edition that you installed, Hugo throws this error:
+  ```go-html-template
+  this feature is not available in this edition of Hugo
+  ```
 
-```go-html-template
-this feature is not available in this edition of Hugo
-```
+  To resolve, install a different edition based on the feature table above. See the [installation] section for details.
 
-To resolve, install a different edition based on the feature table above. See the [installation] section for details.
-
-###### Why do I see "Page Not Found" when visiting the home page?
-
-In the `content/_index.md` file:
+Why do I see "Page Not Found" when visiting the home page?
+: In the `content/_index.md` file:
 
   - Is `draft` set to `true`?
   - Is the `date` in the future?
   - Is the `publishDate` in the future?
   - Is the `expiryDate` in the past?
 
-If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
-
-###### Why is a given page not published?
-
-In the `content/section/page.md` file, or in the `content/section/page/index.md` file:
-
-- Is `draft` set to `true`?
-- Is the `date` in the future?
-- Is the `publishDate` in the future?
-- Is the `expiryDate` in the past?
-
-If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
-
-###### Why can't I see any of a page's descendants?
+  If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
 
-You may have an&nbsp;`index.md`&nbsp;file instead of an&nbsp;`_index.md`&nbsp;file. See&nbsp;[details](/content-management/page-bundles/).
+Why is a given page not published?
+: In the `content/section/page.md` file, or in the `content/section/page/index.md` file:
 
-###### What is the difference between an&nbsp;`index.md`&nbsp;file and an&nbsp;`_index.md`&nbsp;file?
-
-A directory with an `index.md file` is a [leaf bundle](g). A directory with an&nbsp;`_index.md`&nbsp;file is a [branch bundle](g). See&nbsp;[details](/content-management/page-bundles/).
-
-###### Why is my partial template not rendered as expected?
-
-You may have neglected to pass the required [context](g) when calling the partial. For example:
-
-```go-html-template
-{{/* incorrect */}}
-{{ partial "_internal/pagination.html" }}
+  - Is `draft` set to `true`?
+  - Is the `date` in the future?
+  - Is the `publishDate` in the future?
+  - Is the `expiryDate` in the past?
 
-{{/* correct */}}
-{{ partial "_internal/pagination.html" . }}
-```
+  If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
 
-###### In a template, what's the difference between `:=` and `=` when assigning values to variables?
+Why can't I see any of a page's descendants?
+: You may have an&nbsp;`index.md`&nbsp;file instead of an&nbsp;`_index.md`&nbsp;file. See&nbsp;[details](/content-management/page-bundles/).
 
-Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. See&nbsp;[details](https://pkg.go.dev/text/template#hdr-Variables).
+What is the difference between an&nbsp;`index.md`&nbsp;file and an&nbsp;`_index.md`&nbsp;file?
+: A directory with an `index.md file` is a [leaf bundle](g). A directory with an&nbsp;`_index.md`&nbsp;file is a [branch bundle](g). See&nbsp;[details](/content-management/page-bundles/).
 
-###### When I paginate a list page, why is the page collection not filtered as specified?
+Why is my partial template not rendered as expected?
+: You may have neglected to pass the required [context](g) when calling the partial. For example:
 
-You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See&nbsp;[details](/templates/pagination/).
+  ```go-html-template
+  {{/* incorrect */}}
+  {{ partial "_internal/pagination.html" }}
 
-###### Why are there two ways to call a shortcode?
+  {{/* correct */}}
+  {{ partial "_internal/pagination.html" . }}
+  ```
 
-Use the `{{%/* shortcode */%}}` notation if the shortcode template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the\
-`{{</* shortcode */>}}` notation. See&nbsp;[details](/content-management/shortcodes/).
+In a template, what's the difference between `:=` and `=` when assigning values to variables?
+: Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. See&nbsp;[details](https://pkg.go.dev/text/template#hdr-Variables).
 
-###### Can I use environment variables to control configuration?
+When I paginate a list page, why is the page collection not filtered as specified?
+: You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See&nbsp;[details](/templates/pagination/).
 
-Yes. See&nbsp;[details](/getting-started/configuration/#configure-with-environment-variables).
+Why are there two ways to call a shortcode?
+: Use the `{{%/* shortcode */%}}` notation if the shortcode template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the\
+`{{</* shortcode */>}}` notation. See&nbsp;[details](/content-management/shortcodes/#notation).
 
-###### Why am I seeing inconsistent output from one build to the next?
+Can I use environment variables to control configuration?
+: Yes. See&nbsp;[details](/configuration/introduction/#environment-variables).
 
-The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the `--printPathWarnings` command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems.
+Why am I seeing inconsistent output from one build to the next?
+: The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the `--printPathWarnings` command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems.
 
-###### Why isn't Hugo's development server detecting file changes?
+Why isn't Hugo's development server detecting file changes?
+: In its default configuration, Hugo's file watcher may not be able detect file changes when:
 
-In its default configuration, Hugo's file watcher may not be able detect file changes when:
+  - Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition
+  - Running Hugo locally with project files on a removable drive
+  - Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols
 
-- Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition
-- Running Hugo locally with project files on a removable drive
-- Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols
+  In these cases, instead of monitoring native file system events, use the `--poll` command line flag. For example, to poll the project files every 700 milliseconds, use `--poll 700ms`.
 
-In these cases, instead of monitoring native file system events, use the `--poll` command line flag. For example, to poll the project files every 700 milliseconds, use `--poll 700ms`.
+Why is my page Scratch or Store missing a value?
+: The [`Scratch`] and [`Store`] methods on a `Page` object allow you to create a [scratch pad](g) on the given page to store and manipulate data. Values are often set within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are not determinate until Hugo renders the page content.
 
-###### Why is my page Scratch or Store missing a value?
+  If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable:
 
-The [`Scratch`] and [`Store`] methods on a `Page` object allow you to create a [scratch pad](g) on the given page to store and manipulate data. Values are often set within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are not determinate until Hugo renders the page content.
+  ```go-html-template
+  {{ $noop := .Content }}
+  {{ .Store.Get "mykey" }}
+  ```
 
-If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop](g) variable:
+  You can trigger content rendering with other methods as well. See next FAQ.
 
-```go-html-template
-{{ $noop := .Content }}
-{{ .Store.Get "mykey" }}
-```
+Which page methods trigger content rendering?
+: The following methods on a `Page` object trigger content rendering: `Content`, `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount`.
 
-You can trigger content rendering with other methods as well. See next FAQ.
+> [!note]
+> For other questions please visit the [forum]. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
 
+[`Paginate`]: /methods/page/paginate/
+[`Paginator`]: /methods/page/paginator/
 [`Scratch`]: /methods/page/scratch
 [`Store`]: /methods/page/store
-
-###### Which page methods trigger content rendering?
-
-The following methods on a `Page` object trigger content rendering: `Content`, `ContentWithoutSummary`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount`.
-
-{{% note %}}
-For other questions please visit the [forum]. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
-
 [forum]: https://discourse.gohugo.io
-[requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
-{{% /note %}}
-
-[`Paginate`]: /methods/page/paginate/
-[`Paginator`]: /methods/page/paginator/
 [forum]: https://discourse.gohugo.io
 [installation]: /installation/
 [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
+[requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
index e9fc8ed0f12a184ddba8dc6a5bbb2c79edfae3cd..dc662243a37a7e6ca8689d9147bb03183de484a9 100644 (file)
@@ -2,13 +2,8 @@
 title: Data inspection
 linkTitle: Inspection
 description: Use template functions to inspect values and data structures.
-categories: [troubleshooting]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 40
-weight: 40
 ---
 
 Use the [`debug.Dump`] function to inspect a data structure:
index fc6838069e971bee79b1eea3c14a489a4333d7b4..0cd25d1aec362dfda433c5cd55688fdb4d4e3f20 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Logging
 description: Enable logging to inspect events while building your site.
-categories: [troubleshooting]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 30
-weight: 30
-toc: true
 ---
 
 ## Command line
@@ -20,40 +14,39 @@ Hugo has four logging levels:
 error
 : Display error messages only.
 
-```sh
-hugo --logLevel error
-```
+  ```sh
+  hugo --logLevel error
+  ```
 
 warn
 : Display warning and error messages.
 
-```sh
-hugo --logLevel warn
-```
+  ```sh
+  hugo --logLevel warn
+  ```
 
 info
 : Display information, warning, and error messages.
 
-```sh
-hugo --logLevel info
-```
+  ```sh
+  hugo --logLevel info
+  ```
 
 debug
 : Display debug, information, warning, and error messages.
 
-```sh
-hugo --logLevel debug
-```
+  ```sh
+  hugo --logLevel debug
+  ```
 
-{{% note %}}
-If you do not specify a logging level with the `--logLevel` flag, warnings and errors are always displayed.
-{{% /note %}}
+> [!note]
+> If you do not specify a logging level with the `--logLevel` flag, warnings and errors are always displayed.
 
 ## Template functions
 
 You can also use template functions to print warnings or errors to the console. These functions are typically used to report data validation errors, missing files, etc.
 
-{{< list-pages-in-section path=/functions/fmt filter=functions_fmt_logging filterType=include >}}
+{{% list-pages-in-section path=/functions/fmt filter=functions_fmt_logging filterType=include %}}
 
 ## LiveReload
 
index 2cf64477a38c7b72e28eefa4efc4b93b83bd9d78..e366eba819d11c246d5dda031318069740203b87 100644 (file)
@@ -1,14 +1,8 @@
 ---
 title: Performance
 description: Tools and suggestions for evaluating and improving performance.
-categories: [troubleshooting]
+categories: []
 keywords: []
-menu:
-  docs:
-    parent: troubleshooting
-    weight: 60
-weight: 60
-toc: true
 aliases: [/troubleshooting/build-performance/]
 ---
 
@@ -24,9 +18,8 @@ For example, with Microsoft Defender Antivirus:
 
 Then type `hugo.exe` add press the **Add** button.
 
-{{% note %}}
-Virus scanning exclusions are common, but use caution when changing these settings. See the [Microsoft Defender Antivirus documentation](https://support.microsoft.com/en-us/topic/how-to-add-a-file-type-or-process-exclusion-to-windows-security-e524cbc2-3975-63c2-f9d1-7c2eb5331e53) for details.
-{{% /note %}}
+> [!note]
+> Virus scanning exclusions are common, but use caution when changing these settings. See the [Microsoft Defender Antivirus documentation] for details.
 
 Other virus scanners have similar exclusion mechanisms. See their respective documentation.
 
@@ -92,21 +85,20 @@ total count
 template
 : The path to the template, relative to the `layouts` directory.
 
-[`partial`]: /functions/partials/include/
-[`partialCached`]: /functions/partials/includecached/
-
-{{% note %}}
-Hugo builds pages in parallel where multiple pages are generated simultaneously. Because of this parallelism, the sum of "cumulative duration" values is usually greater than the actual time it takes to build a site.
-{{% /note %}}
+> [!note]
+> Hugo builds pages in parallel where multiple pages are generated simultaneously. Because of this parallelism, the sum of "cumulative duration" values is usually greater than the actual time it takes to build a site.
 
 ## Caching
 
 Some partial templates such as sidebars or menus are executed many times during a site build. Depending on the content within the partial template and the desired output, the template may benefit from caching to reduce the number of executions. The [`partialCached`] template function provides caching capabilities for partial templates.
 
-{{% note %}}
-Note that you can create cached variants of each partial by passing additional arguments to `partialCached` beyond the initial context. See the `partialCached` documentation for more details.
-{{% /note %}}
+> [!note]
+> Note that you can create cached variants of each partial by passing additional arguments to `partialCached` beyond the initial context. See the `partialCached` documentation for more details.
 
 ## Timers
 
 Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottlenecks in templates. See&nbsp;[details](/functions/debug/timer/).
+
+[`partial`]: /functions/partials/include/
+[`partialCached`]: /functions/partials/includecached/
+[Microsoft Defender Antivirus documentation]: https://support.microsoft.com/en-us/topic/how-to-add-a-file-type-or-process-exclusion-to-windows-security-e524cbc2-3975-63c2-f9d1-7c2eb5331e53
index dc61df0e86173022c7d190bee50e19519405b30a..0db4c7fe9abaca2a787959940b666987b5b063ec 100644 (file)
@@ -958,6 +958,73 @@ chroma:
   - Aliases:
     - zig
     Name: Zig
+  styles:
+  - abap
+  - algol
+  - algol_nu
+  - arduino
+  - autumn
+  - average
+  - base16-snazzy
+  - borland
+  - bw
+  - catppuccin-frappe
+  - catppuccin-latte
+  - catppuccin-macchiato
+  - catppuccin-mocha
+  - colorful
+  - doom-one
+  - doom-one2
+  - dracula
+  - emacs
+  - evergarden
+  - friendly
+  - fruity
+  - github
+  - github-dark
+  - gruvbox
+  - gruvbox-light
+  - hr_high_contrast
+  - hrdark
+  - igor
+  - lovelace
+  - manni
+  - modus-operandi
+  - modus-vivendi
+  - monokai
+  - monokailight
+  - murphy
+  - native
+  - nord
+  - nordic
+  - onedark
+  - onesenterprise
+  - paraiso-dark
+  - paraiso-light
+  - pastie
+  - perldoc
+  - pygments
+  - rainbow_dash
+  - rose-pine
+  - rose-pine-dawn
+  - rose-pine-moon
+  - rrt
+  - solarized-dark
+  - solarized-dark256
+  - solarized-light
+  - swapoff
+  - tango
+  - tokyonight-day
+  - tokyonight-moon
+  - tokyonight-night
+  - tokyonight-storm
+  - trac
+  - vim
+  - vs
+  - vulcan
+  - witchhazel
+  - xcode
+  - xcode-dark
 config:
   HTTPCache:
     cache:
@@ -1019,6 +1086,13 @@ config:
   cascade: []
   cleanDestinationDir: false
   contentDir: content
+  contentTypes:
+    text/asciidoc: {}
+    text/html: {}
+    text/markdown: {}
+    text/org: {}
+    text/pandoc: {}
+    text/rst: {}
   copyright: ""
   dataDir: data
   defaultContentLanguage: en
@@ -1154,8 +1228,9 @@ config:
         attribute:
           block: false
           title: true
+        autoDefinitionTermID: false
         autoHeadingID: true
-        autoHeadingIDType: github
+        autoIDType: github
         wrapStandAloneImageWithinParagraph: true
       renderHooks:
         image:
@@ -1400,6 +1475,7 @@ config:
       xml:
         keepWhitespace: false
   module:
+    auth: ""
     hugoVersion:
       extended: false
       max: ""
@@ -1737,7 +1813,9 @@ config:
     headers: null
     redirects:
     - force: false
-      from: '**'
+      from: /**
+      fromHeaders: null
+      fromRe: ""
       status: 404
       to: /404.html
   services:
@@ -1795,6 +1873,8 @@ config_helpers:
       _merge: none
     cascade:
       _merge: none
+    contenttypes:
+      _merge: none
     deployment:
       _merge: none
     frontmatter:
diff --git a/data/keywords.yaml b/data/keywords.yaml
new file mode 100644 (file)
index 0000000..1069298
--- /dev/null
@@ -0,0 +1,12 @@
+# We use the front matter keywords field to determine related content. To
+# ensure consistency, during site build we validate each keyword against the
+# entries in data/keywords.yaml.
+
+# As of March 5, 2025, this feature is experimental, pending usability
+# assessment. We anticipate that the number of additions to data/keywords.yaml
+# will decrease over time, though the initial implementation will require some
+# effort.
+
+- menu
+- resource
+- highlight
index a4969e9b730bcb288e1e4c92fbdb32e93ec4c36a..82de6168e15aa2c2da37fcf2e3c24710b4167232 100644 (file)
@@ -6,7 +6,7 @@
 #
 # For example:
 #
-# {{< list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude >}}
+# {{% list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude %}}
 
 functions_fmt_logging:
   - /functions/fmt/errorf
index c0094725f4665605888a4ce5698dfb91b83efadc..e8373a87c47825062a06705316c88337ce6400c8 100644 (file)
--- a/hugo.toml
+++ b/hugo.toml
@@ -1,8 +1,6 @@
 baseURL                = "https://gohugo.io/"
 defaultContentLanguage = "en"
 enableEmoji            = true
-ignoreLogs             = ["error-missing-instagram-accesstoken"]
-languageCode           = "en-us"
 pluralizeListTitles    = false
 timeZone               = "Europe/Oslo"
 title                  = "Hugo"
@@ -10,93 +8,72 @@ title                  = "Hugo"
 # We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
 disableAliases = true
 
-[pagination]
-    pagerSize = 100
-
-[services.googleAnalytics]
-    ID = 'G-MBZGKNMDWC'
-
-[outputs]
-    home     = ["html", "rss", "redir", "headers"]
-    section  = ["html"]
-    page     = ["html"]
-    taxonomy = ["html"]
-    term     = ["html"]
-
-[params]
-    description = "The world’s fastest framework for building websites"
-    ghrepo      = "https://github.com/gohugoio/hugoDocs/"
+[build]
+    [build.buildStats]
+        disableIDs = true
+        enable     = true
+    [[build.cachebusters]]
+        source = "assets/notwatching/hugo_stats\\.json"
+        target = "css"
+    [[build.cachebusters]]
+        source = "(postcss|tailwind)\\.config\\.js"
+        target = "css"
 
-    [params.render_hooks.link]
-        errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
+[caches]
+    [caches.images]
+        dir    = ":cacheDir/images"
+        maxAge = "1440h"
+    [caches.getresource]
+        dir    = ':cacheDir/:project'
+        maxAge = "1h"
+
+[cascade]
+    [cascade.params]
+        hide_in_this_section = true
+        show_publish_date    = true
+    [cascade.target]
+        kind = 'page'
+        path = '{/news/**}'
+
+[frontmatter]
+    date        = ['date']                                   # do not add publishdate; it will affect page sorting
+    expiryDate  = ['expirydate']
+    lastmod     = [':git', 'lastmod', 'publishdate', 'date']
+    publishDate = ['publishdate', 'date']
 
 [languages]
     [languages.en]
+        languageCode = "en-US"
         languageName = "English"
         weight       = 1
 
-[security]
-    enableInlineShortcodes = false
-    [security.funcs]
-        getenv = ['^HUGO_', '^REPOSITORY_URL$', '^BRANCH$']
-    [security.http]
-        methods = ['(?i)GET|POST']
-        urls    = ['.*']
-
-[outputFormats]
-    [outputFormats.redir]
-        mediatype   = "text/netlify"
-        baseName    = "_redirects"
-        isPlainText = true
-    [outputFormats.headers]
-        mediatype      = "text/netlify"
-        baseName       = "_headers"
-        isPlainText    = true
-        notAlternative = true
-
 [markup]
+    [markup.goldmark]
+        [markup.goldmark.extensions]
+            [markup.goldmark.extensions.typographer]
+                disable = false
+            [markup.goldmark.extensions.passthrough]
+                enable = true
+                [markup.goldmark.extensions.passthrough.delimiters]
+                    block  = [['\[', '\]'], ['$$', '$$']]
+                    inline = [['\(', '\)']]
+        [markup.goldmark.parser]
+            autoDefinitionTermID = true
+            [markup.goldmark.parser.attribute]
+                block = true
     [markup.highlight]
-        style              = 'solarized-dark'
-        lineNumbersInTable = true
+        lineNumbersInTable = false
         noClasses          = false
+        style              = 'solarized-dark'
         wrapperClass       = 'highlight not-prose'
 
-    [markup.goldmark.renderer]
-        hardWraps = false
-        unsafe    = false
-        xhtml     = false
-
-    [markup.goldmark.extensions]
-        definitionList = true
-        footnote       = true
-        linkify        = true
-        strikethrough  = true
-        table          = true
-        taskList       = true
-        typographer    = true
-
-        [markup.goldmark.extensions.passthrough]
-            enable = true
-
-            [markup.goldmark.extensions.passthrough.delimiters]
-                block  = [['\[', '\]'], ['$$', '$$']]
-                inline = [['\(', '\)']]
-
-    [markup.goldmark.parser]
-        autoHeadingID     = true
-        autoHeadingIDType = "github"
-
-        [markup.goldmark.parser.attribute]
-            block = true
-            title = true
-
 [mediaTypes]
     [mediaTypes."text/netlify"]
         delimiter = ""
 
 [module]
     [module.hugoVersion]
-        min = "0.141.0"
+        min = "0.144.0"
     [[module.mounts]]
         source = "assets"
         target = "assets"
@@ -105,70 +82,90 @@ disableAliases = true
         source = 'content/en'
         target = 'content'
     [[module.mounts]]
+        disableWatch = true
         source       = "hugo_stats.json"
         target       = "assets/notwatching/hugo_stats.json"
-        disableWatch = true
 
-[build]
-    [build.buildStats]
-        disableIDs = true
-        enable     = true
-    [[build.cachebusters]]
-        source = "assets/notwatching/hugo_stats\\.json"
-        target = "css"
-    [[build.cachebusters]]
-        source = "(postcss|tailwind)\\.config\\.js"
-        target = "css"
+[outputFormats]
+    [outputFormats.redir]
+        baseName    = "_redirects"
+        isPlainText = true
+        mediatype   = "text/netlify"
+    [outputFormats.headers]
+        baseName       = "_headers"
+        isPlainText    = true
+        mediatype      = "text/netlify"
+        notAlternative = true
+
+[outputs]
+    home     = ["html", "rss", "redir", "headers"]
+    page     = ["html"]
+    section  = ["html"]
+    taxonomy = ["html"]
+    term     = ["html"]
+
+[params]
+    description = "The world’s fastest framework for building websites"
+    ghrepo      = "https://github.com/gohugoio/hugoDocs/"
+    [params.render_hooks.link]
+        errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
+
+[related]
+    includeNewer = true
+    threshold    = 80
+    toLower      = true
+    [[related.indices]]
+        name = 'keywords'
+        weight = 1
+
+[security]
+    [security.funcs]
+        getenv = ['^HUGO_', '^REPOSITORY_URL$', '^BRANCH$']
 
 [server]
     [[server.headers]]
         for = "/*"
-
         [server.headers.values]
             X-Frame-Options        = "DENY"
             X-XSS-Protection       = "1; mode=block"
             X-Content-Type-Options = "nosniff"
             Referrer-Policy        = "no-referrer"
-
     [[server.headers]]
         for = "/**.{css,js}"
 
-[minify]
-    [minify.tdewolff]
-        [minify.tdewolff.html]
-            keepSpecialComments = true
-            keepWhitespace      = false
+[services]
+    [services.googleAnalytics]
+        ID = 'G-MBZGKNMDWC'
+
+[taxonomies]
+category = 'categories'
 
 ######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES ########
 [menus]
     [[menus.global]]
-        name       = 'News'
-        weight     = 1
         identifier = 'news'
+        name       = 'News'
         pageRef    = '/news/'
-
+        weight     = 1
     [[menus.global]]
-        name       = 'Docs'
-        weight     = 5
         identifier = 'docs'
+        name       = 'Docs'
         url        = '/documentation/'
-
+        weight     = 5
     [[menus.global]]
-        name       = 'Themes'
-        weight     = 10
         identifier = 'themes'
+        name       = 'Themes'
         url        = 'https://themes.gohugo.io/'
-
+        weight     = 10
     [[menus.global]]
-        name       = 'Community'
-        weight     = 150
         identifier = 'community'
+        name       = 'Community'
         post       = 'external'
         url        = 'https://discourse.gohugo.io/'
-
+        weight     = 150
     [[menus.global]]
-        name       = 'GitHub'
-        weight     = 200
         identifier = 'github'
+        name       = 'GitHub'
         post       = 'external'
         url        = 'https://github.com/gohugoio/hugo'
+        weight     = 200
index bb92ea160ccf8b7399998a382356a7fd73251e3c..6d962ffc06eb3aa1023543950fe4425f1474a024 100644 (file)
@@ -7,7 +7,7 @@
         <img
           src="{{ `images/gopher-side_color.svg` | relURL }}"
           alt="gopher"
-          class="w-32 ml-12 float-right" />
+          class="w-32 ml-12 float-right">
       </h1>
 
       <div class="mt-10 flex items-center justify-center gap-x-6">
diff --git a/layouts/_default/_markup/render-blockquote.html b/layouts/_default/_markup/render-blockquote.html
new file mode 100644 (file)
index 0000000..98019e1
--- /dev/null
@@ -0,0 +1,33 @@
+{{- if eq .Type "alert" }}
+  {{- $alerts := dict
+    "caution" (dict "color" "red" "icon" "exclamation-triangle")
+    "important" (dict "color" "blue" "icon" "exclamation-circle")
+    "note" (dict "color" "blue" "icon" "information-circle")
+    "tip" (dict "color" "green" "icon" "light-bulb")
+    "warning" (dict "color" "orange" "icon" "exclamation-triangle")
+  }}
+
+  {{- $alertTypes := slice }}
+  {{- range $k, $_ := $alerts }}
+    {{- $alertTypes = $alertTypes | append $k }}
+  {{- end }}
+  {{- $alertTypes = $alertTypes | sort }}
+
+  {{- $alertType := strings.ToLower .AlertType }}
+  {{- if in $alertTypes $alertType }}
+    {{- partial "layouts/blocks/alert.html" (dict
+      "color" (or ((index $alerts $alertType).color) "blue")
+      "icon" (or ((index $alerts $alertType).icon) "information-circle")
+      "text" .Text
+      "title" .AlertTitle
+      "class" .Attributes.class
+      )
+    }}
+  {{- else }}
+    {{- errorf `Invalid blockquote alert type. Received %s. Expected one of %s (case-insensitive). See %s.` .AlertType (delimit $alertTypes ", " ", or ") .Page.String }}
+  {{- end }}
+{{- else }}
+  <blockquote {{- with .Attributes.class }}class="{{ . }}"{{- end }}>
+    {{ .Text }}
+  </blockquote>
+{{- end }}
diff --git a/layouts/_default/_markup/render-codeblock.html b/layouts/_default/_markup/render-codeblock.html
new file mode 100644 (file)
index 0000000..13725ff
--- /dev/null
@@ -0,0 +1,98 @@
+{{/* prettier-ignore-start */}}
+{{/*
+Renders a highlighted code block using the given options and attributes.
+
+In addition to the options available to the transform.Highlight function, you
+may also specify the following parameters:
+
+@param {bool} [copy=false] Whether to display a copy-to-clipboard button.
+@param {string} [file] The file name to display above the rendered code.
+@param {bool} [details=false] Whether to wrap the highlighted code block within a details element.
+@param {bool} [open=false] Whether to initially display the content of the details element.
+@param {string} [summary=Details] The content of the details summary element rendered from Markdown to HTML.
+
+@returns {template.HTML}
+
+@examples
+
+    ```go
+    fmt.Println("Hello world!")
+    ```
+
+    ```go {linenos=true file="layouts/index.html" copy=true}
+    fmt.Println("Hello world!")
+    ```
+*/}}
+{{/* prettier-ignore-end */}}
+
+{{- $copy := false }}
+{{- $file := or .Attributes.file "" }}
+{{- $details := false }}
+{{- $open := "" }}
+{{- $summary := or .Attributes.summary "Details" | .Page.RenderString }}
+{{- $ext := strings.TrimPrefix "." (path.Ext $file) }}
+{{- $lang := or .Type $ext "text" }}
+{{- if in (slice "html" "gotmpl") $lang }}
+  {{- $lang = "go-html-template" }}
+{{- end }}
+{{- if eq $lang "md" }}
+  {{- $lang = "text" }}
+{{- end }}
+
+{{- with .Attributes.copy }}
+  {{- if in (slice true "true" 1) . }}
+    {{- $copy = true }}
+  {{- else if in (slice false "false" 0) . }}
+    {{- $copy = false }}
+  {{- end }}
+{{- end }}
+
+{{- with .Attributes.details }}
+  {{- if in (slice true "true" 1) . }}
+    {{- $details = true }}
+  {{- else if in (slice false "false" 0) . }}
+    {{- $details = false }}
+  {{- end }}
+{{- end }}
+
+{{- with .Attributes.open }}
+  {{- if in (slice true "true" 1) . }}
+    {{- $open = "open" }}
+  {{- else if in (slice false "false" 0) . }}
+    {{- $open = "" }}
+  {{- end }}
+{{- end }}
+
+{{- if $details }}
+  <details class="cursor-pointer" {{ $open }}>
+  <summary>{{ $summary }}</summary>
+{{- end }}
+
+<div
+  x-data
+  class="render-hook-codeblock font-mono not-prose relative mt-6 mb-8 border-1 border-gray-200 dark:border-gray-800 bg-light dark:bg-dark">
+  {{- $fileSelectClass := "select-none" }}
+  {{- if $copy }}
+    {{- $fileSelectClass = "select-text" }}
+    <svg
+      class="absolute right-4 top-2 z-30 text-blue-600 hover:text-blue-500 dark:text-gray-400 dark:hover:text-gray-300 cursor-pointer w-6 h-6"
+      @click="$copy($refs.code)">
+      <use href="#icon--copy"></use>
+    </svg>
+  {{- end }}
+  {{- with $file }}
+    <div
+      class="san-serif text-sm inline-block leading-none pl-2 py-3 bg-gray-300 dark:bg-slate-700 w-full {{ $fileSelectClass }}
+">
+      {{ . }}
+    </div>
+  {{- end }}
+
+  <div x-ref="code">
+    {{- transform.Highlight (strings.TrimSpace .Inner) $lang .Options }}
+  </div>
+</div>
+
+{{- if $details }}
+  </details>
+{{- end }}
diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html
deleted file mode 100644 (file)
index c0e6c63..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}
-  {{- if in (slice 2 3 4 6) .Level }}{{" " -}}
-  <a class="anchor" name="{{ .Anchor }}"></a>
-  <a class="inline-flex items-center" href="#{{ .Anchor | safeURL }}" aria-label="Anchor">
-    <svg class="fill-primary hover:fill-primary/70 w-4 h-4">
-      <use href="#icon--anchor"></use>
-    </svg>
-  </a>
-{{- end -}}
-</h{{ .Level }}>
index 726610258c9a6e247882da6984ea61c084b42ecc..88e3cbee50f23a65cc6a2746e20d0a09ca23484b 100644 (file)
@@ -1,3 +1,4 @@
+{{/* prettier-ignore-start */ -}}
 {{- /* Last modified: 2025-01-19T14:44:56-08:00 */}}
 
 {{- /*
@@ -75,8 +76,8 @@ either of these shortcodes in conjunction with this render hook.
 @context {string} Title The link title.
 
 @returns {template.html}
-*/}}
-
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- /* Initialize. */}}
 {{- $renderHookName := "link" }}
 
@@ -185,24 +186,25 @@ either of these shortcodes in conjunction with this render hook.
 {{- end }}
 
 {{- /* Render anchor element. */ -}}
-<a aria-label="{{ .PlainText }}"
-  {{- with .Title }} title="{{ . }}" {{- end }}
+<a
+  {{- with .Title }}title="{{ . }}"{{- end }}
   {{- range $k, $v := $attrs }}
     {{- if $v }}
       {{- printf " %s=%q" $k ($v | transform.HTMLEscape) | safeHTMLAttr }}
     {{- end }}
   {{- end -}}
->{{ .Text }}</a>
+  >{{ .Text }}</a
+>
 
 {{- define "partials/inline/h-rh-l/validate-fragment.html" }}
   {{- /*
-  Validates the fragment portion of a link destination.
+    Validates the fragment portion of a link destination.
 
-  @context {string} contentPath The page containing the link.
-  @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error.
-  @context {page} page The page corresponding to the link destination
-  @context {struct} parsedURL The link destination parsed by urls.Parse.
-  @context {string} renderHookName The name of the render hook.
+    @context {string} contentPath The page containing the link.
+    @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error.
+    @context {page} page The page corresponding to the link destination
+    @context {struct} parsedURL The link destination parsed by urls.Parse.
+    @context {string} renderHookName The name of the render hook.
   */}}
 
   {{- /* Initialize. */}}
@@ -248,20 +250,20 @@ either of these shortcodes in conjunction with this render hook.
 
 {{- define "partials/inline/h-rh-l/get-glossary-link-attributes.html" }}
   {{- /*
-  Returns the anchor element attributes for a link to the given glossary term.
+    Returns the anchor element attributes for a link to the given glossary term.
 
-  It first checks for the existence of a glossary page for the given term. If
-  no page is found, it then checks for a glossary page for the singular form of
-  the term. If neither page exists it throws a warning or error dependent on
-  the errorLevel setting
+    It first checks for the existence of a glossary page for the given term. If
+    no page is found, it then checks for a glossary page for the singular form of
+    the term. If neither page exists it throws a warning or error dependent on
+    the errorLevel setting
 
-  The returned href attribute does not point to the glossary term page.
-  Instead, via its fragment, it points to an entry on the glossary page.
+    The returned href attribute does not point to the glossary term page.
+    Instead, via its fragment, it points to an entry on the glossary page.
 
-  @context {string} contentPath The page containing the link.
-  @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error.
-  @context {string} renderHookName The name of the render hook.
-  @context {string} text The link text.
+    @context {string} contentPath The page containing the link.
+    @context {string} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error.
+    @context {string} renderHookName The name of the render hook.
+    @context {string} text The link text.
   */}}
 
   {{- /* Get context.. */}}
@@ -289,6 +291,7 @@ either of these shortcodes in conjunction with this render hook.
     "localized" "localization"
     "paginating" "paginate"
     "walking" "walk"
+    "ci/cd" "cicd"
   }}
 
   {{- /* Verify that a glossary term page exists for the given term. */}}
@@ -308,7 +311,7 @@ either of these shortcodes in conjunction with this render hook.
   {{- end }}
 
   {{- /* Create the href attribute. */}}
-  {{- $href := ""}}
+  {{- $href := "" }}
   {{- if $termActual }}
     {{- $href = fmt.Printf "%s#%s" $glossaryPage.RelPermalink (anchorize $termActual) }}
   {{- end }}
diff --git a/layouts/_default/_markup/render-passthrough.html b/layouts/_default/_markup/render-passthrough.html
new file mode 100644 (file)
index 0000000..0ed0011
--- /dev/null
@@ -0,0 +1,9 @@
+{{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }}
+{{- with try (transform.ToMath .Inner $opts) }}
+  {{- with .Err }}
+    {{ errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }}
+  {{- else }}
+    {{- .Value }}
+    {{- $.Page.Store.Set "hasMath" true }}
+  {{- end }}
+{{- end -}}
diff --git a/layouts/_default/_markup/render-table.html b/layouts/_default/_markup/render-table.html
new file mode 100644 (file)
index 0000000..7f3a886
--- /dev/null
@@ -0,0 +1,31 @@
+<div class="overflow-x-auto">
+  <table
+    {{- range $k, $v := .Attributes }}
+      {{- if $v }}
+        {{- printf " %s=%q" $k $v | safeHTMLAttr }}
+      {{- end }}
+    {{- end }}>
+    <thead>
+      {{- range .THead }}
+        <tr>
+          {{- range . }}
+            <th {{- with .Alignment }} class="!text-{{ . }}"{{- end }}>
+              {{- .Text -}}
+            </th>
+          {{- end }}
+        </tr>
+      {{- end }}
+    </thead>
+    <tbody>
+      {{- range .TBody }}
+        <tr>
+          {{- range . }}
+            <td {{- with .Alignment }} class="!text-{{ . }}"{{- end }}>
+              {{- .Text -}}
+            </td>
+          {{- end }}
+        </tr>
+      {{- end }}
+    </tbody>
+  </table>
+</div>
index f6e2814555d9509c84b3062a4acd25d0d2062248..1f4952146648fb04a604a0e7f2b8daf6abe92e50 100644 (file)
@@ -1,14 +1,9 @@
 <!doctype html>
 <html
   class="h-full antialiased scheme-light dark:scheme-dark"
-  lang="{{ with site.Language.LanguageCode }}
-    {{ . }}
-  {{ else }}
-    en-us
-  {{ end }}
-">
+  lang="{{ or site.Language.LanguageCode `en-US` }}">
   <head>
-    <meta charset="utf-8" />
+    <meta charset="utf-8">
     <title>
       {{ .Title }}
     </title>
@@ -19,7 +14,7 @@
     </style>
     <meta
       name="description"
-      content="{{ .Description | default site.Params.description }}" />
+      content="{{ .Description | default site.Params.description }}">
     {{ partial "layouts/head/head-js.html" . }}
     {{ with (templates.Defer (dict "key" "global")) }}
       {{ $t := debug.Timer "tailwindcss" }}
       {{ end }}
       {{ $t.Stop }}
     {{ end }}
+    {{ $noop := .WordCount }}
+    {{ if .Page.Store.Get "hasMath" }}
+      <link
+        href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
+        rel="stylesheet">
+    {{ end }}
     {{ partial "layouts/head/head.html" . }}
   </head>
-  <body class="flex flex-col min-h-full bg-white dark:bg-blue-950">
+  <body
+    class="flex flex-col min-h-full bg-white dark:bg-blue-950 kind-{{ .Kind }}">
     {{ partial "layouts/hooks/body-start.html" . }}
     {{/* Layout. */}}
     {{ block "header" . }}
@@ -46,7 +48,8 @@
     {{ end }}
     <div class="flex w-full xl:w-6xl h-full flex-auto mx-auto">
       <main
-        class="flex-1 mx-auto lg:mx-0 w-full max-w-3x lg:max-w-3x pt-8 lg:pt-14 pb-20 px-main">
+        class="flex-1 mx-auto lg:mx-0 w-full max-w-3x lg:max-w-3x pt-8 lg:pt-14 pb-20 px-main print:pt-0">
+        {{ partial "layouts/hooks/body-main-start.html" . }}
         {{ block "main" . }}{{ end }}
       </main>
       {{ block "rightsidebar" . }}
@@ -58,6 +61,8 @@
     </div>
     {{/* Common icons. */}}
     {{ partial "layouts/icons.html" . }}
+    {{/* Common templates. */}}
+    {{ partial "layouts/templates.html" . }}
     {{/* Footer. */}}
     {{ block "footer" . }}
       {{ partial "layouts/footer.html" . }}
index 76513788fa007f91bc795fee100025960fd4b7d4..b049b6da94cbcb83a0c066e442d7386df2347841 100644 (file)
@@ -1,15 +1,12 @@
 {{ define "main" }}
   {{ $pages := "" }}
-  {{ $showDate := false }}
   {{ if .IsPage }}
     {{/* We currently have a slightly odd content structure with no top level /docs section. */}}
     {{ $pages = .CurrentSection.Pages }}
   {{ else }}
+    {{ $pages = .Pages }}
     {{ if eq .Section "news" }}
-      {{ $pages = partial "news/get-news-items.html" . }}
-      {{ $showDate = true }}
-    {{ else }}
-      {{ $pages = .Pages }}
+      {{ $pages = $pages.ByPublishDate.Reverse }}
     {{ end }}
   {{ end }}
 
         {{ end }}
         <a
           class="flex col-span-1 a--block cursor-pointer flex-col group border p-3 sm:p-4 hover:shadow-md dark:shadow-slate-800 border-gray-300 dark:border-gray-800 m-0"
-          href="{{ .RelPermalink }}">
-          {{ if $showDate }}
-            <p
-              class="text-gray-500 dark:text-gray-400 text-sm/5 md:text-base/2 mb-2 sm:mb-4">
-              {{ .Date.Format "January 2, 2006" }}
-            </p>
+          href="{{ or .Params.permalink .RelPermalink }}">
+          {{ if .Params.show_publish_date }}
+            {{ with .PublishDate }}
+              <p
+                class="text-gray-500 dark:text-gray-400 text-sm/5 md:text-base/2 mb-2 sm:mb-4">
+                {{ partial "layouts/date.html" . }}
+              </p>
+            {{ end }}
           {{ end }}
           <h3
             class="text-lg/6 md:text-2xl tracking-tight p-0 -mt-1 sm:mt-0 mb-1 sm:mb-2 text-primary group-hover:text-primary/70 overflow-hidden">
             {{ .LinkTitle }}
           </h3>
 
-          {{ with .Params.action.signatures }}
+          {{ with .Params.functions_and_methods.signatures }}
             {{/* Set in functions and methods pages. */}}
             {{ with $signature := index . 0 }}
-              {{ if $.Params.action.returnType }}
-                {{ $signature = printf "%s ⟼ %s" $signature $.context.Params.action.returnType }}
+              {{ if $.Params.functions_and_methods.returnType }}
+                {{ $signature = printf "%s ⟼ %s" $signature $.context.Params.functions_and_methods.returnType }}
               {{ end }}
               <div
                 class="font-mono font-light text-sm whitespace-nowrap mb-2 sm:mb-4 p-2 bg-slate-50 dark:bg-slate-700 border-0 mr-8 overflow-x-auto">
@@ -56,6 +55,9 @@
               {{ (or .Params.description .Summary) | plainify | safeHTML }}
             {{ end }}
           </p>
+          {{ if and hugo.IsDevelopment site.Params.debug.display_page_metadata }}
+            {{ partial "helpers/debug/list-item-metadata.html" . }}
+          {{ end }}
         </a>
       {{ end }}
     </div>
diff --git a/layouts/_default/list.rss.xml b/layouts/_default/list.rss.xml
new file mode 100644 (file)
index 0000000..90fa221
--- /dev/null
@@ -0,0 +1,33 @@
+{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+  <channel>
+    <title>Hugo News</title>
+    <description>Recent news about Hugo, a static site generator written in Go, optimized for speed and designed for flexibility.</description>
+    <link>{{ .Permalink }}</link>
+    <generator>Hugo {{ hugo.Version }}</generator>
+    <language>{{ or site.Language.LanguageCode site.Language.Lang }}</language>
+    {{- with site.Copyright }}
+      <copyright>{{ . }}</copyright>
+    {{- end }}
+    {{- with .OutputFormats.Get "rss" }}
+      {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
+    {{- end }}
+    {{- $limit := cond (gt site.Config.Services.RSS.Limit 0) site.Config.Services.RSS.Limit 999 }}
+    {{- $pages := "" }}
+    {{- with site.GetPage "/news" }}
+      {{- $pages = .Pages.ByPublishDate.Reverse | first $limit }}
+    {{- else }}
+      {{- errorf "The list.rss.xml layout was unable to find the 'news' page." }}
+    {{- end }}
+    <lastBuildDate>{{ (index $pages 0).PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
+    {{- range $pages }}
+      <item>
+        <title>{{ .Title }}</title>
+        <link>{{ or .Params.permalink .Permalink }}</link>
+        <pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
+        <guid>{{ or .Params.permalink .Permalink }}</guid>
+        <description>{{ .Summary | transform.XMLEscape | safeHTML }}</description>
+      </item>
+    {{- end }}
+  </channel>
+</rss>
index b6587633bfa691dd6d34b9dd5fe329a308660ddc..2e9e4f379fd6cf4cf414f6c5eb3178b52b2b9fee 100644 (file)
@@ -1,14 +1,21 @@
 {{ define "main" }}
   {{ $ttop := debug.Timer "single" }}
-  <article class="max-w-5xl lg:max-w-3xl">
+  <article class="max-w-5xl lg:max-w-3xl" id="article">
     {{ partial "layouts/docsheader.html" . }}
-    <div class="content" id="content">
+    <div class="content">
       {{ with .Params.description }}
         <div class="lead">
           {{ . | markdownify }}
         </div>
       {{ end }}
-
+      {{ if .Params.show_publish_date }}
+        {{ with .PublishDate }}
+          <p
+            class="text-gray-500 dark:text-gray-400 text-sm/5 md:text-base/2 mb-2 sm:mb-4">
+            {{ partial "layouts/date.html" . }}
+          </p>
+        {{ end }}
+      {{ end }}
       {{ $t := debug.Timer "single.categories" }}
       {{ $categories := .GetTerms "categories" }}
       {{ with $categories }}
@@ -41,7 +48,7 @@
       {{ end }}
       {{ $t.Stop }}
 
-      {{ if .Params.action.signatures }}
+      {{ if .Params.functions_and_methods.signatures }}
         <div class="mb-4 not-prose">
           {{- partial "docs/functions-signatures.html" . -}}
           {{- partial "docs/functions-return-type.html" . -}}
@@ -67,5 +74,7 @@
     {{ partial "layouts/in-this-section.html" . }}
   {{ end }}
   {{ $related }}
-  {{ $toc }}
+  {{ if $.Store.Get "hasToc" }}
+    {{ $toc }}
+  {{ end }}
 {{ end }}
index 50dc2fbf398b9a9f494d4ab21914e8ddf1318643..392f66cd86933c24a6cf63f50f1511b37f0fcc93 100644 (file)
@@ -1,9 +1,9 @@
 {{ define "main" }}
   <div class="flex flex-col w-full p-0 m-0">
     {{ partial "layouts/home/opensource.html" . }}
-    <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-14" />
+    <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-14">
     {{ partial "layouts/home/sponsors.html"  (dict "ctx" . "gtag" "home" ) }}
-    <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-14" />
+    <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-14">
     {{ partial "layouts/home/features.html" . }}
   </div>
 {{ end }}
@@ -15,7 +15,7 @@
         <img
           src="{{ `images/hugo-logo-wide.svg`| relURL }}"
           alt="Hugo Logo"
-          class="w-64 aspect-3/1 mx-auto mb-8" />
+          class="w-64 aspect-3/1 mx-auto mb-8">
         <h1
           class="text-4xl font-bold tracking-tight text-balance text-gray-900 dark:text-gray-300 sm:text-6xl">
           The world’s fastest framework for building websites
index 2dfd2bc0f49d1a22491e7a8b7fce98f6d901bf3d..bb72f96e5998bd2063e21e9eddc21186b9aca373 100644 (file)
@@ -1,6 +1,6 @@
 # Netlify redirects. See https://www.netlify.com/docs/redirects/
-{{  range $p := .Site.Pages -}}
+{{ range $p := .Site.Pages -}}
 {{ range .Aliases }}
-{{  . | printf "%-35s" }}      {{ $p.RelPermalink -}}
+{{ . | printf "%-35s" }}       {{ $p.RelPermalink -}}
 {{ end -}}
 {{- end -}}
diff --git a/layouts/index.rss.xml b/layouts/index.rss.xml
deleted file mode 100644 (file)
index 460c4d3..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>Hugo News</title>
-    <description>Recent news about Hugo, a static site generator written in Go, optimized for speed and designed for flexibility.</description>
-    <link>{{ .Permalink }}</link>
-    <generator>Hugo {{ hugo.Version }}</generator>
-    <language>{{ or site.Language.LanguageCode site.Language.Lang }}</language>
-    {{- with site.Copyright }}
-      <copyright>{{ . }}</copyright>
-    {{- end }}
-    {{- with .OutputFormats.Get "rss" }}
-      {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
-    {{- end }}
-
-    {{- $news_items := slice }}
-
-    {{- /* Get releases from GitHub. */}}
-    {{- $u := "https://api.github.com/repos/gohugoio/hugo/releases" }}
-    {{- $releases := partial "helpers/funcs/get-remote-data.html" $u }}
-    {{- $releases = where $releases "draft" false }}
-    {{- $releases = where $releases "prerelease" false }}
-    {{- range $releases | first 20 }}
-      {{- $summary := printf
-        "Hugo %s was released on %s. See [release notes](%s) for details."
-        .tag_name
-        (.published_at | time.AsTime | time.Format "2 Jan 2006")
-        .html_url
-      }}
-      {{- $ctx := dict
-        "PublishDate" (.published_at | time.AsTime)
-        "Title" (printf "Release %s" .name)
-        "Permalink" .html_url
-        "Section" "news"
-        "Summary" ($summary | $.Page.RenderString)
-      }}
-      {{- $news_items = $news_items | append $ctx }}
-    {{- end }}
-
-    {{- /* Get content pages from news section. */}}
-    {{- range where site.RegularPages "Section" "news" }}
-      {{- $ctx := dict
-        "PublishDate" .PublishDate
-        "Title" .Title
-        "RelPermalink" .RelPermalink
-        "Section" "news"
-        "Summary" .Summary
-        "Params" (dict "description" .Description)
-      }}
-      {{- $news_items = $news_items | append $ctx }}
-    {{- end }}
-    {{- /* Sort, limit, and render lastBuildDate. */}}
-    {{- $limit := cond (gt site.Config.Services.RSS.Limit 1) site.Config.Services.RSS.Limit 999 }}
-    {{- $news_items = sort $news_items "PublishDate" "desc" | first $limit }}
-    <lastBuildDate>{{ (index $news_items 0).PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>
-
-    {{- /* Render items. */}}
-    {{- range $news_items }}
-      <item>
-        <title>{{ .Title }}</title>
-        <link>{{ .Permalink }}</link>
-        <pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
-        <guid>{{ .Permalink }}</guid>
-        <description>{{ .Summary | transform.XMLEscape | safeHTML }}</description>
-      </item>
-    {{- end }}
-  </channel>
-</rss>
index dc562307a80045cf8a21d1d5835d1faa60827299..b3a5a7607de897b7f6cb0301b3432c1fedd2282d 100644 (file)
@@ -1,4 +1,4 @@
-{{- with .Params.action.aliases }}
+{{- with .Params.functions_and_methods.aliases }}
   {{- $label := "Alias" }}
   {{- if gt (len .) 1 }}
     {{- $label = "Aliases" }}
index 13c8c96f46b7b2a12580a595c495b0d93fbe0ea4..75c97f8d9e23cbdb7e7896af07ddcbb32cc6d561 100644 (file)
@@ -1,4 +1,4 @@
-{{- with .Params.action.returnType }}
+{{- with .Params.functions_and_methods.returnType }}
   <p class="font-bold text-dark dark:text-light mt-2">Returns</p>
   <div class="font-sm font-mono ml-3 sm:ml-6 mt-0 sm:mt-1">
     {{- . -}}
index 35d9502650643e1b6a39f84eb3ca1ec684a98d79..6fb61df8eaa35eee0e423bd741d220674aef316d 100644 (file)
@@ -1,4 +1,4 @@
-{{- with .Params.action.signatures }}
+{{- with .Params.functions_and_methods.signatures }}
   <p class="font-bold text-dark dark:text-light">Syntax</p>
   {{- range . }}
     {{- $signature := . }}
diff --git a/layouts/partials/helpers/debug/list-item-metadata.html b/layouts/partials/helpers/debug/list-item-metadata.html
new file mode 100644 (file)
index 0000000..d027484
--- /dev/null
@@ -0,0 +1,23 @@
+<span class="h-3"></span>
+<table class="mt-auto">
+  <tbody>
+    <tr>
+      <td class="align-top text-red-700">weight:</td>
+      <td class="align-top pl-2 w-full">
+        {{ .Weight }}
+      </td>
+    </tr>
+    <tr>
+      <td class="align-top text-red-700">keywords:</td>
+      <td class="align-top pl-2">
+        {{ delimit (or .Keywords "") ", " }}
+      </td>
+    </tr>
+    <tr>
+      <td class="align-top text-red-700">categories:</td>
+      <td class="align-top pl-2">
+        {{ delimit (or .Params.categories "") ", " }}
+      </td>
+    </tr>
+  </tbody>
+</table>
index 78b2ba06e993bef6a1d5c9bd78032ca51ee75f76..ed70434210074f7de6102b4cf1f4608abba339e7 100644 (file)
@@ -1,3 +1,4 @@
+{{/* prettier-ignore-start */ -}}
 {{/*
 Parses the serialized data from the given URL and returns a map or an array.
 
@@ -8,7 +9,7 @@ Supports CSV, JSON, TOML, YAML, and XML.
 
 @example {{ partial "get-remote-data.html" "https://example.org/foo.json" }}
 */}}
-
+{{/* prettier-ignore-end */ -}}
 {{ $url := . }}
 {{ $data := dict }}
 {{ with try (resources.GetRemote $url) }}
index c12406757d6bb6de5c0a64515dd5262f15fb6a28..814d2b52f314e263853f6eaddb4da2e8e17b0017 100644 (file)
@@ -5,7 +5,7 @@
   <link
     rel="stylesheet"
     href="{{ $r.RelPermalink }}"
-    {{ template `render-attributes` $attr }} />
+    {{ template `render-attributes` $attr }}>
 {{ else }}
   {{ with $r | minify | fingerprint }}
     <link
@@ -13,7 +13,7 @@
       href="{{ .RelPermalink }}"
       integrity="{{ .Data.Integrity }}"
       crossorigin="anonymous"
-      {{ template `render-attributes` $attr }} />
+      {{ template `render-attributes` $attr }}>
   {{ end }}
 {{ end }}
 
index 7f30f14373d630e481cf5fc535ceb3593c6b77ac..454dd705ea26aa8e2415ad6faee244e36caaacb0 100644 (file)
@@ -9,17 +9,17 @@
   <source
     srcset="{{ $imageWebp.RelPermalink }}"
     type="image/webp"
-    media="(min-width: 1200px)" />
+    media="(min-width: 1200px)">
   <source
     srcset="{{ $image.RelPermalink }}"
     type="image/jpeg"
-    media="(min-width: 1200px)" />
-  <source srcset="{{ $image1xWebp.RelPermalink }}" type="image/webp" />
-  <source srcset="{{ $image1x.RelPermalink }}" type="image/jpeg" />
+    media="(min-width: 1200px)">
+  <source srcset="{{ $image1xWebp.RelPermalink }}" type="image/webp">
+  <source srcset="{{ $image1x.RelPermalink }}" type="image/jpeg">
   <img
     class="{{ $class }}"
     src="{{ $image1x.RelPermalink }}"
     alt=""
     width="{{ $image1x.Width }}"
-    height="{{ $image1x.Height }}" />
+    height="{{ $image1x.Height }}">
 </picture>
diff --git a/layouts/partials/helpers/validation/validate-keywords.html b/layouts/partials/helpers/validation/validate-keywords.html
new file mode 100644 (file)
index 0000000..3447ec4
--- /dev/null
@@ -0,0 +1,22 @@
+{{/* prettier-ignore-start */ -}}
+{{- /*
+We use the front matter keywords field to determine related content. To ensure
+consistency, during site build we validate each keyword against the entries in
+data/keywords.yaml.
+
+As of March 5, 2025, this feature is experimental, pending usability
+assessment. We anticipate that the number of additions to data/keywords.yaml
+will decrease over time, though the initial implementation will require some
+effort.
+*/}}
+{{/* prettier-ignore-end */ -}}
+{{- $t := debug.Timer "validateKeywords" }}
+{{- $allowedKeywords := collections.Apply site.Data.keywords "strings.ToLower" "." }}
+{{- range $p := site.Pages }}
+  {{- range .Params.keywords }}
+    {{- if not (in $allowedKeywords (lower .)) }}
+      {{- warnf "The word or phrase %q is not in the keywords data file. See %s." . $p.Page.String }}
+    {{- end }}
+  {{- end }}
+{{- end }}
+{{- $t.Stop }}
index 705ce0e7e9984c9b2d343791bbf8c40541e34a02..45f0044d978a03ae3df61a7a97f6cd8b720311a3 100644 (file)
@@ -1,8 +1,8 @@
-{{ $title := .title | default "" }}
-{{ $color := .color | default "yellow" }}
-{{ $icon := .icon | default "exclamation" }}
-{{ $text := .text | default "" }}
-{{ $class := .class | default "mt-6 mb-8" }}
+{{- $title := .title | default "" }}
+{{- $color := .color | default "yellow" }}
+{{- $icon := .icon | default "exclamation-triangle" }}
+{{- $text := .text | default "" }}
+{{- $class := .class | default "mt-6 mb-8" }}
 <div
   class="border-l-4 overflow-x-auto border-{{ $color }}-400 bg-{{ $color }}-50 dark:bg-{{ $color }}-950 border-1 border-{{ $color }}-100 dark:border-{{ $color }}-900 p-4 {{ $class }}">
   <div class="flex">
       </svg>
     </div>
     <div class="ml-3">
-      {{ with $title }}
+      {{- with $title }}
         <h3 class="text-{{ $color }}-800">
           {{ . }}
         </h3>
-      {{ end }}
+      {{- end }}
       <div class="mt-2">
-        <p>
-          {{ $text }}
-        </p>
+        {{ $text }}
       </div>
     </div>
   </div>
index d0628c7eee8a409684999bae6a7f08e7f132cd5f..69bcf7bd53e1d4cdfb8fe4dae9bb7da183e335c6 100644 (file)
@@ -15,7 +15,7 @@
         {{ $isLast := eq $i (sub (len $ancestors) 1) }}
         <a
           href="{{ $p.RelPermalink }}"
-          class="truncate text-blue-600 hover:text-blue-500 {{ if $isCurrentSection }}
+          class="truncate text-blue-600 hover:text-blue-500 dark:text-blue-500 dark:hover:text-blue-400 {{ if $isCurrentSection }}
             current-section
           {{ end }}"
           >{{ $p.LinkTitle }}</a
diff --git a/layouts/partials/layouts/date.html b/layouts/partials/layouts/date.html
new file mode 100644 (file)
index 0000000..2ec1450
--- /dev/null
@@ -0,0 +1,5 @@
+{{ $humanDate := time.Format "January 2, 2006" . }}
+{{ $machineDate := time.Format "2006-01-02T15:04:05-07:00" . }}
+<time {{ printf "datetime=%q" $machineDate | safeHTMLAttr }}>
+  {{ $humanDate }}
+</time>
index 99a856f7e9fdaa08239714ac3d2ba6f55d71a016..1b17e44e443e4d03016da685c938b0045c4c92eb 100644 (file)
@@ -1,4 +1,5 @@
-<footer class="print:hidden bg-blue-950 mt-8 sm:mt-24 border-t-1 border-gray-800">
+<footer
+  class="print:hidden bg-blue-950 mt-8 sm:mt-24 border-t-1 border-gray-800">
   <div class="mx-auto max-w-7xl pt-16 pb-8 sm:pt-18 lg:pt-20">
     <div class="xl:grid xl:grid-cols-3 xl:gap-8">
       {{/* Column 1 */}}
             href="https://github.com/gohugoio/hugo/graphs/contributors"
             class="text-blue-300 hover:underline"
             >Hugo Authors</a
-          ><br />
+          ><br>
         </div>
 
         <img
           src="/images/hugo-logo-wide.svg"
           alt="Hugo Logo"
-          class="aspect-3/1 w-40" />
+          class="aspect-3/1 w-40">
 
         <ul class="space-y-2 text-gray-200">
           <li class="hover:text-white">
index 391e80dcaaa245436330e87d8682ccb3d052785b..bb27f6a24ccfdf72b8e1555f2c901173ddc568ea 100644 (file)
@@ -1,6 +1,3 @@
-<meta charset="utf-8" />
-
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
 {{ hugo.Generator }}
 
index 079c40bae02260ffd34b8325b817738c2eb56a09..0d2e720d70f5a3dc8eabc03b1539da9d6c404071 100644 (file)
@@ -2,7 +2,7 @@
   x-data="navbar"
   class="print:hidden sticky top-0 z-50 bg-blue-950 flex flex-none flex-wrap items-center justify-between px-4 py-5 shadow-md shadow-slate-900/5 transition duration-500 sm:px-6 lg:px-8 dark:shadow-none"
   :class="$store.nav.scroll.atTop ? '': 'bg-blue-950/80'">
-  <div class="relative flex basis-0 items-cente mr-2 lg:mr-8">
+  <div class="relative flex basis-0 items-center mr-2 lg:mr-8">
     {{ with site.Home }}
       <a
         class="text-white text-xl font-bold upper"
index 3d3f62e1708289deaad3deb906e7bc791f5a7992..ccc0ee959cad9f7dc122f8da33fe3202ac0e3bd3 100644 (file)
@@ -1,9 +1,9 @@
 {{ $t := debug.Timer "qr" }}
-{{ $qr := partial "partials/_inline/qr" (dict
+{{ $qr := partial "_inline/qr" (dict
   "page" $
   "img_class" "w-10 bg-white view-transition-qr" )
 }}
-{{ $qrBig := partial "partials/_inline/qr" (dict "page" $ "img_class" "w-64 p-4") }}
+{{ $qrBig := partial "_inline/qr" (dict "page" $ "img_class" "w-64 p-4") }}
 {{ $t.Stop }}
 <div
   class="hidden lg:block cursor-pointer outline-2 hover:outline-3 outline-blue-500 w-10 h-10">
@@ -20,6 +20,6 @@
       height="{{ .Height }}"
       @load="$event.target.classList.remove('_opacity-0')"
       alt="QR code linking to {{ $.page.Permalink }}"
-      class="{{ $img_class }}" />
+      class="{{ $img_class }}">
   {{ end }}
 {{ end }}
index b64bdd22be5c6ef60812713f343a84bfe4f967a9..153c0f4ffdeea39a8b1cd1902317f15f1da6088c 100644 (file)
@@ -17,7 +17,7 @@
           <div class="relative pl-9">
             <dt class="inline font-bold text-gray-900 dark:text-gray-300">
               <svg
-                class="absolute top-1 left-1 size-5 text-blue-600"
+                class="absolute top-1 left-1 size-5 text-blue-500"
                 xmlns="http://www.w3.org/2000/svg"
                 fill="none"
                 viewBox="0 0 24 24"
               Popular.
             </dt>
             <dd class="inline ml-1">
-              As of writing this, Hugo has
-              {{ $githubInfo.stargazers_count }}
-              stars on GitHub. Join the crowd and hit the
+              Hugo has
+              {{ $githubInfo.stargazers_count | lang.FormatNumber 0 }}
+              stars on GitHub as of {{ now.Format "January 2, 2006" }}.
+              Join the crowd and hit the
               <a
-                class="text-blue-600 hover:text-blue-700 font-semibold"
+                class="text-blue-500 hover:text-blue-500 font-semibold"
                 href="https://github.com/gohugoio/hugo"
                 >Star button</a
               >.
@@ -45,7 +46,7 @@
           <div class="relative pl-9">
             <dt class="inline font-bold text-gray-900 dark:text-gray-300">
               <svg
-                class="absolute top-1 left-1 size-5 text-blue-600"
+                class="absolute top-1 left-1 size-5 text-blue-500"
                 xmlns="http://www.w3.org/2000/svg"
                 fill="none"
                 viewBox="0 0 24 24"
@@ -63,7 +64,7 @@
               Hugo has a large and active community. If you have questions or
               need help, you can ask in the
               <a
-                class="text-blue-600 hover:text-blue-700 font-semibold"
+                class="text-blue-500 hover:text-blue-500 font-semibold"
                 href="https://discourse.gohugo.io"
                 >Hugo forums</a
               >.
@@ -72,7 +73,7 @@
           <div class="relative pl-9">
             <dt class="inline font-bold text-gray-900 dark:text-gray-300">
               <svg
-                class="absolute top-1 left-1 size-5 text-blue-600"
+                class="absolute top-1 left-1 size-5 text-blue-500"
                 xmlns="http://www.w3.org/2000/svg"
                 fill="none"
                 viewBox="0 0 24 24"
@@ -89,7 +90,7 @@
             <dd class="inline ml-1">
               Hugo has a fast
               <a
-                class="text-blue-600 hover:text-blue-700 font-semibold"
+                class="text-blue-500 hover:text-blue-500 font-semibold"
                 href="https://github.com/gohugoio/hugo/releases"
                 >release</a
               >
index 1f92e117498e574356dfbac59d51405de0a0190e..1f391e1ecbb0e0ab5b82f7803c7eaa6e150c5b61 100644 (file)
@@ -3,8 +3,6 @@
 {{ $isFooter := (eq $gtag "footer") }}
 {{ $utmSource := cond $isFooter "hugofooter" "hugohome" }}
 {{ $containerClass := .containerClass | default "mx-auto max-w-7xl px-6 lg:px-8" }}
-{{/* TODO1 prod: onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});"
-*/}}
 {{ with .ctx.Site.Data.sponsors }}
   <div class="{{ $containerClass }}">
     <h2 class="font-bold text-2xl mb-6 tracking-tighter">Hugo Sponsors</h2>
@@ -21,6 +19,9 @@
           <a
             href="{{ $url }}"
             title="{{ .title | default .name }}"
+            {{ if hugo.IsProduction }}
+              onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});"
+            {{ end }}
             class="group inline-block w-full h-full shadow-md dark:shadow-gray-600"
             {{ with .link_attr }}{{ . | safeHTMLAttr }}{{ end }}>
             <div
index ba4a813002c1b6c534f84e47124373d7b6249c79..9ffd93ba899d1d71c9481dee490d9cc9e665b3ab 100644 (file)
@@ -1 +1,3 @@
-{{/* Empty for now */}}
+{{- if .IsHome }}
+  {{- partial "helpers/validation/validate-keywords.html" }}
+{{- end }}
diff --git a/layouts/partials/layouts/hooks/body-main-start.html b/layouts/partials/layouts/hooks/body-main-start.html
new file mode 100644 (file)
index 0000000..b28dd21
--- /dev/null
@@ -0,0 +1,8 @@
+{{ if or .IsSection .IsPage }}
+  <div class="hidden print:flex justify-between border-b-1 border-b-gray-400 mb-4">
+    <p class="flex flex-col justify-end text-4xl mb-3">Hugo Documentation</p>
+    {{ with images.QR .Permalink (dict "scale" 3) }}
+      <img class="mb-2 -mr-2" src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="Link to {{ $.Permalink }}">
+    {{ end }}
+  </div>
+{{end }}
index c7194bc031e73209430e9036bb3cef4acfa08b94..b05adef00131655567a89c43b2f91296a88aed2e 100644 (file)
   </symbol>
 </svg>
 
-<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
-  <symbol id="icon--exclamation" viewBox="0 0 24 24">
-    <path
-      fill-rule="evenodd"
-      d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"
-      clip-rule="evenodd" />
-  </symbol>
-</svg>
-
-
 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
   <symbol id="icon--copy" viewBox="0 0 24 24">
     <path
   </symbol>
 </svg>
 
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+  <symbol id="icon--github" viewBox="0 0 24 24" aria-hidden="true">
+    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.477 2 2 6.463 2 11.97c0 4.404 2.865 8.14 6.839 9.458.5.092.682-.216.682-.48 0-.236-.008-.864-.013-1.695-2.782.602-3.369-1.337-3.369-1.337-.454-1.151-1.11-1.458-1.11-1.458-.908-.618.069-.606.069-.606 1.003.07 1.531 1.027 1.531 1.027.892 1.524 2.341 1.084 2.91.828.092-.643.35-1.083.636-1.332-2.22-.251-4.555-1.107-4.555-4.927 0-1.088.39-1.979 1.029-2.675-.103-.252-.446-1.266.098-2.638 0 0 .84-.268 2.75 1.022A9.607 9.607 0 0 1 12 6.82c.85.004 1.705.114 2.504.336 1.909-1.29 2.747-1.022 2.747-1.022.546 1.372.202 2.386.1 2.638.64.696 1.028 1.587 1.028 2.675 0 3.83-2.339 4.673-4.566 4.92.359.307.678.915.678 1.846 0 1.332-.012 2.407-.012 2.734 0 .267.18.577.688.48 3.97-1.32 6.833-5.054 6.833-9.458C22 6.463 17.522 2 12 2Z"></path>
+  </symbol>
+</svg>
+
+{{/* https://heroicons.com/mini exclamation-circle */}}
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+  <symbol id="icon--exclamation-circle" viewBox="0 0 24 24" aria-hidden="true">
+    <path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-8-5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0v-4.5A.75.75 0 0 1 10 5Zm0 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" />
+  </symbol>
+</svg>
+
+{{/* https://heroicons.com/mini exclamation-triangle */}}
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+  <symbol id="icon--exclamation-triangle" viewBox="0 0 24 24" aria-hidden="true">
+    <path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" />
+  </symbol>
+</svg>
+
+{{/* https://heroicons.com/mini information-circle */}}
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+  <symbol id="icon--information-circle" viewBox="0 0 24 24" aria-hidden="true">
+    <path fill-rule="evenodd" d="M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z" clip-rule="evenodd" />
+  </symbol>
+</svg>
 
+{{/* https://heroicons.com/mini light-bulb */}}
 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
-<symbol id="icon--github" viewBox="0 0 24 24" aria-hidden="true">
-  <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.477 2 2 6.463 2 11.97c0 4.404 2.865 8.14 6.839 9.458.5.092.682-.216.682-.48 0-.236-.008-.864-.013-1.695-2.782.602-3.369-1.337-3.369-1.337-.454-1.151-1.11-1.458-1.11-1.458-.908-.618.069-.606.069-.606 1.003.07 1.531 1.027 1.531 1.027.892 1.524 2.341 1.084 2.91.828.092-.643.35-1.083.636-1.332-2.22-.251-4.555-1.107-4.555-4.927 0-1.088.39-1.979 1.029-2.675-.103-.252-.446-1.266.098-2.638 0 0 .84-.268 2.75 1.022A9.607 9.607 0 0 1 12 6.82c.85.004 1.705.114 2.504.336 1.909-1.29 2.747-1.022 2.747-1.022.546 1.372.202 2.386.1 2.638.64.696 1.028 1.587 1.028 2.675 0 3.83-2.339 4.673-4.566 4.92.359.307.678.915.678 1.846 0 1.332-.012 2.407-.012 2.734 0 .267.18.577.688.48 3.97-1.32 6.833-5.054 6.833-9.458C22 6.463 17.522 2 12 2Z"></path>
-</symbol>
-</svg>
\ No newline at end of file
+  <symbol id="icon--light-bulb" viewBox="0 0 24 24" aria-hidden="true">
+    <path d="M10 1a6 6 0 0 0-3.815 10.631C7.237 12.5 8 13.443 8 14.456v.644a.75.75 0 0 0 .572.729 6.016 6.016 0 0 0 2.856 0A.75.75 0 0 0 12 15.1v-.644c0-1.013.762-1.957 1.815-2.825A6 6 0 0 0 10 1ZM8.863 17.414a.75.75 0 0 0-.226 1.483 9.066 9.066 0 0 0 2.726 0 .75.75 0 0 0-.226-1.483 7.553 7.553 0 0 1-2.274 0Z" />
+  </symbol>
+</svg>
index 8be8cff8b268fe2d53fad2e7d23209e8273d9bbf..28e5ed7ebfa050b5772245c66d76f24f4844bea5 100644 (file)
         <li>
           <a
             class="text-sm {{ if eq . $ }}
-              font-bold text-blue-600 focus:font-bold dark:text-blue-200
-              hover:text-blue-600 scroll-active
+              font-bold text-blue-600 hover:text-blue-600
+              dark:hover:text-blue-200 dark:text-blue-200 focus:font-bold
+              scroll-active
             {{ else }}
-              text-blue-600 hover:text-blue-500
+              text-blue-600 hover:text-blue-500 dark:text-blue-500
+              dark:hover:text-blue-400
             {{ end }}"
             href="{{ .RelPermalink }}"
             >{{ .LinkTitle }}</a
index b6f76a560d78091e8339c3687d9e69561d2d5104..6a976d11ad7750722251dde157470cca8113b342 100644 (file)
@@ -1,5 +1,5 @@
 <div class="print:hidden">
-  <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-16" />
+  <hr class="border-t border-gray-200 dark:border-gray-800 my-10 lg:my-16">
 
   <div class="text-gray-800 dark:text-gray-300 font-semibold">
     Last updated:
   </div>
 
   {{ with .File }}
-    {{ $href := printf "%sedit/master/content/%s/%s" site.Params.ghrepo $.Lang .Path }}
-    <a
-      href="{{ $href }}"
-      class="mt-4 inline-block not-prose bg-blue-600 hover:bg-blue-800 text-white hover:text-white font-bold py-2 px-4 rounded">
-      Improve this page
-    </a>
+    {{ if not .IsContentAdapter }}
+      {{ $href := printf "%sedit/master/content/%s/%s" site.Params.ghrepo $.Lang .Path }}
+      <a
+        href="{{ $href }}"
+        class="mt-4 inline-block not-prose bg-blue-600 hover:bg-blue-800 text-white hover:text-white font-bold py-2 px-4 rounded">
+        Improve this page
+      </a>
+    {{ end }}
   {{ end }}
 </div>
index 16a04dce1250bd92f5f2b836db1cf01cd533d860..0245ba7710791ed7e62901ecaf9dd6ba11a6bee2 100644 (file)
@@ -1,22 +1,7 @@
 {{- $heading := "See also" }}
-{{- $related := slice }}
+{{- $related := site.Pages.Related . }}
+{{- $related = $related | complement .CurrentSection.Pages | first 7 }}
 
-{{- if .Params.action.related }}
-  {{- $related = slice }}
-  {{- range .Params.action.related }}
-    {{- $path := . | lower }}
-    {{- with or (site.GetPage $path) ($.GetPage $path) }}
-      {{- $related = $related | append . }}
-    {{- else }}
-      {{/* TODO1 make error */}}
-      {{- warnf "The 'related' partial was unable to get page %s" . }}
-    {{- end }}
-  {{- end }}
-{{- else }}
-  {{- $related = site.RegularPages.Related . }}
-{{- end }}
-{{/* Avoid repeating pages that's listed in In this section. */}}
-{{- $related = $related | complement .CurrentSection.RegularPages | first 7 }}
 {{- with $related }}
   {{ $.Store.Set "hasRelated" true }}
   <h2
@@ -27,9 +12,9 @@
     {{- range . }}
       <li>
         <a
-          class="text-sm text-blue-600 hover:text-blue-500"
+          class="text-sm text-blue-600 hover:text-blue-500 dark:text-blue-500 dark:hover:text-blue-400"
           href="{{ .RelPermalink }}"
-          >{{ .LinkTitle }}</a
+          >{{ or .Params.altTitle .Title }}</a
         >
       </li>
     {{- end }}
diff --git a/layouts/partials/layouts/search/algolialogo.html b/layouts/partials/layouts/search/algolialogo.html
new file mode 100644 (file)
index 0000000..a7fc6c0
--- /dev/null
@@ -0,0 +1,45 @@
+<div class="flex items-center gap-1">
+  <span class="">Search by</span
+  ><svg
+    width="77"
+    height="19"
+    aria-label="Algolia"
+    role="img"
+    id="l1"
+    class="fill-gray-600 dark:fill-gray-400"
+    xmlns="http://www.w3.org/2000/svg"
+    viewBox="0 0 2196.2 500">
+    <path
+      class=""
+      d="M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"></path>
+    <rect
+      class="cls-1"
+      x="1845.88"
+      y="104.73"
+      width="62.58"
+      height="277.9"
+      rx="5.9"
+      ry="5.9"></rect>
+    <path
+      class=""
+      d="M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"></path>
+    <path
+      class=""
+      d="M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"></path>
+    <path
+      class=""
+      d="M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"></path>
+    <path
+      class=""
+      d="M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"></path>
+    <path
+      class=""
+      d="M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"></path>
+    <path
+      class=""
+      d="M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"></path>
+    <path
+      class="cls-1"
+      d="M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"></path>
+  </svg>
+</div>
index 3dcb1eb9dfcbe46f071f34341e00d8e258d753fd..07c1f73351729e98e99eb7cfab8eb5de7622b613 100644 (file)
@@ -1,19 +1,22 @@
+{{ $textColor := "text-gray-300" }}
+{{ $fillColor := "fill-slate-400 dark:fill-slate-500" }}
+{{ if .standalone }}
+  {{ $textColor = "text-gray-800 dark:text-gray-300 " }}
+  {{ $fillColor = "fill-slate-500 dark:fill-slate-400" }}
+{{ end }}
+
+
 <button
   {{ if .standalone }}
     x-data @click="$dispatch('search-toggle')"
   {{ end }}
   type="button"
-  class="grid cursor-pointer w-full text-gray-500 lg:w-56 grid-cols-[auto_1fr_auto] items-center rounded-md px-2 sm:px-4 py-2 text-left text-xs/6 lg:text-sm/6 outline-0 sm:outline-1 -outline-offset-1 outline-gray-600">
+  aria-label="Search"
+  class="{{ $textColor }} grid cursor-pointer w-full lg:w-56 grid-cols-[auto_1fr_auto] items-center rounded-md px-2 sm:px-4 py-2 text-left text-xs/6 lg:text-sm/6 outline-0 sm:outline-1 -outline-offset-1 outline-gray-600">
   <svg
-    class="pointer-events-none -ml-0.5 mr-2 size-5 sm:size-4 fill-slate-400 dark:fill-slate-500">
+    class="{{ $fillColor }} pointer-events-none -ml-0.5 mr-2 size-5 sm:size-4">
     <use href="#icon--search"></use>
   </svg>
-  <span class="hidden lg:inline">Search docs</span
-  ><kbd
-    class="hidden font-sans text-xs/4 text-gray-400 dark:text-gray-400 sm:[.os-macos_&amp;]:block"
-    ><span class="text-gray-400/70 ">⌘</span>K</kbd
-  ><kbd
-    class="hidden font-sans text-xs/4 text-gray-400 sm:not-[.os-macos_&amp;]:block dark:text-gray-400"
-    ><span class="text-gray-400/70">Ctrl</span>&nbsp;K</kbd
-  >
+  <span class="hidden lg:inline">Search docs</span>
+  <span class="hidden lg:inline">/</span>
 </button>
index 6ef51961588fd86a59ff1573c4de14925fbcb63c..cd9b88dc0d3f6d4be2a04ae30c45c7a045dfb5cb 100644 (file)
                 x-model.debounce.100ms="query"
                 @click="search()"
                 type="search"
+                arial-label="Search"
                 class="text-gray-800 dark:text-gray-100 bg-white/40 dark:bg-gray-900 shadow rounded border-0 p-3 w-full"
                 placeholder="Search docs"
-                x-ref="input" />
+                x-ref="input">
             </div>
           </div>
-          <div class="relative mt-6 flex-1 px-4 sm:px-6">
+          <div class="relative mt-6 flex-1 px-4 sm:px-6 h-full">
             <ul
               role="list"
-              class="divide-y divide-gray-200 dark:divide-gray-900">
+              class="divide-y divide-gray-200 dark:divide-gray-900 h-[calc(100%-6rem)] overflow-y-auto">
               <template
                 x-for="[group, entries] in Object.entries(result)"
                 :key="group">
               </template>
             </ul>
           </div>
+          {{/* End listing */ -}}
         </div>
       </div>
+      <div
+        class="z-40 fixed pointer-events-auto bottom-0 right-0 dark:text-gray-300 text-gray-800 float-right mr-8 mb-4 text-sm lg:text-md"
+        x-show="open"
+        x-transition.opacity.duration.800ms>
+        {{ partial "layouts/search/algolialogo.html" }}
+      </div>
     </div>
   </div>
 </div>
diff --git a/layouts/partials/layouts/templates.html b/layouts/partials/layouts/templates.html
new file mode 100644 (file)
index 0000000..72b71a3
--- /dev/null
@@ -0,0 +1,7 @@
+<template id="anchor-heading">
+  <a class="hidden group-hover:inline-flex items-center" aria-label="Anchor">
+    <svg class="ml-2 fill-primary hover:fill-primary/70 w-4 h-4">
+      <use href="#icon--anchor"></use>
+    </svg>
+  </a>
+</template>
index 06946d8856a89491335f829735686585bd99a7b1..774bc15c76b1397664b5aed4f02784a1f0f410c2 100644 (file)
@@ -1,33 +1,37 @@
-{{ with .Fragments.Headings }}
-  {{ $.Store.Set "hasToc" true }}
-  <div
-    x-data="toc"
-    class="sticky top-[8rem] h-screen overflow-y-auto overflow-x-hidden">
-    <h2
-      class="text-base font-semibold tracking-tight text-gray-600  dark:text-gray-400">
-      On this page
-    </h2>
-    <nav class="w-56 mt-2">
-      <ul>
-        {{ template "render-toc-level" . }}
-      </ul>
-    </nav>
-  </div>
+{{ with .Fragments }}
+  {{ with .Headings }}
+    <div
+      x-data="toc"
+      class="sticky top-[8rem] h-screen overflow-y-auto overflow-x-hidden">
+      <h2
+        class="text-base font-semibold tracking-tight text-gray-600  dark:text-gray-400">
+        On this page
+      </h2>
+      <nav class="w-56 mt-2">
+        <ul>
+          {{ template "render-toc-level" (dict "h" . "p" $) }}
+        </ul>
+      </nav>
+    </div>
+  {{ end }}
 {{ end }}
 
 {{ define "render-toc-level" }}
-  {{ range . }}
-    {{ if and .ID (or (ge .Level 2) (lt .Level 4)) }}
+  {{ range .h }}
+    {{ if and .ID (and (ge .Level 2) (le .Level 4)) }}
+      {{ $indentation := "ml-0" }}
+      {{ if eq .Level 3 }}
+        {{ $indentation = "ml-2 lg:ml-3" }}
+      {{ else if eq .Level 4 }}
+        {{ $indentation = "ml-4 lg:ml-6" }}
+      {{ end }}
+      {{ $.p.Store.Set "hasToc" true }}
       <li>
         <a
           href="#{{ .ID }}"
           x-ref="{{ .ID }}"
           @click.stop="setActive('{{ .ID }}')"
-          class="block pb-1 text-blue-600 hover:text-blue-500{{ if gt .Level 2 }}
-            ml-2 lg:ml-3 text-sm
-          {{ else }}
-            text-sm
-          {{ end }}"
+          class="block pb-1 text-blue-600 hover:text-blue-500 dark:text-blue-500 dark:hover:text-blue-400 text-sm {{ $indentation }}"
           :class="{'font-bold dark:text-blue-200 dark:hover:text-blue-300' : activeHeading === '{{ .ID }}'}">
           {{ .Title | safeHTML }}
         </a>
@@ -35,7 +39,7 @@
     {{ end }}
     {{ with .Headings }}
       <ul>
-        {{ template "render-toc-level" . }}
+        {{ template "render-toc-level"  (dict "h" . "p" $.p) }}
       </ul>
     {{ end }}
   {{ end }}
diff --git a/layouts/partials/news/get-news-items.html b/layouts/partials/news/get-news-items.html
deleted file mode 100644 (file)
index cb1a930..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{{ $news_items := slice }}
-
-{{/* Get releases from GitHub. */}}
-{{ $u := "https://api.github.com/repos/gohugoio/hugo/releases" }}
-{{ $releases := partial "helpers/funcs/get-remote-data.html" $u }}
-{{ $releases = where $releases "draft" false }}
-{{ $releases = where $releases "prerelease" false }}
-{{ range $releases | first 20 }}
-  {{ $publishDate := .published_at | time.AsTime }}
-
-  {{/* Correct the v0.138.0 release date. See https://github.com/gohugoio/hugo/issues/13066. */}}
-  {{ if eq .name "v0.138.0" }}
-    {{ $publishDate = "2024-11-06T11:22:34Z" | time.AsTime }}
-  {{ end }}
-
-  {{ $ctx := dict
-    "Date" $publishDate
-    "Title" (printf "Release %s" .name)
-    "LinkTitle" (printf "Release %s" .name)
-    "Permalink" .html_url
-    "RelPermalink" .html_url
-    "Section" "news"
-    "Summary" ""
-  }}
-  {{ $news_items = $news_items | append $ctx }}
-{{ end }}
-
-{{/* Get content pages from news section. */}}
-{{ range .Pages }}
-  {{ $ctx := dict
-    "Date" .Date
-    "Title" .Title
-    "LinkTitle" .Title
-    "RelPermalink" .RelPermalink
-    "Section" "news"
-    "Summary" .Summary
-    "Params" (dict "description" .Description)
-  }}
-  {{ $news_items = $news_items | append $ctx }}
-{{ end }}
-
-{{/* Sort by date (descending) and render. */}}
-{{ $news_items = sort $news_items "Date" "desc" }}
-
-{{ return $news_items }}
index 1c89b08141708fff25b6bcf9242b5e7685417cc4..e32e0729813de4d2e7b9bfddba075669018322cf 100644 (file)
@@ -1,4 +1,4 @@
-<meta property="og:title" content="{{ .Title }}" />
+<meta property="og:title" content="{{ .Title }}">
 <meta
   property="og:description"
   content="{{ with .Description }}
@@ -9,56 +9,56 @@
     {{ else }}
       {{ with .Site.Params.description }}{{ . }}{{ end }}
     {{ end }}
-  {{ end }}" />
+  {{ end }}">
 <meta
   property="og:type"
   content="{{ if .IsPage }}
     article
   {{ else }}
     website
-  {{ end }}" />
-<meta property="og:url" content="{{ .Permalink }}" />
+  {{ end }}">
+<meta property="og:url" content="{{ .Permalink }}">
 
 {{- with $.Params.images -}}
   {{- range first 6 . }}
-    <meta property="og:image" content="{{ . | absURL }}" />
+    <meta property="og:image" content="{{ . | absURL }}">
   {{ end -}}
 {{- else -}}
   {{- $featured := partial "opengraph/get-featured-image.html" . }}
   {{- with $featured -}}
-    <meta property="og:image" content="{{ $featured.Permalink }}" />
+    <meta property="og:image" content="{{ $featured.Permalink }}">
   {{- else -}}
     {{- with $.Site.Params.images }}
-      <meta property="og:image" content="{{ index . 0 | absURL }}" />
+      <meta property="og:image" content="{{ index . 0 | absURL }}">
     {{ end -}}
   {{- end -}}
 {{- end -}}
 
 {{- if .IsPage }}
   {{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
-  <meta property="article:section" content="{{ .Section }}" />
+  <meta property="article:section" content="{{ .Section }}">
   {{ with .PublishDate }}
     <meta
       property="article:published_time"
-      {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />
+      {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
   {{ end }}
   {{ with .Lastmod }}
     <meta
       property="article:modified_time"
-      {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />
+      {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
   {{ end }}
 {{- end -}}
 
-{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
+{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}">{{ end }}
 {{- with .Params.locale }}
-  <meta property="og:locale" content="{{ . }}" />
+  <meta property="og:locale" content="{{ . }}">
 {{ end }}
 {{- with .Site.Params.title }}
-  <meta property="og:site_name" content="{{ . }}" />
+  <meta property="og:site_name" content="{{ . }}">
 {{ end }}
 {{- with .Params.videos }}
   {{- range . }}
-    <meta property="og:video" content="{{ . | absURL }}" />
+    <meta property="og:video" content="{{ . | absURL }}">
   {{ end }}
 
 {{ end }}
@@ -71,7 +71,7 @@
     {{- $series := index $siteSeries ($name | urlize) }}
     {{- range $page := first 6 $series.Pages }}
       {{- if ne $page.Permalink $permalink }}
-        <meta property="og:see_also" content="{{ $page.Permalink }}" />
+        <meta property="og:see_also" content="{{ $page.Permalink }}">
       {{ end }}
     {{- end }}
   {{ end }}
@@ -80,5 +80,5 @@
 
 {{- /* Facebook Page Admin ID for Domain Insights */}}
 {{- with site.Params.social.facebook_admin }}
-  <meta property="fb:admins" content="{{ . }}" />
+  <meta property="fb:admins" content="{{ . }}">
 {{ end }}
index 38241be33ba2fe2a5d5c8642cca87734aa9a6cd1..fd71305018ceec03eb8c0818d8259ebcc0de9c8b 100644 (file)
@@ -1,7 +1,28 @@
-<dl>
-    {{ range .Site.Data.docs.chroma.lexers }}
-      <dt>{{ .Name }}</dt>
-      <dd>{{ with .Aliases }}{{ delimit . ", " }}{{ end }}</dd>
-    {{ end }}
-  </dl>
-  
\ No newline at end of file
+{{/* prettier-ignore-start */ -}}
+{{- /*
+Renders an HTML template of Chroma lexers and their aliases.
+
+@example {{< chroma-lexers >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+<div class="overflow-x-auto">
+  <table>
+    <thead>
+      <th>Language</th>
+      <th>Identifiers</th>
+    </thead>
+    <tbody>
+      {{- range site.Data.docs.chroma.lexers }}
+        <tr>
+          <td>{{ .Name }}</td>
+          <td>
+            {{- range $k, $_ := .Aliases }}
+              {{- if $k }},{{ end }}
+              <code>{{ . }}</code>
+            {{- end }}
+          </td>
+        </tr>
+      {{- end }}
+    </tbody>
+  </table>
+</div>
index 4e64fded0b45deccb94eb180a16426002a5eecfe..a22c378be4d5c206e5ba6d9f021e57883b1db27b 100644 (file)
@@ -1,19 +1,26 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
-  Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
+Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
 
-  @param {string} [config] The section of site.Data.docs.config to render.
-  @param {bool} [copy=false] If true, display a copy to clipboard button.
-  @param {string} [file] The file name to display above the rendered code.
-  @param {bool} [fm=false] If true, render the code as front matter.
-  @param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config.
+@param {string} [config] The section of site.Data.docs.config to render.
+@param {bool} [copy=false] Whether to display a copy-to-clipboard button.
+@param {string} [dataKey] The section of site.Data.docs to render.
+@param {string} [file] The file name to display above the rendered code.
+@param {bool} [fm=false] Whether to render the code as front matter.
+@param {bool} [skipHeader=false] Whether to omit top level key(s) when rendering a section of site.Data.docs.config.
 
-  @returns {template.HTML}
-*/}}
+@example  {{< code-toggle file=hugo config=build />}}
 
+@example  {{< code-toggle file=content/example.md fm="true" }}
+          title='Example'
+          draft='false
+          {{< /code-toggle }}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- /* Initialize. */}}
 {{- $config := "" }}
-{{- $dataKey := "" }}
 {{- $copy := false }}
+{{- $dataKey := "" }}
 {{- $file := "" }}
 {{- $fm := false }}
 {{- $skipHeader := false }}
 {{- else }}
   {{- $code = $.Inner }}
 {{- end }}
-<div x-data class="shortcode-code not-prose relative p-0 mt-2 mb-4 sm:mb-8">
-  <svg
-    class="absolute right-2 top-0 z-30 text-blue-600 hover:text-blue-500 cursor-pointer w-8"
-    @click="$copy($refs[$store.nav.userSettings.settings.configFileType])">
-    <use href="#icon--copy"></use>
-  </svg>
+
+
+<div x-data class="shortcode-code not-prose relative p-0 mt-6 mb-8">
+  {{- if $copy }}
+    <svg
+      class="absolute right-4 top-12 z-30 text-blue-600 hover:text-blue-500 cursor-pointer w-6 h-6"
+      @click="$copy($refs[$store.nav.userSettings.settings.configFileType])">
+      <use href="#icon--copy"></use>
+    </svg>
+  {{- end }}
   <nav class="relative flex" aria-label="Tabs">
-    {{ with $file }}
+    {{- with $file }}
       <div
-        class="flex-none text-sm px-2 content-center border-b-1 border-gray-300 dark:border-gray-700"
-        aria-lbabel="Filename">
+        class="select-none flex-none text-sm px-2 content-center border-b-1 border-gray-300 dark:border-gray-700"
+        aria-label="Filename">
         {{ . }}{{ if not $fm }}.{{ end }}
       </div>
-    {{ end }}
-    {{ range $i, $lang := $langs }}
-      {{ $isLast := eq (add $i 1) (len $langs) }}
+    {{- end }}
+    {{- range $i, $lang := $langs }}
+      {{- $isLast := eq (add $i 1) (len $langs) }}
       <button
         x-on:click="$store.nav.userSettings.settings.configFileType = '{{ index $langs $i }}'"
         aria-label="{{ printf `Toggle %s` . }}"
           border-r-1
         {{ end }} border-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 dark:border-gray-700 cursor-pointer relative min-w-0 flex-1 overflow-hidden text-sm no-underline text-center focus:z-10 overflow-x-auto"
         :class="$store.nav.userSettings.settings.configFileType === '{{ index $langs $i }}' ? 'border-b-0 bg-light dark:bg-dark' : 'border-b-1'">
-        <span>
+        <span class="select-none">
           {{ . }}
         </span>
       </button>
-    {{ end }}
+    {{- end }}
   </nav>
-  {{ if $code }}
-    {{ range $i, $lang := $langs }}
+  {{- if $code }}
+    {{- range $i, $lang := $langs }}
       <div
         class="max-h-96 overflow-y-auto border-l-1 border-b-1 border-r-1 border-gray-300 dark:border-gray-700"
         x-ref="{{ $lang }}"
           {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }}
         {{- end }}
         {{- $hCode = $hCode | replaceRE `\n+` "\n" }}
-        {{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
+        {{- highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
       </div>
-    {{ end }}
-  {{ end }}
+    {{- end }}
+  {{- end }}
 </div>
diff --git a/layouts/shortcodes/code.html b/layouts/shortcodes/code.html
deleted file mode 100644 (file)
index 1ccb44b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{{- $codeLang := or (.Get "lang") "" }}
-<div
-  x-data
-  class="shortcode-code font-mono not-prose relative mt-6 mb-8 border-1 border-gray-200 dark:border-gray-800 bg-light dark:bg-dark">
-  {{ if (.Get "copy") }}
-    <svg
-      class="absolute right-2 top-2 z-30 text-blue-600 hover:text-blue-500 cursor-pointer w-6 h-6"
-      @click="$copy($refs.code)">
-      <use href="#icon--copy"></use>
-    </svg>
-  {{ end }}
-  {{- with .Get "file" -}}
-    {{- if not $codeLang }}
-      {{- $ext := strings.TrimPrefix "." (path.Ext .) }}
-      {{- $codeLang = cond (eq $ext "html") "go-html-template" $ext }}
-    {{- end }}
-    <div
-      class="san-serif text-sm inline-block leading-none pl-2 py-3 bg-gray-300 dark:bg-slate-700 dark: w-full select-none
-">
-      {{ . }}
-    </div>
-  {{- end -}}
-
-
-  <div class="" x-ref="code">
-    {{ $inner := trim .Inner "\n" | safeHTML }}
-    {{ if .Get "nocode" }}
-      {{ $inner }}
-    {{ else }}
-      {{ with $codeLang }}
-        {{ highlight $inner . "" }}
-      {{ else }}
-        <pre class="overflow-x-auto p-2 w-[93%]"><code>{{ $inner }}</code>
-        </pre>
-      {{ end }}
-    {{ end }}
-  </div>
-</div>
index ff3f299bdb00a13087837fbb8670a7b75e14aca5..de8b0cf55019bb2abb3b5d4ba72654006999f091 100644 (file)
@@ -9,31 +9,39 @@
 {{ $fields := after 3 .Params }}
 {{ $list := where $list $filter1 $filter2 $filter3 }}
 
-<table class="table table-bordered">
-       <tr>
-               {{ range $fields }}
-               <th>{{ . }}</th>
-               {{ end }}
-       </tr>
-       {{ range $list }}
-       <tr>
-               {{ range $k, $v := . }}
-               {{ $.Scratch.Set $k $v }}
-               {{ end }}
-               {{ range $k, $v := $fields }}
-                       <td>
-                               {{ $tdContent := $.Scratch.Get . }}
-                               {{ if eq $k 3 }}
-                                       {{ printf "%v" $tdContent |
-                                                       strings.ReplaceRE `\[` "<ol><li>" |
-                                                       strings.ReplaceRE `\s` "</li><li>" |
-                                                       strings.ReplaceRE `\]` "</li></ol>" |
-                                                       safeHTML }}
-                               {{ else }}
-                                       {{ $tdContent }}
-                               {{ end}}
-                       </td>
-               {{ end }}
-       </tr>
-       {{ end }}
-</table>
+
+<div class="overflow-x-auto">
+  <table>
+    <thead>
+      <tr>
+        {{ range $fields }}
+          <th>{{ . }}</th>
+        {{ end }}
+      </tr>
+    </thead>
+    <tbody>
+      {{ range $list }}
+        <tr>
+          {{ range $k, $v := . }}
+            {{ $.Scratch.Set $k $v }}
+          {{ end }}
+          {{ range $k, $v := $fields }}
+            <td>
+              {{ $tdContent := $.Scratch.Get . }}
+              {{ if eq $k 3 }}
+                {{ printf "%v" $tdContent |
+                  strings.ReplaceRE `\[` "<ol><li>" |
+                  strings.ReplaceRE `\s` "</li><li>" |
+                  strings.ReplaceRE `\]` "</li></ol>" |
+                  safeHTML
+                }}
+              {{ else }}
+                {{ $tdContent }}
+              {{ end }}
+            </td>
+          {{ end }}
+        </tr>
+      {{ end }}
+    </tbody>
+  </table>
+</div>
index 12054f89dad3c437b37b2570f92f9ee35a16af4b..f135d841c8a7841fe5c155089f3783a7444d197b 100644 (file)
@@ -4,30 +4,36 @@
 {{ $fields := after 2 .Params }}
 
 
-<table class="table table-bordered">
-  <tr>
-    {{ range $fields }}
-      {{ $s := . }}
-      {{ if eq $s "_key" }}
-        {{ $s = "Type" }}
-      {{ end }}
-      <th>{{ $s }}</th>
-    {{ end }}
-  </tr>
-  {{ range $k1, $v1 := $list }}
-    <tr>
-      {{ range $k2, $v2 := . }}
-        {{ $.Scratch.Set $k2 $v2 }}
-      {{ end }}
-      {{ range $fields }}
-        {{ $s := "" }}
-        {{ if eq . "_key" }}
-          {{ $s = $k1 }}
-        {{ else }}
-          {{ $s = $.Scratch.Get . }}
+<div class="overflow-x-auto">
+  <table>
+    <thead>
+      <tr>
+        {{ range $fields }}
+          {{ $s := . }}
+          {{ if eq $s "_key" }}
+            {{ $s = "type" }}
+          {{ end }}
+          <th>{{ $s }}</th>
         {{ end }}
-        <td>{{ $s }}</td>
+      </tr>
+    </thead>
+    <tbody>
+      {{ range $k1, $v1 := $list }}
+        <tr>
+          {{ range $k2, $v2 := . }}
+            {{ $.Scratch.Set $k2 $v2 }}
+          {{ end }}
+          {{ range $fields }}
+            {{ $s := "" }}
+            {{ if eq . "_key" }}
+              {{ $s = $k1 }}
+            {{ else }}
+              {{ $s = $.Scratch.Get . }}
+            {{ end }}
+            <td>{{ $s }}</td>
+          {{ end }}
+        </tr>
       {{ end }}
-    </tr>
-  {{ end }}
-</table>
+    </tbody>
+  </table>
+</div>
index 0272ea4a69d314ed239777432250edae931013d2..ce2ba389e0ade3cf57a83de21eab5c7247b58ea9 100644 (file)
@@ -1,17 +1,29 @@
-{{ $_hugo_config := `{ "version": 1 }` }}
+{{/* prettier-ignore-start */ -}}
+{{- /*
+Renders a callout indicating the version in which a feature was deprecated.
 
-{{ with .Get 0 }}
-  {{ $version := printf "v%v" (strings.TrimLeft "vV" .) }}
-  {{ $href := printf "https://github.com/gohugoio/hugo/releases/tag/%s" $version }}
-  {{ $text := (printf `Deprecated in <a href="%s">%s</a>.
-%s` $href $version $.Inner) | safeHTML }}
+Include descriptive text between the opening and closing tags, or omit the
+descriptive text and call the shortcode with a self-closing tag.
 
-  {{ partial "layouts/blocks/alert.html" (dict
-  "text" $text
-  "color" "orange"
-  "icon" "exclamation"
-  )
-}}
-{{ else }}
-  {{ errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }}
-{{ end }}
+@param {string} 0 The semantic version string, with or without a leading v.
+
+@example  {{< deprecated-in 0.144.0 />}}
+
+@example  {{< deprecated-in 0.144.0 >}}
+          Some descriptive text here.
+          {{< /deprecated-in >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+{{- with $version := .Get 0 | strings.TrimLeft "vV" }}
+  {{- $href := printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }}
+  {{- $inner := strings.TrimSpace $.Inner }}
+  {{- $text := printf "Deprecated in [v%s](%s)\n\n%s" $version $href $inner | $.Page.RenderString (dict "display" "block") }}
+  {{- partial "layouts/blocks/alert.html" (dict
+    "color" "orange"
+    "icon" "exclamation"
+    "text" $text
+    )
+  }}
+{{- else }}
+  {{- errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }}
+{{- end }}
index c0cf30aec7be3aad025fe1506353221f8807cacf..a0237dbe0d2c327e2e1af1a09890ab264b54087f 100644 (file)
@@ -1,3 +1,4 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
 Renders an absolute URL to the source code for an embedded template.
 
@@ -6,31 +7,20 @@ embedded_templates.toml file in the data directory.
 
 @param {string} filename The embedded template's file name, excluding extension.
 
-@returns template.HTML
-
 @example {{% et robots.txt %}}
 @example {{% et filename=robots.txt %}}
-*/}}
-
-{{- /* Get parameters. */}}
-{{- $filename := "" -}}
-{{- if .IsNamedParams -}}
- {{- $filename = .Get "filename" -}}
-{{- else -}}
- {{- $filename = .Get 0 -}}
-{{- end -}}
-
-{{- /* Render. */}}
-{{- with $filename -}}
-  {{- with site.Data.embedded_template_urls -}}
-    {{- with index . $filename -}}
-      {{- urls.JoinPath site.Data.embedded_template_urls.base_url . -}}
-    {{- else -}}
-      {{- errorf "The %q shortcode was unable to find a URL for the embedded template named %q. Check the name. See %s" $.Name $filename $.Position -}}
-    {{- end -}}
-  {{- else -}}
-    {{- errorf "The %q shortcode was unable to find the embedded_template_urls data file in the site's data directory. See %s" $.Name $.Position -}}
-  {{- end -}}
-{{- else -}}
- {{- errorf "The %q shortcodes requires a named or positional parameter, the file name of the embedded template, excluding its extension. See %s" .Name .Position -}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+{{- with $filename := or (.Get "filename") (.Get 0) }}
+  {{- with site.Data.embedded_template_urls }}
+    {{- with index . $filename }}
+      {{- urls.JoinPath site.Data.embedded_template_urls.base_url . }}
+    {{- else }}
+      {{- errorf "The %q shortcode was unable to find a URL for the embedded template named %q. Check the name. See %s" $.Name $filename $.Position }}
+    {{- end }}
+  {{- else }}
+    {{- errorf "The %q shortcode was unable to find the embedded_template_urls data file in the site's data directory. See %s" $.Name $.Position }}
+  {{- end }}
+{{- else }}
+  {{- errorf "The %q shortcodes requires a named or positional parameter, the file name of the embedded template, excluding its extension. See %s" .Name .Position }}
 {{- end -}}
index 7aace730e3b5a2007baf3fa82055db3b9f6f06cb..2a45dc8cb5b804602fedfcfc82613a36c8a3e966 100644 (file)
@@ -2,16 +2,14 @@
 Renders the definition of the given glossary term.
 
 @param {string} (.Get 0) The glossary term.
-@returns {template.HTML}
 
 @example {{% glossary-term float %}}
 @example {{% glossary-term "floating point" %}}
-*/}}
-
+*/ -}}
 {{- with .Get 0 }}
   {{- $path := printf "/quick-reference/glossary/%s" (urlize .) }}
   {{- with site.GetPage $path }}
-{{ .RenderShortcodes }}&nbsp;{{/* Do not indent. Do not remove non-breaking space. */}}
+{{ .RenderShortcodes }}{{/* Do not indent. */}}
   {{- else }}
     {{- errorf "The glossary term (%s) shortcode was unable to find %s: see %s" $.Name $path $.Position }}
   {{- end }}
index e91be32cef11867275e47a84e0d11e0317ab70ce..7331d5c9f1a414d12c5ad6ca92a1cb536c3d844f 100644 (file)
@@ -2,54 +2,52 @@
 Renders the glossary of terms.
 
 When you call this shortcode using the {{% %}} notation, the glossary terms are
-Markdown headings (level 6) which means they are members of .Page.Fragments.
-This allows the link render hook to verify links to glossary terms.
+Markdown headings (level 6) which means they are members of .Fragments. This
+allows the link render hook to verify links to glossary terms.
 
 Yes, the terms themselves are pages, but we don't want to link to the pages, at
-least not right now. Instead, we want to link to the fragments rendered by this
+least not right now. Instead, we want to link to the ids rendered by this
 shortcode.
 
-@returns {template.HTML}
-
 @example {{% glossary %}}
-*/}}
+*/ -}}
 {{- $path := "/quick-reference/glossary" }}
 {{- with site.GetPage $path }}
 
-    {{- /* Build and render alphabetical index. */}}
-    {{- $m := dict }}
-    {{- range $p := .Pages.ByTitle }}
-      {{- $k := substr .Title 0 1 | strings.ToUpper }}
-      {{- if index $m $k }}
-        {{- continue }}
-      {{- end }}
-      {{- $anchor := path.BaseName .Path | anchorize }}
-      {{- $m = merge $m (dict $k $anchor) }}
+  {{- /* Build and render alphabetical index. */}}
+  {{- $m := dict }}
+  {{- range $p := .Pages.ByTitle }}
+    {{- $k := substr .Title 0 1 | strings.ToUpper }}
+    {{- if index $m $k }}
+      {{- continue }}
     {{- end }}
-    {{- range $k, $v := $m }}
+    {{- $anchor := path.BaseName .Path | anchorize }}
+    {{- $m = merge $m (dict $k $anchor) }}
+  {{- end }}
+  {{- range $k, $v := $m }}
 [{{ $k }}](#{{ $v }})&nbsp;{{/* Do not indent. */}}
-    {{- end }}
+  {{- end }}
 
-    {{- /* Render glossary terms. */}}
-    {{- range $p := .Pages.ByTitle }}
-###### {{ .Title }}{{/* Do not indent. */}}
-{{ .RenderShortcodes }}{{/* Do not indent. */}}
-      {{- with .Params.reference }}
-        {{- $destination := "" }}
-        {{- with $u := urls.Parse . }}
-          {{- if $u.IsAbs }}
-            {{- $destination = $u.String }}
+  {{/* Render glossary terms. */}}
+  {{- range $p := .Pages.ByTitle }}
+{{ .Title }}{{/* Do not indent. */}}
+: {{ .RawContent | strings.TrimSpace | safeHTML }}{{/* Do not indent. */}}
+    {{ with .Params.reference }}
+      {{- $destination := "" }}
+      {{- with $u := urls.Parse . }}
+        {{- if $u.IsAbs }}
+          {{- $destination = $u.String }}
+        {{- else }}
+          {{- with site.GetPage $u.Path }}
+            {{- $destination = .RelPermalink }}
           {{- else }}
-            {{- with site.GetPage $u.Path -}}
-              {{- $destination = .RelPermalink }}
-            {{- else }}
-              {{- errorf "The %q shortcode was unable to find the reference link %s: see %s" $.Name . $p.String }}
-            {{- end }}
+            {{- errorf "The %q shortcode was unable to find the reference link %s: see %s" $.Name . $p.String }}
           {{- end }}
-        {{- end -}}
-&#32;See&nbsp;[details]({{ $destination }}).{{/* Do not indent. */}}
+        {{- end }}
       {{- end }}
+: See&nbsp;[details]({{ $destination }}).{{/* Do not indent. */}}
     {{- end }}
+  {{ end }}
 
 {{- else }}
   {{- errorf "The %q shortcode was unable to get %s: see %s" .Name $path .Position}}
diff --git a/layouts/shortcodes/gomodules-info.html b/layouts/shortcodes/gomodules-info.html
deleted file mode 100644 (file)
index 126d846..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{{ $text := `
-  Most of the commands for **Hugo Modules** require a newer version (>= 1.18) of Go installed (see https://golang.org/dl/) and the relevant VCS client (e.g. Git, see https://git-scm.com/downloads/ ).
-  If you have an "older" site running on Netlify, you may have to set GO_VERSION to 1.19 or newer in your Environment settings.
-
-  For more information about Go Modules, see:
-
-  * https://go.dev/wiki/Modules
-  * https://blog.golang.org/using-go-modules
-  `
-}}
-
-{{ partial "layouts/blocks/alert.html" (dict "title" "Go Modules" "text" ($text | markdownify) "color" "orange" "icon" "exclamation") }}
index 1a5b4e1ec8e26abe321948c50e00c6f8751f0885..3fafcb5e806347572f08436a7b3255f777a39e75 100644 (file)
@@ -1,11 +1,14 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
 Returns syntax-highlighted code from the given text.
 
 This is useful as a terse way to highlight inline code snippets. Calling the
 highlight shortcode for inline snippets is verbose.
-*/}}
 
+@example This is {{< hl python >}}inline{{< /hl >}} code.
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- $code := .Inner | strings.TrimSpace }}
-{{- $lang := or (.Get 0) "go"  }}
+{{- $lang := or (.Get 0) "go" }}
 {{- $opts := dict "hl_inline" true "noClasses" true }}
 {{- transform.Highlight $code $lang $opts }}
index 7c2d805d2c009cd8c194d8779b771788d0b25f8b..60187802e059a7255ba31c72c78a2726be037aca 100644 (file)
@@ -1,90 +1,85 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
 Renders the given image using the given filter, if any.
 
+When using the text filter, provide the arguments in this order:
+
+0. The text
+1. The horizontal offset, in pixels, relative to the left of the image (default 20)
+2. The vertical offset, in pixels, relative to the top of the image (default 20)
+3. The font size in pixels (default 64)
+4. The line height (default 1.2)
+5. The font color (default #ffffff)
+
+When using the padding filter, provide all arguments in this order:
+
+0. Padding top
+1. Padding right
+2. Padding bottom
+3. Padding right
+4. Canvas color
+
 @param {string} src The path to the image which must be a remote, page, or global resource.
 @param {string} [filter] The filter to apply to the image (case-insensitive).
 @param {string} [filterArgs] A comma-delimited list of arguments to pass to the filter.
 @param {bool} [example=false] If true, renders a before/after example.
 @param {int} [exampleWidth=384] Image width, in pixels, when rendering a before/after example.
 
-@returns {template.HTML}
-
-@examples
-
-  {{< img src="zion-national-park.jpg" >}}
-
-  {{< img src="zion-national-park.jpg" alt="Zion National Park" >}}
-
-  {{< img
-    src="zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="grayscale"
-  >}}
-
-  {{< img
-    src="zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="process"
-    filterArgs="resize 400x webp"
-  >}}
-
-  {{< img
-    src="zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="colorize"
-    filterArgs="180,50,20"
-  >}}
-
-  {{< img
-    src="zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="grayscale"
-    example=true
-  >}}
-
-  {{< img
-    src="zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="grayscale"
-    example=true
-    exampleWidth=400
-  >}}
-
-  When using the text filter, provide the arguments in this order:
-
-    0. The text
-    1. The horizontal offset, in pixels, relative to the left of the image (default 20)
-    2. The vertical offset, in pixels, relative to the top of the image (default 20)
-    3. The font size in pixels (default 64)
-    4. The line height (default 1.2)
-    5. The font color (default #ffffff)
-
-  {{< img
-    src="images/examples/zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="Text"
-    filterArgs="Zion National Park,25,250,56"
-    example=true
-  >}}
-
-  When using the padding filter, provide all arguments in this order:
-
-  0. Padding top
-  1. Padding right
-  2. Padding bottom
-  3. Padding right
-  4. Canvas color
-
-  {{< img
-    src="images/examples/zion-national-park.jpg"
-    alt="Zion National Park"
-    filter="Padding"
-    filterArgs="20,50,20,50,#0705"
-    example=true
-  >}}
-
-*/}}
-
+@example  {{< img src="zion-national-park.jpg" >}}
+@example  {{< img src="zion-national-park.jpg" alt="Zion National Park" >}}
+
+@example  {{< img
+            src="zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="grayscale"
+          >}}
+
+@example  {{< img
+            src="zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="process"
+            filterArgs="resize 400x webp"
+          >}}
+
+@example  {{< img
+            src="zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="colorize"
+            filterArgs="180,50,20"
+          >}}
+
+@example  {{< img
+            src="zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="grayscale"
+            example=true
+          >}}
+
+@example  {{< img
+            src="zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="grayscale"
+            example=true
+            exampleWidth=400
+          >}}
+
+@example  {{< img
+            src="images/examples/zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="Text"
+            filterArgs="Zion National Park,25,250,56"
+            example=true
+          >}}
+
+@example  {{< img
+            src="images/examples/zion-national-park.jpg"
+            alt="Zion National Park"
+            filter="Padding"
+            filterArgs="20,50,20,50,#0705"
+            example=true
+          >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- /* Initialize. */}}
 {{- $alt := "" }}
 {{- $src := "" }}
@@ -100,12 +95,12 @@ Renders the given image using the given filter, if any.
   "fontSize" 64
   "lineHeight" 1.2
   "fontColor" "#ffffff"
-  "fontPath" "https://github.com/google/fonts/raw/main/ofl/lato/Lato-Regular.ttf"
+  "fontPath" "https://github.com/google/fonts/raw/refs/heads/main/ofl/lato/Lato-Regular.ttf"
 }}
 
 {{- /* Get and validate parameters. */}}
 {{- with .Get "alt" }}
-  {{- $alt = .}}
+  {{- $alt = . }}
 {{- end }}
 
 {{- with .Get "src" }}
@@ -138,7 +133,7 @@ Renders the given image using the given filter, if any.
 
 {{- if in (slice "false" false 0) (.Get "example") }}
   {{- $example = false }}
-{{- else if in (slice "true" true 1) (.Get "example")}}
+{{- else if in (slice "true" true 1) (.Get "example") }}
   {{- $example = true }}
 {{- end }}
 
@@ -328,17 +323,22 @@ Renders the given image using the given filter, if any.
 {{- end }}
 
 {{- /* Render. */}}
-{{- $class := "di va b--black-20" }}
-{{- if eq $filter "mask" }}
-  {{- $class = "di va" }}
-{{- end }}
+{{- $class := "border-1 border-gray-300 dark:border-gray-500" }}
 {{- if $example }}
   <p>Original</p>
-  <img class="{{ $class}}" style="width: initial;" src="{{ $i.RelPermalink }}" alt="{{ $alt }}">
+  <img
+    class="{{ $class }}"
+    src="{{ $i.RelPermalink }}"
+    alt="{{ $alt }}">
   <p>Processed</p>
-  <img class="{{ $class }}" style="width: initial;" src="{{ $fi.RelPermalink }}" alt="{{ $alt }}">
+  <img
+    class="{{ $class }}"
+    src="{{ $fi.RelPermalink }}"
+    alt="{{ $alt }}">
 {{- else -}}
-  <img class='di' style="width: initial;" src="{{ $fi.RelPermalink }}" alt="{{ $alt }}">
+  <img
+    src="{{ $fi.RelPermalink }}"
+    alt="{{ $alt }}">
 {{- end }}
 
 {{- define "validate-arg-count" }}
@@ -387,5 +387,5 @@ Renders the given image using the given filter, if any.
       {{- end }}
     {{- end }}
   {{- end }}
-  {{- return $r}}
+  {{- return $r }}
 {{- end -}}
index c09133ba8ebbe935b02116b96bde03e1cb1a8ba2..fee48525afb60f6e7a37099e0d9c15f0a5d8dba3 100644 (file)
@@ -1,37 +1,39 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
 Renders the given image using the given process specification.
 
-@param {string} (positional parameter 0) The path to the image, relative to the current page. The image must be a page resource.
-@param {string}} (positional parameter 1) The image processing specification.
+@param {string} path The path to the image, either a page resource or a global resource.
+@param {string} spec The image processing specification.
+@param {string} alt The alt attribute of the img element.
 
-@returns template.HTML
-
-@example {{< imgproc "sunset.jpg" "resize 300x" />}}
-*/}}
-
-{{- with $.Get 0 }}
-  {{- with $i := $.Page.Resources.Get . }}
-    {{- with $spec := $.Get 1 }}
+@example {{< imgproc path="sunset.jpg" spec="resize 300x" alt="A sunset" >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+{{- with $.Get "path" }}
+  {{- with $i := or ($.Page.Resources.Get .) (resources.Get .) }}
+    {{- with $spec := $.Get "spec" }}
       {{- with $i.Process . }}
-        <figure style="padding: 0.25rem; margin: 2rem 0; background-color: #cccc">
-          <img style="max-width: 100%; width: auto; height: auto;" src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
-          <figcaption>
-            <small>
-              {{- with $.Inner }}
-                {{ . }}
-              {{- else }}
-                {{ $spec }}
-              {{- end }}
-            </small>
+        <figure>
+          <img
+            src="{{ .RelPermalink }}"
+            width="{{ .Width }}"
+            height="{{ .Height }}"
+            alt="{{ $.Get `alt` }}">
+          <figcaption class="not-prose text-sm">
+            {{- with $.Inner }}
+              {{ . }}
+            {{- else }}
+              {{ $spec }}
+            {{- end }}
           </figcaption>
         </figure>
       {{- end }}
     {{- else }}
-      {{- errorf "The %q shortcode requires a positional parameter (1) containing the image processing specification. See %s" $.Name $.Position }}
+      {{- errorf "The %q shortcode requires a 'spec' argument containing the image processing specification. See %s" $.Name $.Position }}
     {{- end }}
   {{- else }}
     {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
   {{- end }}
 {{- else }}
-  {{- errorf "The %q shortcode requires a positional parameter (0) indicating the image path, relative to the current page. See %s" $.Name $.Position }}
+  {{- errorf "The %q shortcode requires a 'path' argument indicating the image path. The image must be a page resource or a global resource. See %s" $.Name $.Position }}
 {{- end }}
index b4a20cd72b1a16b2e6303694cec39a97e3c19d88..81b0c1d8f9ab5da89eb8dc59fe6f62d5a7723e01 100644 (file)
@@ -1,20 +1,19 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
 Renders the page using the RenderShortcode method on the Page object.
 
 You must call this shortcode using the {{% %}} notation.
 
 @param {string} (positional parameter 0) The path to the page, relative to the content directory.
-@returns template.HTML
 
 @example {{% include "functions/_common/glob-patterns" %}}
-*/}}
-
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- with .Get 0 }}
   {{- with or ($.Page.GetPage .) (site.GetPage .) }}
     {{- .RenderShortcodes }}
   {{- else }}
-    {{/* TODO1 make error */}}
-    {{- warnf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
+    {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
   {{- end }}
 {{- else }}
   {{- errorf "The %q shortcode requires a positional parameter indicating the path of the file to include. See %s" .Name .Position }}
index 73e7f85a9820a38582ac98c4307292be8657c579..f6dfe72752890d36152b3f94ceb5586ffe250937 100644 (file)
@@ -9,88 +9,61 @@ filter is an array of paths to a file, relative to the root of the content
 directory. Hugo will throw an error if the specified filter does not exist, or
 if any of the pages in the filter do not exist.
 
-The definition term elements (dt) have an id attribute derived from the title
-of the page. This is probably unique, because pages of the same title in the
-same section is unlikely.
-
-If you render a complete list on a page, then call the shortcode again to
-render a subset, you will generate duplicate element ids. In this case, set
-omitElementIDs to true for the subset.
-
 @param {string} path The path to the section.
 @param {string} [filter=""] The name of filter list.
 @param {string} [filterType=""] The type of filter, either include or exclude.
-@param {string} [omitElementIDs=false] Whether to omit dt element ids.
 @param {string} [titlePrefix=""] The string to prepend to the link title.
 
-@returns template.HTML
-
 @example {{< list-pages-in-section path=/methods/resources >}}
 @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}}
 @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}}
-@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo omitElementIDs=true >}}
 */}}
 
-{{- /* Initialize. */}}
-{{- $filter := or "" (.Get "filter" | lower)}}
-{{- $filterType := or (.Get "filterType") "none" | lower }}
-{{- $filteredPages := slice }}
-{{- $titlePrefix := or (.Get "titlePrefix") "" }}
-{{- $omitElementIDs := false }}
-
-{{- /* Get boolean parameters. */}}
-{{- if in (slice "false" false 0) (.Get "omitElementIDs") }}
-  {{- $omitElementIDs = false }}
-{{- else if in (slice "true" true 1) (.Get "omitElementIDs")}}
-  {{- $omitElementIDs = true }}
-{{- end }}
+{{/* Initialize. */}}
+{{ $filter := or "" (.Get "filter" | lower) }}
+{{ $filterType := or (.Get "filterType") "none" | lower }}
+{{ $filteredPages := slice }}
+{{ $titlePrefix := or (.Get "titlePrefix") "" }}
 
-{{/* Build slice of filtered pages. */}}
-{{- with $filter }}
-  {{- with index site.Data.page_filters . }}
-    {{- range . }}
-      {{- with site.GetPage . }}
-        {{- $filteredPages = $filteredPages | append . }}
-      {{- else }}
-        {{- errorf "The %q shortcode was unable to find %q as specified in the page_filters data file. See %s" $.Name . $.Position }}
-      {{- end }}
-    {{- end }}
-  {{- else }}
-    {{- errorf "The %q shortcode was unable to find the %q filter in the page_filters data file. See %s" $.Name . $.Position }}
-  {{- end }}
-{{- end }}
+{{/* Build slice of filtered pages. */}}
+{{ with $filter }}
+  {{ with index site.Data.page_filters . }}
+    {{ range . }}
+      {{ with site.GetPage . }}
+        {{ $filteredPages = $filteredPages | append . }}
+      {{ else }}
+        {{ errorf "The %q shortcode was unable to find %q as specified in the page_filters data file. See %s" $.Name . $.Position }}
+      {{ end }}
+    {{ end }}
+  {{ else }}
+    {{ errorf "The %q shortcode was unable to find the %q filter in the page_filters data file. See %s" $.Name . $.Position }}
+  {{ end }}
+{{ end }}
 
-{{- /* Render */}}
-{{- with $sectionPath := .Get "path" }}
-  {{- with site.GetPage . }}
-    {{- with .RegularPages }}
-      <dl>
-        {{- range $page := .ByTitle }}
-          {{- if or
+{{/* Render. */}}
+{{ with $sectionPath := .Get "path" }}
+  {{ with site.GetPage . }}
+    {{ with .RegularPages }}
+        {{ range $page := .ByTitle }}
+          {{ if or
             (and (eq $filterType "include") (in $filteredPages $page))
             (and (eq $filterType "exclude") (not (in $filteredPages $page)))
             (eq $filterType "none")
           }}
-            {{- $linkTitle := .LinkTitle }}
-            {{- with $titlePrefix }}
-            {{- $linkTitle = printf "%s%s" . $linkTitle }}
-            {{- end }}
-            {{- $idAttribute := "" }}
-            {{- if not $omitElementIDs }}
-              {{- $id := path.Join .File.Dir .File.ContentBaseName | replaceRE `[\|/]` ":" | lower }}
-              {{- $idAttribute = printf " id=%q" $id }}
-            {{- end }}
-            <dt {{- $idAttribute | safeHTMLAttr }}><a href="{{ $page.RelPermalink }}">{{ $linkTitle }}</a></dt>
-            <dd>{{- $page.Description | $page.RenderString }}</dd>
-          {{- end }}
-        {{- end }}
-      </dl>
-    {{- else }}
-      {{- warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }}
-    {{- end }}
-  {{- else }}
-    {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }}
-  {{- end }}
-{{- else }}
-  {{- errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }}
-{{- end }}
+            {{ $linkTitle := .LinkTitle }}
+            {{ with $titlePrefix }}
+              {{ $linkTitle = printf "%s%s" . $linkTitle }}
+            {{ end }}
+[{{ $linkTitle }}]({{ $page.RelPermalink }}){{/* Do not indent. */}}
+: {{ $page.Description }}{{/* Do not indent. */}}
+          {{ end }}
+        {{ end }}
+    {{ else }}
+      {{ warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }}
+    {{ end }}
+  {{ else }}
+    {{ errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }}
+  {{ end }}
+{{ else }}
+  {{ errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }}
+{{ end }}
index c1c67991e1019e8de6e5b905406c18f74ea52717..ba89abcbf3aa0e073e3b91d2d36d217ab6c67602 100644 (file)
@@ -1 +1,2 @@
-Also see [Module Mounts Config](/hugo-modules/configuration/#module-configuration-mounts) for an alternative way to configure this directory.
+For a more flexible approach to configuring this directory, consult the section
+on [module mounts](/configuration/module/#mounts).
index e99cc7bcfc2d806f840a2b1a215b01aeb9a48a1d..955d0a7104b2ddf59a1a7597e22791eb842582bf 100644 (file)
@@ -1,31 +1,31 @@
+{{/* prettier-ignore-start */ -}}
 {{- /*
-  Renders a "new in" button indicating the version in which a feature was added.
+Renders a callout or badge indicating the version in which a feature was added.
 
-  When comparing the current version to the specified version, the "new in"
-  button will be hidden if any of the following conditions is true:
+To render a callout, include descriptive text between the opening and closing
+tags. To render a badge,omit the descriptive text and call the shortcode with a
+self-closing tag.
 
-  - The major version difference exceeds the majorVersionDiffThreshold
-  - The minor version difference exceeds the minorVersionDiffThreshold
+When comparing the current version to the specified version, the "new in"
+button will be hidden if any of the following conditions is true:
 
-  @param {string} version The semantic version string, with or without a leading v.
-  @returns {template.HTML}
+- The major version difference exceeds the majorVersionDiffThreshold
+- The minor version difference exceeds the minorVersionDiffThreshold
 
-  @examples {{< new-in 0.100.0 /
->}}
+@param {string} 0 The semantic version string, with or without a leading v.
 
-{{< new-in 0.100.0 >}}
-Some descriptive text here.
-{{< /new-in >}}
-*/}}
-{{ $_hugo_config := `{ "version": 1 }` }}
+@example  {{< new-in 0.100.0 />}}
 
-{{- /* Set defaults. */}}
+@example  {{{< new-in 0.100.0 >}}
+          Some descriptive text here.
+          {{< /new-in >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
 {{- $majorVersionDiffThreshold := 0 }}
 {{- $minorVersionDiffThreshold := 30 }}
 {{- $displayExpirationWarning := true }}
 
-{{- /* Render. */}}
-{{- with $version := .Get 0 | strings.TrimPrefix "v" }}
+{{- with $version := .Get 0 | strings.TrimLeft "vV" }}
   {{- $majorVersionDiff := sub (index (split hugo.Version ".") 0 | int) (index (split $version ".") 0 | int) }}
   {{- $minorVersionDiff := sub (index (split hugo.Version ".") 1 | int) (index (split $version ".") 1 | int) }}
   {{- if or (gt $majorVersionDiff $majorVersionDiffThreshold) (gt $minorVersionDiff $minorVersionDiffThreshold) }}
@@ -35,14 +35,12 @@ Some descriptive text here.
   {{- else }}
     {{- $href := printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }}
     {{- with $.Inner }}
-      {{ $text := printf `<p class="fon-semibold">New in <a href=%q>v%s</a>.</p>%s`
-        $href $version (. | $.Page.RenderString (dict "display" "block"))
-      }}
-
+      {{- $inner := strings.TrimSpace . }}
+      {{- $text := printf "New in [v%s](%s)\n\n%s" $version $href $inner | $.Page.RenderString (dict "display" "block") }}
       {{ partial "layouts/blocks/alert.html" (dict
-        "text" ($text | safeHTML)
         "color" "green"
         "icon" "exclamation"
+        "text" $text
         )
       }}
     {{- else }}
@@ -62,5 +60,5 @@ Some descriptive text here.
     {{- end }}
   {{- end }}
 {{- else }}
-  {{- errorf "The %q shortcode requires a positional parameter (version). See %s" .Name .Position }}
-{{- end -}}
+  {{- errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }}
+{{- end }}
diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html
deleted file mode 100644 (file)
index b18d53b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{{ $_hugo_config := `{ "version": 1 }` }}
-{{ partial "layouts/blocks/alert.html" (dict
-  "text" .Inner
-  "color" "blue"
-  "icon" "exclamation"
-  )
-}}
diff --git a/layouts/shortcodes/per-lang-config-keys.html b/layouts/shortcodes/per-lang-config-keys.html
new file mode 100644 (file)
index 0000000..f6090d5
--- /dev/null
@@ -0,0 +1,71 @@
+{{/* prettier-ignore-start */ -}}
+{{- /*
+Renders a responsive grid of the configuration keys that can be defined
+separately for each language.
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+{{- $siteConfigKeys := slice
+  (dict "baseURL" "/configuration/all/#baseurl")
+  (dict "buildDrafts" "/configuration/all/#builddrafts")
+  (dict "buildExpired" "/configuration/all/#buildexpired")
+  (dict "buildFuture" "/configuration/all/#buildfuture")
+  (dict "canonifyURLs" "/configuration/all/#canonifyurls")
+  (dict "capitalizeListTitles" "/configuration/all/#capitalizelisttitles")
+  (dict "contentDir" "/configuration/all/#contentdir")
+  (dict "copyright" "/configuration/all/#copyright")
+  (dict "disableAliases" "/configuration/all/#disablealiases")
+  (dict "disableHugoGeneratorInject" "/configuration/all/#disableHugogeneratorinject")
+  (dict "disableKinds" "/configuration/all/#disableKinds")
+  (dict "disableLiveReload" "/configuration/all/#disablelivereload")
+  (dict "disablePathToLower" "/configuration/all/#disablepathtolower")
+  (dict "enableEmoji " "/configuration/all/#enableemoji")
+  (dict "frontmatter" "/configuration/front-matter/")
+  (dict "hasCJKLanguage" "/configuration/all/#hascjklanguage")
+  (dict "languageCode" "/configuration/all/#languagecode")
+  (dict "mainSections" "/configuration/all/#mainsections")
+  (dict "markup" "/configuration/markup/")
+  (dict "mediaTypes" "/configuration/media-types/")
+  (dict "menus" "/configuration/menus/")
+  (dict "outputFormats" "/configuration/output-formats")
+  (dict "outputs" "/configuration/outputs/")
+  (dict "page" "/configuration/page/")
+  (dict "pagination" "/configuration/pagination/")
+  (dict "params" "/configuration/params/")
+  (dict "permalinks" "/configuration/permalinks/")
+  (dict "pluralizeListTitles" "/configuration/all/#pluralizelisttitles")
+  (dict "privacy" "/configuration/privacy/")
+  (dict "refLinksErrorLevel" "/configuration/all/#reflinkserrorlevel")
+  (dict "refLinksNotFoundURL" "/configuration/all/#reflinksnotfoundurl")
+  (dict "related" "/configuration/related-content/")
+  (dict "relativeURLs" "/configuration/all/#relativeurls")
+  (dict "removePathAccents" "/configuration/all/#removepathaccents")
+  (dict "renderSegments" "/configuration/all/#rendersegments")
+  (dict "sectionPagesMenu" "/configuration/all/#sectionpagesmenu")
+  (dict "security" "/configuration/security/")
+  (dict "services" "/configuration/services/")
+  (dict "sitemap" "/configuration/sitemap/")
+  (dict "staticDir" "/configuration/all/#staticdir")
+  (dict "summaryLength" "/configuration/all/#summarylength")
+  (dict "taxonomies" "/configuration/taxonomies/")
+  (dict "timeZone" "/configuration/all/#timezone")
+  (dict "title" "/configuration/all/#title")
+  (dict "titleCaseStyle" "/configuration/all/#titlecasestyle")
+}}
+
+{{- $a := len $siteConfigKeys }}
+{{- $b := math.Ceil (div $a 2.) }}
+{{- $c := math.Ceil (div $a 3.) }}
+
+
+<div
+  class="grid grid-flow-col grid-rows-{{ $a }} sm:grid-rows-{{ $b }} md:grid-rows-{{ $c }} gap-1">
+  {{- range $siteConfigKeys }}
+    {{ range $k, $v := . }}
+      {{ $u := urls.Parse $v }}
+      {{ if not (site.GetPage $u.Path) }}
+        {{ errorf "The %q shorcode was unable to find %s. See %s." $.Name $u.Path $.Position }}
+      {{ end }}
+      <a href="{{ $v | relLangURL }}"><code>{{ $k }}</code></a>
+    {{ end }}
+  {{- end }}
+</div>
index fc53c93bd8f7c26350a79dd1c67b9ba1078a3420..0ac5440369fb461b564ec7f01dc89ac12251054e 100644 (file)
@@ -1,37 +1,28 @@
-{{/*
-Renders the child sections of the given top-level section, listing each child's immediate descendants.
+{{- /*
+Renders the child sections of the given top-level section, listing each child's
+immediate descendants.
 
 @param {string} section The top-level section to render.
-@returns template.HTML
-
-@example {{% quick-reference section="functions" %}}
-*/}}
 
+@example {{% quick-reference section="/functions" %}}
+*/ -}}
 {{ $section := "" }}
 {{ with .Get "section" }}
   {{ $section = . }}
 {{ else }}
-  {{ errorf "The %q shortcodes requires a 'section' parameter. See %s" .Name .Position }}
+  {{ errorf "The %q shortcode requires a 'section' parameter. See %s" .Name .Position }}
 {{ end }}
 
-{{/* Do not change the markdown indentation, and do not remove blank lines. */}}
 {{ with site.GetPage $section }}
   {{ range .Sections }}
-
-## {{ .LinkTitle }}
-{{ .RawContent }}
-
-    {{ range .Pages }}
-      {{ $aliases := "" }}
-      {{ if eq .Section "functions" }}
-        {{ with .Params.action.aliases }}
-          {{ $aliases = delimit . " or " }}
-        {{ end }}
+## {{ .LinkTitle }}{{/* Do not indent. */}}
+{{ .Description }}{{/* Do not indent. */}}
+    {{ .Content }}
+    {{ with .Pages }}
+      {{ range . }}
+[{{ .LinkTitle }}]({{ .RelPermalink }}){{/* Do not indent. */}}
+: {{ .Description }}{{/* Do not indent. */}}
       {{ end }}
-
-[{{ .LinkTitle }}]({{ .RelPermalink }}) {{ with $aliases }}({{ . }}){{ end }}
-: {{ .Description }}
-
     {{ end }}
   {{ end }}
 {{ else }}
diff --git a/layouts/shortcodes/readfile.html b/layouts/shortcodes/readfile.html
deleted file mode 100644 (file)
index 1a7d6a3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-TODO readfile.html
diff --git a/layouts/shortcodes/root-configuration-keys.html b/layouts/shortcodes/root-configuration-keys.html
new file mode 100644 (file)
index 0000000..46a6e07
--- /dev/null
@@ -0,0 +1,45 @@
+{{/* prettier-ignore-start */ -}}
+{{/*
+Renders a comma-separated list of links to the root key configuration pages.
+
+@example {{< root-configuration-keys >}}
+*/ -}}
+{{/* prettier-ignore-end */ -}}
+{{- /* Create scratch map of key:filename. */}}
+{{- $s := newScratch }}
+{{- range $k, $v := site.Data.docs.config }}
+  {{- if or (reflect.IsMap .) (reflect.IsSlice .) }}
+    {{- $s.Set $k ($k | humanize | anchorize) }}
+  {{- end }}
+{{- end }}
+
+{{/* Deprecated. */}}
+{{- $s.Delete "author" }}
+
+{{/* Use mounts instead. */}}
+{{- $s.Delete "staticDir" }}
+{{- $s.Delete "ignoreFiles" }}
+
+{{/* This key is "HTTPCache" not "httpCache". */}}
+{{- $s.Set "HTTPCache" "http-cache" }}
+
+{{/* This key is "frontmatter" not "frontMatter" */}}
+{{- $s.Set "frontmatter" "front-matter" }}
+
+{{/* The page title is "Related content" not "related". */}}
+{{- $s.Set "related" "related-content" }}
+
+{{/* It can be configured as bool or map; we want to show map. */}}
+{{- $s.Set "uglyURLs" "ugly-urls" }}
+
+{{- $links := slice }}
+{{- range $k, $v := $s.Values }}
+  {{- $path := printf "/configuration/%s" $v }}
+  {{- with site.GetPage $path }}
+    {{- $links = $links | append (printf "<a href=%q><code>%s</code></a>" .RelPermalink $k) }}
+  {{- else }}
+    {{- errorf "The %q shortcode was unable to find the page %s. See %s." $.Name $path $.Position }}
+  {{- end }}
+{{- end }}
+
+{{- delimit $links ", " ", and " | safeHTML -}}
diff --git a/layouts/shortcodes/syntax-highlighting-styles.html b/layouts/shortcodes/syntax-highlighting-styles.html
new file mode 100644 (file)
index 0000000..297849c
--- /dev/null
@@ -0,0 +1,70 @@
+{{- /*
+Renders a gallery a Chroma syntax highlighting styles.
+
+@example {{% syntax-highlighting-styles %}}
+*/ -}}
+{{- $examples := slice }}
+
+{{- /* Example: css */}}
+{{- $example := dict "lang" "css" "code" `
+body {
+  font-size: 16px;  /* comment */
+}
+`}}
+{{- $examples = $examples | append $example }}
+
+{{- /* Example: html */}}
+{{- $example = dict "lang" "html" "code" `
+<a href="/about.html">Example</a>  <!-- comment -->
+`}}
+{{- $examples = $examples | append $example }}
+
+{{- /* Example: go-html-template */}}
+{{- $example = dict "lang" "go-html-template" "code" `
+{{ with $.Page.Params.content }}
+  {{ . | $.Page.RenderString }}  {{/* comment */}}
+{{ end }}
+`}}
+{{- $examples = $examples | append $example }}
+
+{{- /* Example: javascript */}}
+{{- $example = dict "lang" "javascript" "code" `
+if ([1,"one",2,"two"].includes(value)){
+  console.log("Number is either 1 or 2.");  // comment
+}
+`}}
+{{- $examples := $examples | append $example }}
+
+{{- /* Example: markdown */}}
+{{- $example = dict "lang" "markdown" "code" `
+{{< figure src="kitten.jpg" >}}
+[example](https://example.org "An example")  <!-- comment -->
+`}}
+{{- $examples := $examples | append $example }}
+
+{{- /* Example: toml */}}
+{{- $example = dict "lang" "toml" "code" `
+[params]
+bool = true  # comment
+string = 'foo'
+`}}
+{{- $examples := $examples | append $example }}
+
+{{- /* Render */}}
+{{- with site.Data.docs.chroma.styles }}
+  {{- range $style := . }}
+
+### {{ $style }} {class="!mt-7 !mb-6"}{{/* Do not indent. */}}
+
+    {{- range $examples }}
+
+{{ .lang }}{{/* Do not indent. */}}
+{class="text-sm !-mt-3 !-mb-5"}{{/* Do not indent. */}}
+
+```{{ .lang }} {noClasses=true style="{{ $style }}"}{{/* Do not indent. */}}
+{{- .code | safeHTML -}}{{/* Do not indent. */}}
+```{{/* Do not indent. */}}
+
+    {{- end }}
+  {{- end }}
+{{- end }}
index 0cd557e7cba4d8595af3dec57922d7e986f8f521..67c146cad4b60137bd865d3b6b2be9b1f965e304 100644 (file)
@@ -3,7 +3,7 @@
   command = "hugo --gc --minify"
 
   [build.environment]
-    HUGO_VERSION = "0.143.1"
+    HUGO_VERSION = "0.145.0"
 
 [context.production.environment]
   HUGO_ENV           = "production"
index 92339ba2543851cae7639729c5aace7cc0103953..24ffc7ff534b5c2105c5acbd5e647d932f506e0d 100644 (file)
@@ -9,14 +9,17 @@
   "author": "",
   "license": "",
   "devDependencies": {
-    "@tailwindcss/cli": "^4.0.0",
-    "@tailwindcss/typography": "^0.5.15",
-    "tailwindcss": "^4.0.0"
+    "@awmottaz/prettier-plugin-void-html": "~1.8.0",
+    "@tailwindcss/cli": "~4.1.0",
+    "@tailwindcss/typography": "~0.5.16",
+    "prettier": "~3.5.3",
+    "prettier-plugin-go-template": "~0.0.15",
+    "tailwindcss": "~4.1.0"
   },
   "dependencies": {
-    "@alpinejs/focus": "^3.14.8",
-    "@alpinejs/persist": "^3.14.8",
-    "@hotwired/turbo": "^8.0.12",
-    "alpinejs": "^3.14.8"
+    "@alpinejs/focus": "~3.14.9",
+    "@alpinejs/persist": "~3.14.9",
+    "@hotwired/turbo": "~8.0.13",
+    "alpinejs": "~3.14.9"
   }
 }
diff --git a/static/browserconfig.xml b/static/browserconfig.xml
deleted file mode 100644 (file)
index 62400c5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
-    <msapplication>
-        <tile>
-            <square150x150logo src="images/favicons/mstile-150x150.png"/>
-            <square310x310logo src="images/favicons/mstile-310x310.png"/>
-            <TileColor>#2d89ef</TileColor>
-        </tile>
-    </msapplication>
-</browserconfig>