hugolib: Exclude non-linkable pages from translations map

Fixes #9073
This commit is contained in:
Joe Mooring 2022-12-22 08:19:24 -08:00 committed by Bjørn Erik Pedersen
parent 59af05cabc
commit 37ab1cf12a
2 changed files with 85 additions and 1 deletions

View file

@ -0,0 +1,84 @@
// Copyright 2022 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package hugolib_test
import (
"testing"
"github.com/gohugoio/hugo/hugolib"
)
// Issue 9073
func TestPageTranslationsMap(t *testing.T) {
t.Parallel()
files := `
-- config.toml --
baseURL = 'https://example.org/'
title = 'Issue-9073'
defaultContentLanguageInSubdir = true
[taxonomies]
tag = 'tags'
[languages.en]
contentDir = 'content/en'
weight = 1
disableKinds = ['RSS','sitemap']
[languages.de]
contentDir = 'content/de'
weight = 2
disableKinds = ['home', 'page', 'section', 'taxonomy', 'term','RSS','sitemap']
-- content/de/posts/p1.md --
---
title: P1
tags: ['T1']
---
-- content/en/posts/p1.md --
---
title: P1
tags: ['T1']
---
-- layouts/_default/single.html --
<ul>{{ range .AllTranslations }}<li>{{ .Title }}-{{ .Lang }}</li>{{ end }}</ul>
-- layouts/_default/list.html --
<ul>{{ range .AllTranslations }}<li>{{ .Title }}-{{ .Lang }}</li>{{ end }}</ul>
`
b := hugolib.NewIntegrationTestBuilder(
hugolib.IntegrationTestConfig{
T: t,
TxtarString: files,
},
)
b.Build()
b.AssertFileContent("public/en/posts/index.html",
"<ul><li>Posts-en</li></ul>",
)
b.AssertFileContent("public/en/posts/p1/index.html",
"<ul><li>P1-en</li></ul>",
)
b.AssertFileContent("public/en/tags/index.html",
"<ul><li>Tags-en</li></ul>",
)
b.AssertFileContent("public/en/tags/t1/index.html",
"<ul><li>T1-en</li></ul>",
)
b.AssertFileContent("public/en/index.html",
"<ul><li>Issue-9073-en</li></ul>",
)
}

View file

@ -21,7 +21,7 @@ func pagesToTranslationsMap(sites []*Site) map[string]page.Pages {
out := make(map[string]page.Pages)
for _, s := range sites {
s.pageMap.pageTrees.Walk(func(ss string, n *contentNode) bool {
s.pageMap.pageTrees.WalkLinkable(func(ss string, n *contentNode) bool {
p := n.p
// TranslationKey is implemented for all page types.
base := p.TranslationKey()