shithub: hugo

Download patch

ref: 6ccf50ea7bb291bcbe1d56a4d697a6fd57a9c629
parent: 67524c993623871626f0f22e6a2ac705a816a959
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Thu Aug 15 14:25:21 EDT 2019

hugolib: Fix draft etc. handling of _index.md pages

We will need to revisit this with a proper spec, but this commit makes sure that draft/expiryDate etc. set in front matter on _index.md content files that should disable the page will:

* Not crash
* Make the rendered page not render any `.Content`.

Fixes #6222
Fixes #6210

--- a/hugolib/page__per_output.go
+++ b/hugolib/page__per_output.go
@@ -67,6 +67,10 @@
 		}
 
 		initContent := func() (err error) {
+			if p.cmap == nil {
+				// Nothing to do.
+				return nil
+			}
 			defer func() {
 				// See https://github.com/gohugoio/hugo/issues/6210
 				if r := recover(); r != nil {
--- a/hugolib/taxonomy_test.go
+++ b/hugolib/taxonomy_test.go
@@ -352,3 +352,33 @@
 	b.Assert(dra, qt.IsNil)
 
 }
+
+// See https://github.com/gohugoio/hugo/issues/6222
+// We need to revisit this once we figure out what to do with the
+// draft etc _index pages, but for now we need to avoid the crash.
+func TestTaxonomiesIndexDraft(t *testing.T) {
+	t.Parallel()
+
+	b := newTestSitesBuilder(t)
+	b.WithContent(
+		"categories/_index.md", `---
+title: "The Categories"
+draft: true
+---
+
+This is the invisible content.
+
+`)
+
+	b.WithTemplates("index.html", `
+{{ range .Site.Pages }}
+{{ .RelPermalink }}|{{ .Title }}|{{ .WordCount }}|{{ .Content }}|
+{{ end }}
+`)
+
+	b.Build(BuildCfg{})
+
+	// We publish the index page, but the content will be empty.
+	b.AssertFileContent("public/index.html", " /categories/|The Categories|0||")
+
+}