From 863a812e07193541b42732b0e227f3d320433f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 28 Jan 2018 19:38:10 +0100 Subject: create: Provide .Name to the archetype templates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This value will have a better suited value to base the titles on in your archetype templates when creating bundle ´index.md` type of files. The internal template is updates, but you will have to update any custom archetype template to use the new `.Name` variable: ```bash --- title: "{{ replace .Name "-" " " | title }}" date: {{ .Date }} draft: true --- ``` Fixes #4348 --- create/content_template_handler.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'create') diff --git a/create/content_template_handler.go b/create/content_template_handler.go index 3b1f850c5..99f2d1fa3 100644 --- a/create/content_template_handler.go +++ b/create/content_template_handler.go @@ -16,6 +16,7 @@ package create import ( "bytes" "fmt" + "path/filepath" "strings" "time" @@ -43,6 +44,12 @@ type ArchetypeFileData struct { // on the presence of language code in the filename. Site *hugolib.Site + // Name will in most cases be the same as TranslationBaseName, e.g. "my-post". + // But if that value is "index" (bundles), the Name is instead the owning folder. + // This is the value you in most cases would want to use to construct the title in your + // archetype template. + Name string + // The target content file. Note that the .Content will be empty, as that // has not been created yet. source.File @@ -51,7 +58,7 @@ type ArchetypeFileData struct { const ( // ArchetypeTemplateTemplate is used as initial template when adding an archetype template. ArchetypeTemplateTemplate = `--- -title: "{{ replace .TranslationBaseName "-" " " | title }}" +title: "{{ replace .Name "-" " " | title }}" date: {{ .Date }} draft: true --- @@ -84,9 +91,17 @@ func executeArcheTypeAsTemplate(s *hugolib.Site, kind, targetPath, archetypeFile sp := source.NewSourceSpec(s.Deps.Cfg, s.Deps.Fs) f := sp.NewFileInfo("", targetPath, false, nil) + name := f.TranslationBaseName() + if name == "index" || name == "_index" { + // Page bundles; the directory name will hopefully have a better name. + dir := strings.TrimSuffix(f.Dir(), helpers.FilePathSeparator) + _, name = filepath.Split(dir) + } + data := ArchetypeFileData{ Type: kind, Date: time.Now().Format(time.RFC3339), + Name: name, File: f, Site: s, } -- cgit v1.2.3