diff options
Diffstat (limited to 'output')
-rw-r--r-- | output/layout.go | 14 | ||||
-rw-r--r-- | output/layout_test.go | 9 |
2 files changed, 21 insertions, 2 deletions
diff --git a/output/layout.go b/output/layout.go index f83490d81..2483093b0 100644 --- a/output/layout.go +++ b/output/layout.go @@ -35,6 +35,12 @@ type LayoutDescriptor struct { Kind string Lang string Layout string + + // Any potential type set in the page's current section and the root section + // it lives in. + TypeFirstSection string + TypeCurrentSection string + // LayoutOverride indicates what we should only look for the above layout. LayoutOverride bool } @@ -127,6 +133,14 @@ func resolvePageTemplate(d LayoutDescriptor, f Format) []string { b.addTypeVariations(d.Type) } + if d.TypeCurrentSection != "" { + b.addTypeVariations(d.TypeCurrentSection) + } + + if d.TypeFirstSection != "" { + b.addTypeVariations(d.TypeFirstSection) + } + switch d.Kind { case "page": b.addLayoutVariations("single") diff --git a/output/layout_test.go b/output/layout_test.go index 4b958e9ff..6754ddb39 100644 --- a/output/layout_test.go +++ b/output/layout_test.go @@ -90,8 +90,13 @@ func TestLayout(t *testing.T) { []string{"_default/mylayout.amp.html", "_default/single.amp.html", "_default/mylayout.html", "_default/single.html"}, 4}, {"Page with layout and type", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype"}, "", ampType, []string{"myttype/mylayout.amp.html", "myttype/single.amp.html", "myttype/mylayout.html"}, 8}, - {"Page with layout and type with subtype", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype/mysubtype"}, "", ampType, - []string{"myttype/mysubtype/mylayout.amp.html", "myttype/mysubtype/single.amp.html", "myttype/mysubtype/mylayout.html"}, 8}, + {"Page with layout and type with subtype", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype/mysubtype", TypeCurrentSection: "cst"}, "", ampType, + []string{"myttype/mysubtype/mylayout.amp.html", "myttype/mysubtype/single.amp.html", "myttype/mysubtype/mylayout.html"}, 12}, + {"Page with type in section", LayoutDescriptor{Kind: "page", TypeCurrentSection: "cst"}, "", ampType, + []string{"cst/single.amp.html", "cst/single.html", "_default/single.amp.html", "_default/single.html"}, 4}, + {"Page with type in root section", LayoutDescriptor{Kind: "page", TypeFirstSection: "cst"}, "", ampType, + []string{"cst/single.amp.html", "cst/single.html", "_default/single.amp.html", "_default/single.html"}, 4}, + // RSS {"RSS Home", LayoutDescriptor{Kind: "home"}, "", RSSFormat, []string{"index.rss.xml", "home.rss.xml", "rss.xml"}, 15}, |