From 0987e98db368611ceae6e83f14bbf57b8330c110 Mon Sep 17 00:00:00 2001 From: Jonathan Anderson Date: Thu, 18 Jun 2015 22:59:08 -0230 Subject: [PATCH] Add support for baseof.ace templates in themes. When we find a template that requires a base template, we should also look for that base template in the current theme. Fixes #1215. --- docs/content/templates/ace.md | 2 ++ tpl/template.go | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/content/templates/ace.md b/docs/content/templates/ace.md index bd13f592e..397def3e1 100644 --- a/docs/content/templates/ace.md +++ b/docs/content/templates/ace.md @@ -35,6 +35,8 @@ In Hugo the base template will be chosen in the following order: 2. /baseof.ace 3. _default/-baseof.ace, e.g. list-baseof.ace. 4. _default/baseof.ace +5. /layouts/_default/-baseof.ace +6. /layouts/_default/baseof.ace ``` In the above, `current-path` is where the corresponding inner template lives, `list.ace`, `single.ace`, `index.ace` ... diff --git a/tpl/template.go b/tpl/template.go index 15c1f794d..7740850eb 100644 --- a/tpl/template.go +++ b/tpl/template.go @@ -21,6 +21,7 @@ import ( "github.com/spf13/hugo/helpers" "github.com/spf13/hugo/hugofs" jww "github.com/spf13/jwalterweatherman" + "github.com/spf13/viper" "github.com/yosssi/ace" "html/template" "io" @@ -300,15 +301,22 @@ func (t *GoHTMLTemplate) loadTemplates(absPath string, prefix string) { // 2. /baseof.ace // 3. _default/-baseof.ace, e.g. list-baseof.ace. // 4. _default/baseof.ace + // 5. /layouts/_default/-baseof.ace + // 6. /layouts/_default/baseof.ace currBaseAceFilename := fmt.Sprintf("%s-%s", helpers.Filename(path), baseAceFilename) templateDir := filepath.Dir(path) + themeDir := filepath.Join( + viper.GetString("WorkingDir"), "themes", viper.GetString("theme")) pathsToCheck := []string{ filepath.Join(templateDir, currBaseAceFilename), filepath.Join(templateDir, baseAceFilename), filepath.Join(absPath, "_default", currBaseAceFilename), - filepath.Join(absPath, "_default", baseAceFilename)} + filepath.Join(absPath, "_default", baseAceFilename), + filepath.Join(themeDir, "layouts", "_default", currBaseAceFilename), + filepath.Join(themeDir, "layouts", "_default", baseAceFilename), + } for _, pathToCheck := range pathsToCheck { if ok, err := helpers.Exists(pathToCheck, hugofs.OsFs); err == nil && ok {