Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cascade property affects the next page with similar name #12465

Closed
tobias-sundermann opened this issue May 6, 2024 · 5 comments · Fixed by #13305
Closed

Cascade property affects the next page with similar name #12465

tobias-sundermann opened this issue May 6, 2024 · 5 comments · Fixed by #13305

Comments

@tobias-sundermann
Copy link

tobias-sundermann commented May 6, 2024

What version of Hugo are you using (hugo version)?

$ hugo v0.122.0-b9a03bd59d5f71a529acb3e33f995e0ef332b3aa+extended windows/amd64

Tested versions:
Hugo extended windows-amd64 versions 0.123.0 - 0.125.6

Does this issue reproduce with the latest release?

Yes

Bug description

Cascade property affects the next page with similar name.
We use cascade in one of our pages (/team) to prevent rendering its children separately. But the cascade property affects the next following page (/teams).

File setup

/content
├ /de
│├ /...
│├ /team (List of our employees)
││├ /employee_1
│││└ index.md
││├ /...
││└ _index.md
│├ /teams (Articles about Microsoft Teams)
││├ /article_1
│││└ index.md
││├ /...
││└ _index.md
│├ /...
...

Code

/content/de/team/_index.md:

...
cascade:
    _build:
        render: never
_build:
    render: always
---

Tests

  1. Renaming the folder "/teams" to "/xteams"
    → "/xteams" was rendered
  2. Put the same cascade properties pages where the next page had an similar name
    → E.g. cascade properties were added to "/microsoft" and the next page ("microsoft-365") wasn't rendered anymore

Conclusion

Cascade should only affect children of an page.
→ /page/...
But cascade affect every page where the name starts with the name of the page with the cascade properties.
→ /page...

@jmooring
Copy link
Member

jmooring commented May 6, 2024

This problem was introduced in v0.123.0. Failing test:

func TestFoo(t *testing.T) {
	t.Parallel()

	files := `
-- hugo.toml --
disableKinds = ['home','rss','sitemap','taxonomy','term']
-- layouts/_default/list.html --
{{ .Title }}
-- layouts/_default/single.html --
{{ .Title }}
-- content/s/_index.md --
---
title: s
cascade:
  _build:
    render: never
---
-- content/s/p1.md --
---
title: p1
---
-- content/sx/_index.md --
---
title: sx
---
-- content/sx/p2.md --
---
title: p2
---
`

	b := hugolib.Test(t, files)

	b.AssertFileExists("public/s/index.html", false)
	b.AssertFileExists("public/s/p1/index.html", false)

	b.AssertFileExists("public/sx/index.html", true)    // failing
	b.AssertFileExists("public/sx/p2/index.html", true) // failing
}

@jmooring
Copy link
Member

jmooring commented May 6, 2024

@tobias-sundermann

You can work around this by removing the cascade from matter, and specify the cascade in your site configuration instead:

[[cascade]]
[cascade.build]
render = 'never'
[cascade._target]
path = '{/s,/s/**}'

This will suppress rendering of all pages in the given section, including the section page itself.

@bep
Copy link
Member

bep commented Jan 24, 2025

@mapangalee a progress will be indicated by e.g. a PR referencing this issue or that this issue is marked as closed/solved.

Please don't edit your comment to make the notification to reappear in my feed. While that technically works, it's not particulary motivating.

bep added a commit to bep/hugo that referenced this issue Jan 24, 2025
@bep bep closed this as completed in bb7b3d3 Jan 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants
@jmooring @bep @tobias-sundermann and others
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy