mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-15 20:44:01 +02:00
layout: Respect Type and Layout for list template selection
This commit also has some other nice side-effects: * The layout logic is unified for all page types, which should make it less surprising * Page.Render now supports all types * The legacy "indexes" type is removed from the template lookup order. This is an undocumented type from early Hugo days. This means that having a template in, say, `/layouts/indexes/list.html` will no longer work. * The theme override logic is improved. As an example, an `index.html` in theme will now wn over a `_default/list.html` in the project, which most will expect. Fixes #3005 Fixes #3245
This commit is contained in:
@@ -37,27 +37,26 @@ func createLayoutExamples() interface{} {
|
||||
)
|
||||
|
||||
for _, example := range []struct {
|
||||
name string
|
||||
d LayoutDescriptor
|
||||
hasTheme bool
|
||||
layoutOverride string
|
||||
f Format
|
||||
name string
|
||||
d LayoutDescriptor
|
||||
hasTheme bool
|
||||
f Format
|
||||
}{
|
||||
{`AMP home, with theme "demoTheme".`, LayoutDescriptor{Kind: "home"}, true, "", AMPFormat},
|
||||
{`AMP home, French language".`, LayoutDescriptor{Kind: "home", Lang: "fr"}, false, "", AMPFormat},
|
||||
{"RSS home, no theme.", LayoutDescriptor{Kind: "home"}, false, "", RSSFormat},
|
||||
{"JSON home, no theme.", LayoutDescriptor{Kind: "home"}, false, "", JSONFormat},
|
||||
{fmt.Sprintf(`CSV regular, "layout: %s" in front matter.`, demoLayout), LayoutDescriptor{Kind: "page", Layout: demoLayout}, false, "", CSVFormat},
|
||||
{fmt.Sprintf(`JSON regular, "type: %s" in front matter.`, demoType), LayoutDescriptor{Kind: "page", Type: demoType}, false, "", JSONFormat},
|
||||
{"HTML regular.", LayoutDescriptor{Kind: "page"}, false, "", HTMLFormat},
|
||||
{"AMP regular.", LayoutDescriptor{Kind: "page"}, false, "", AMPFormat},
|
||||
{"Calendar blog section.", LayoutDescriptor{Kind: "section", Section: "blog"}, false, "", CalendarFormat},
|
||||
{"Calendar taxonomy list.", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, false, "", CalendarFormat},
|
||||
{"Calendar taxonomy term.", LayoutDescriptor{Kind: "taxonomyTerm", Section: "tag"}, false, "", CalendarFormat},
|
||||
{`AMP home, with theme "demoTheme".`, LayoutDescriptor{Kind: "home"}, true, AMPFormat},
|
||||
{`AMP home, French language".`, LayoutDescriptor{Kind: "home", Lang: "fr"}, false, AMPFormat},
|
||||
{"RSS home, no theme.", LayoutDescriptor{Kind: "home"}, false, RSSFormat},
|
||||
{"JSON home, no theme.", LayoutDescriptor{Kind: "home"}, false, JSONFormat},
|
||||
{fmt.Sprintf(`CSV regular, "layout: %s" in front matter.`, demoLayout), LayoutDescriptor{Kind: "page", Layout: demoLayout}, false, CSVFormat},
|
||||
{fmt.Sprintf(`JSON regular, "type: %s" in front matter.`, demoType), LayoutDescriptor{Kind: "page", Type: demoType}, false, JSONFormat},
|
||||
{"HTML regular.", LayoutDescriptor{Kind: "page"}, false, HTMLFormat},
|
||||
{"AMP regular.", LayoutDescriptor{Kind: "page"}, false, AMPFormat},
|
||||
{"Calendar blog section.", LayoutDescriptor{Kind: "section", Section: "blog"}, false, CalendarFormat},
|
||||
{"Calendar taxonomy list.", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, false, CalendarFormat},
|
||||
{"Calendar taxonomy term.", LayoutDescriptor{Kind: "taxonomyTerm", Section: "tag"}, false, CalendarFormat},
|
||||
} {
|
||||
|
||||
l := NewLayoutHandler(example.hasTheme)
|
||||
layouts, _ := l.For(example.d, example.layoutOverride, example.f)
|
||||
layouts, _ := l.For(example.d, example.f)
|
||||
|
||||
basicExamples = append(basicExamples, Example{
|
||||
Example: example.name,
|
||||
|
Reference in New Issue
Block a user