Skip to content

multilingual: Drafting term in other language hides it in default language #14031

@jmooring

Description

@jmooring

Setting draft to true on a term page in a non-default language hides the term page in the default language.

integration test
// Issue 14031
func TestIssue14031(t *testing.T) {
	t.Parallel()

	files := `
-- hugo.toml --
disableKinds = ['home','rss','section','sitemap']
capitalizeListTitles = false
pluralizeListTitles = false
defaultContentLanguage = 'en'
defaultContentLanguageInSubdir = true
[languages.en]
weight = 1
[languages.fr]
weight = 2
[taxonomies]
tag = 'tags'
-- content/p1.en.md --
---
title: P1 (en)
tags: [a,b]
---
-- content/p1.fr.md --
---
title: P1 (fr)
tags: [a,b]
---
-- content/tags/a/_index.en.md --
---
title: a (en)
---
-- content/tags/a/_index.fr.md --
---
title: a (fr)
---
-- content/tags/b/_index.en.md --
---
title: b (en)
---
-- content/tags/b/_index.fr.md --
---
title: b (fr)
draft: false
---
-- layouts/page.html --
PAGE_TITLE: {{ .Title }}|
{{- range .GetTerms "tags" -}}
TERM_TITLE: {{ .Title }} TERM_RELPERMALINK: {{ .RelPermalink }}|
{{- end -}}
-- layouts/taxonomy.html --
TAXONOMY_TITLE: {{ .Title }}|
{{- range .Pages -}}
TERM_TITLE: {{ .Title }} TERM_RELPERMALINK: {{ .RelPermalink }}|
{{- end -}}
-- layouts/term.html --
TERM_TITLE: {{ .Title }}|
{{- range .Pages -}}
PAGE_TITLE: {{ .Title }} PAGE_RELPERMALINK: {{ .RelPermalink }}|
{{- end -}}
`

	b := hugolib.Test(t, files)

	b.AssertFileExists("public/en/tags/a/index.html", true)
	b.AssertFileExists("public/fr/tags/a/index.html", true)
	b.AssertFileExists("public/en/tags/b/index.html", true)
	b.AssertFileExists("public/fr/tags/b/index.html", true)

	b.AssertFileContentEquals("public/en/p1/index.html",
		"PAGE_TITLE: P1 (en)|TERM_TITLE: a (en) TERM_RELPERMALINK: /en/tags/a/|TERM_TITLE: b (en) TERM_RELPERMALINK: /en/tags/b/|",
	)
	b.AssertFileContentEquals("public/fr/p1/index.html",
		"PAGE_TITLE: P1 (fr)|TERM_TITLE: a (fr) TERM_RELPERMALINK: /fr/tags/a/|TERM_TITLE: b (fr) TERM_RELPERMALINK: /fr/tags/b/|",
	)
	b.AssertFileContentEquals("public/en/tags/index.html",
		"TAXONOMY_TITLE: tags|TERM_TITLE: a (en) TERM_RELPERMALINK: /en/tags/a/|TERM_TITLE: b (en) TERM_RELPERMALINK: /en/tags/b/|",
	)
	b.AssertFileContentEquals("public/fr/tags/index.html",
		"TAXONOMY_TITLE: tags|TERM_TITLE: a (fr) TERM_RELPERMALINK: /fr/tags/a/|TERM_TITLE: b (fr) TERM_RELPERMALINK: /fr/tags/b/|",
	)
	b.AssertFileContentEquals("public/en/tags/a/index.html",
		"TERM_TITLE: a (en)|PAGE_TITLE: P1 (en) PAGE_RELPERMALINK: /en/p1/|",
	)
	b.AssertFileContentEquals("public/fr/tags/a/index.html",
		"TERM_TITLE: a (fr)|PAGE_TITLE: P1 (fr) PAGE_RELPERMALINK: /fr/p1/|",
	)
	b.AssertFileContentEquals("public/en/tags/b/index.html",
		"TERM_TITLE: b (en)|PAGE_TITLE: P1 (en) PAGE_RELPERMALINK: /en/p1/|",
	)
	b.AssertFileContentEquals("public/fr/tags/b/index.html",
		"TERM_TITLE: b (fr)|PAGE_TITLE: P1 (fr) PAGE_RELPERMALINK: /fr/p1/|",
	)

	// Set draft to true on content/tags/b/_index.fr.md.
	files = strings.ReplaceAll(files, "draft: false", "draft: true")

	b = hugolib.Test(t, files)

	b.AssertFileExists("public/en/tags/a/index.html", true)
	b.AssertFileExists("public/fr/tags/a/index.html", true)
	b.AssertFileExists("public/en/tags/b/index.html", true)
	b.AssertFileExists("public/fr/tags/b/index.html", false)

	// The assertion below fails.
	// Got: PAGE_TITLE: P1 (en)|TERM_TITLE: a (en) TERM_RELPERMALINK: /en/tags/a/|
	b.AssertFileContentEquals("public/en/p1/index.html",
		"PAGE_TITLE: P1 (en)|TERM_TITLE: a (en) TERM_RELPERMALINK: /en/tags/a/|TERM_TITLE: b (en) TERM_RELPERMALINK: /en/tags/b/|",
	)
	b.AssertFileContentEquals("public/fr/p1/index.html",
		"PAGE_TITLE: P1 (fr)|TERM_TITLE: a (fr) TERM_RELPERMALINK: /fr/tags/a/|",
	)
	b.AssertFileContentEquals("public/en/tags/index.html",
		"TAXONOMY_TITLE: tags|TERM_TITLE: a (en) TERM_RELPERMALINK: /en/tags/a/|TERM_TITLE: b (en) TERM_RELPERMALINK: /en/tags/b/|",
	)
	b.AssertFileContentEquals("public/fr/tags/index.html",
		"TAXONOMY_TITLE: tags|TERM_TITLE: a (fr) TERM_RELPERMALINK: /fr/tags/a/|",
	)
	b.AssertFileContentEquals("public/en/tags/a/index.html",
		"TERM_TITLE: a (en)|PAGE_TITLE: P1 (en) PAGE_RELPERMALINK: /en/p1/|",
	)
	b.AssertFileContentEquals("public/fr/tags/a/index.html",
		"TERM_TITLE: a (fr)|PAGE_TITLE: P1 (fr) PAGE_RELPERMALINK: /fr/p1/|",
	)
	// The assertion below fails.
	// Got: TERM_TITLE: b (en)|
	b.AssertFileContentEquals("public/en/tags/b/index.html",
		"TERM_TITLE: b (en)|PAGE_TITLE: P1 (en) PAGE_RELPERMALINK: /en/p1/|",
	)
}

Reference: https://discourse.gohugo.io/t/setting-draft-in-secondary-language-tag-term-unpublishing-pages/56056/5

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions