I’m trying to access the documents in the v* folders like so:
{{- $xVersion := index (findRE `v\d+\.\d+\.x` .RelPermalink) 0 }}
{{- $docs := where .Site.RegularPages "Section" $xVersion }}
source: containerd.io/themes/containerd/layouts/partials/docs/sidebar.html at doc_hosting · haddscot/containerd.io · GitHub
content/docs structure:
/Users/haddscot/workplace/containerd.io % tree content/docs
content/docs
├── _index.md
├── architecture.md
├── getting-started.md
├── v1.2.x
│ ├── _index.md
│ └── docs
│ ├── ...
├── v1.3.x
│ ├── _index.md
│ └── docs
│ ├── ...
├── v1.4.x
│ ├── _index.md
│ └── docs
│ ├── ...
├── v1.5.x
│ ├── _index.md
│ └── docs
│ ├── ...
├── v1.6.x
│ ├── _index.md
│ └── docs
│ ├── ...
└── v1.7.x
├── _index.md
└── docs
├── ...
… however, the where call is returning nothing. I thought that having an _index.md file in a directory made it a section?
I tried replacing the search argument with “docs/1.7.x”, “1.7.x”, etc. but I can’t get $docs to populate.
Use the like operator with the where function. See documentation .
thanks for replying so fast. however I’m still returning no results:
{{- $docs := where .Site.RegularPages "Section" "like" `v1\.7\.x` }}
returns:
{{- $docs := where .Site.RegularPages "Section" "like" `docs` }}
returns:
[see next reply – new users can only post one image per post I guess]
.Section refers to the top level section. Look at .CurrentSection.
https://gohugo.io/methods/page/currentsection/
{{- $docs := where .Site.RegularPages "Section" .CurrentSection }} still returns nothing, whereas {{- $docs := where .Site.RegularPages "Section" .Section }} returns everything under content/docs/
when I read the value of {{ .CurrentSection }} from the URL http://localhost:1313/docs/v1.7.x/docs/getting-started/ I get Page(/docs/v1.7.x), but when I read {{ .Section }} it just returns docs. is the issue that I need the /docs/v1.7.x unwrapped from the Page()? why would .CurrentSection return a different type from .Section?
If you look at the docs, CurrentSection returns a page reference, while Section returns a string. So you need to compare to a string.
{{ range where site.RegularPages "CurrentSection.Path" "like" `/docs/v\d+\.\d+\.x` }}
Something like the above should work.
You can always work your way there by testing things out:
{{ range site.RegularPages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ .CurrentSection.Path }}
{{ .CurrentSection.Title }}
{{ .CurrentSection.File.Dir }}
etc.
{{ end }}
I got it to work with
{{- $docs := where site.RegularPages "CurrentSection.Path" (printf "%s%s" "/docs/" $xVersion) }}
thanks a ton.
system
Closed
March 9, 2024, 7:22pm
9
This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.