From 40fea59c8b5474ccc60750bed159032b2a55ca28 Mon Sep 17 00:00:00 2001 From: Patrick Kollitsch Date: Sun, 9 Feb 2025 16:52:52 +0700 Subject: [PATCH] theme(fix): rework of the way the main sections for index.html are calculated the following is a draft for the release page that should explain most of it: * Index page: the way main sections were evaluated was unclear and probably changed much from the original design in GoHugo. This has been fixed and the main sections are now evaluated in a more consistent way. This might affect what is shown on your website, so open a discussion if you see something wrong and try to explain exactly what you expected to see in sense of included posts and order of those posts. The old way did this: check all configured main sections (or post, if nothing is set) > range through the section and display the first n+m posts (n = number of full previews, m = number of title previews only). The new way does this: load all posts in the main sections > range through the collection and display the first n+m posts (n = number of full previews, m = number of title previews only). Basically, the old way took every single section you configured and displayed them separate, the new way takes all posts from all sections and displays them in one list. This is more consistent and should be more predictable for you as a user. It's also the way it was intended to work from the beginning according to the documentation. closes #686 Signed-off-by: Patrick Kollitsch --- exampleSite/config.toml | 2 ++ layouts/index.html | 67 +++++++++++++++-------------------------- 2 files changed, 27 insertions(+), 42 deletions(-) diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 8be3166..fd28510 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -7,6 +7,7 @@ defaultContentLanguage = "en" sectionPagesMenu = "main" enableRobotsTXT = true + [services.googleAnalytics] id = '' @@ -32,6 +33,7 @@ priority = 0.5 filename = "sitemap.xml" [params] +mainSections = ["post"] text_color = "" author = "Victor Hugo" # default author, override via `author` in a posts front matter favicon = "" diff --git a/layouts/index.html b/layouts/index.html index 123cf3d..9277f6b 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,39 +1,28 @@ {{ define "main" }}
- {{ .Content }} -
- {{/* Define a section to pull recent posts from. For Hugo 0.20 this will default to the section with the most number of pages. */}} - {{ $mainSections := .Site.Params.mainSections | default (slice "post") }} - {{ $show_recent_posts := site.Params.ananke.show_recent_posts }} - - {{/* Check to see if the section is defined for ranging through it */}} - {{range ($mainSections)}} - {{/* Derive the section name */}} - {{ $section_name := . }} - {{/* Create a variable with that section to use in multiple places. */}} - {{ $section := where $.Site.RegularPages "Section" "in" $section_name }} - {{ $section_count := len $section }} - {{ if and ($show_recent_posts) (ge $section_count 1) }} -
- {{/* Use $section_name to get the section title. Use "with" to only show it if it exists */}} - {{ with $.Site.GetPage "section" $section_name }} -

- {{ $.Param "recent_copy" | default (i18n "recentTitle" .) }} -

- {{ end }} + {{ .Content }} + - {{ $n_posts := $.Param "recent_posts_number" | default 3 }} + {{/* Define a section to pull recent posts from. For Hugo 0.20 this will default to the section with the most number of pages. */}} + {{ $mainSections := site.Params.mainSections | default (slice "post") }} + {{ $show_recent_posts := site.Params.ananke.show_recent_posts }} + {{ $section := where $.Site.RegularPages "Section" "in" $mainSections }} + {{ $section_count := len $section }} -
- {{/* Range through the first $n_posts items of the section */}} - {{ range (first $n_posts $section) }} -
- {{ .Render "summary-with-image" }} -
- {{ end }} -
+ {{ if and ($show_recent_posts) (ge $section_count 1) }} +
+ {{ $n_posts := $.Param "recent_posts_number" | default 3 }} - {{ if ge $section_count (add $n_posts 1) }} +
+ {{/* Range through the first $n_posts items of the section */}} + {{ range (first $n_posts $section) }} +
+ {{ .Render "summary-with-image" }} +
+ {{ end }} +
+ + {{ if ge $section_count (add $n_posts 1) }}

{{ i18n "more" }}

{{/* Now, range through the next four after the initial $n_posts items. Nest the requirements, "after" then "first" on the outside */}} @@ -44,16 +33,10 @@ {{ end }} +
+ {{ end }} - {{/* As above, Use $section_name to get the section title, and URL. Use "with" to only show it if it exists */}} - {{ with $.Site.GetPage "section" $section_name }} - {{ i18n "allTitle" . }} - {{ end }} - - {{ end }} - -
- {{ end }} +
{{ end }} -{{end}} - +{{ end }} +