親セッションに子セッションの一覧を表示したい

現在、セッションをカテゴリ分けのようにして利用しています。
各カテゴリのトップではリストを表示することができているのですが、blogのlist表示ができません。
条件わけでblogセッション指定でlistを表示しようとしたのですが、ページネーションがうまく表示できず(カテゴリの方はうまく動いている)。
どうぞよろしくお願いします。

/content

/blog
  /_index.md ×
  /1.md
  /category1
    /_index.md  ◯
    /2.md
  /category2
    /_index.md  ◯
    /3.md

/layouts/blog/list.html

{{ if .Params.categories }}
  {{ range (.Paginator 5).Pages }}
    {{ .Title }}
 {{ end }}
{{ else }}
  {{ range first 5 (where $.Site.RegularPages "Section" "blog") }}
    {{ .Title }}
  {{ end }}
{{ end }}

(すでに英語にて質問しています。Original

layouts/blog/list.html

{{ range .Sections.ByWeight }}
  {{ print .Title }}
{{ end }}

とりあえず Section 一覧はこんな感じで取得できませんか?

Pagination は組み込みのものを使うと簡単です。

{{ range .Sections.ByWeight }}
  {{ print .Title }}
{{ end }}

{{ template "_internal/pagination.html" . }}
1 Like

ありがとうございます。
すみません、セッション一覧という言葉が間違っていました。
blogでカテゴリすべての記事一覧を作成したいということでした汗
よろしくお願いします。

/blog/indexでは 1,2,3
/blog/category1では 2
/blog/category2では 3
という一覧

なるほど、でしたら次はどうでしょうか。

<!-- layouts/blog/list.html -->
{{ range .Site.Sections }}
  {{ print .Title }}
  {{ range .Pages }}
    {{ .Title }}
  {{ end }}
{{ end }}
Category 1 のタイトル
  ページ 2 のタイトル
Category 2 のタイトル
  ページ 3 のタイトル

のようにして一覧を出せるので、あとは .Permalink でリンクを取得して <li> などのタグを打てばいい感じになるかと思います。

1 Like
{{ range .Site.Sections }}
  {{ range .Pages }}
    {{ range .Pages }}
      {{ .Title }}
    {{ end }}
  {{ end }}
{{ end }}

ありがとうございます!
ページのみのタイトルで良かったのと、1段階階層を深くしたところ、想像したものができました。
無事一覧を表示することができました!

ページネーション についてなのですが、 {{ range .Pages }}{{ range (.Paginator 5).Pages }} に置き換えたりしてみたのですがうまくいかず、どこを変更するとページネーションとして機能するのかわからないのですが、教えていただけますか?

全記事の一覧 /blog にページネーションを付けたいのであれば、今のやり方 (.Site.Sections を参照すること) を捨てないと無理だと思います。/blog で単純にブログ全体の記事を一覧表示するようにすれば (カテゴリを無視して) ページネーションが使えます。一番最初のやり方 {{ range (.Paginator 5).Pages }} ですね。

1 Like

ありがとうございます。
{{ range (.Paginator 5).Pages }} を用いるしかないということですが、僕のコードでは何も表示されないのですが、間違いを教えていただければ幸いです。

こちらの記事を少しいじり、解決することができました。
https://noi-labo.com/nested-category-in-hugo/#all-article-list

<!-- layouts/blog/list.html -->
     {{$indexScratch := newScratch}}
     {{$indexScratch.Set "articleList" .Pages}}
     {{ range .Sections.Reverse}}
       {{ $indexScratch.Add "articleList" .Pages}}
     {{ end }}
     {{ $paginator := .Paginate (where ($indexScratch.Get "articleList") "Type" "!=" "page").ByDate.Reverse }}
     {{ range $paginator.Pages}}
       {{ .Title }}
     {{ end }}
     {{ $indexScratch.Delete "articleList"}}
     {{ partial "pagenation.html" . }}

<!-- content/blog/categoryX/index.md -->
     ---
     title: "カテゴリX"
     categories: ["categoryX"]
     type: "page"
     ---

<!-- config.toml -->
     paginate = 5
1 Like