hugolib, output: Fix robots.txt in multihost mode
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 25 Jan 2018 09:36:53 +0000 (10:36 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 25 Jan 2018 09:36:53 +0000 (10:36 +0100)
Fixes #4193

hugolib/site_render.go
output/outputFormat.go

index 4848db599a109fd2fd468e8e2ad810d6b6e7ce49..dc94ddce37b126d3b12921e06df5c322b7e5eb78 100644 (file)
@@ -19,11 +19,7 @@ import (
        "strings"
        "sync"
 
-       "github.com/gohugoio/hugo/helpers"
-
        "github.com/gohugoio/hugo/output"
-
-       bp "github.com/gohugoio/hugo/bufferpool"
 )
 
 // renderPages renders pages each corresponding to a markdown file.
@@ -368,26 +364,27 @@ func (s *Site) renderRobotsTXT() error {
                return nil
        }
 
-       n := s.newNodePage(kindRobotsTXT)
-       if err := n.initTargetPathDescriptor(); err != nil {
+       p := s.newNodePage(kindRobotsTXT)
+       if err := p.initTargetPathDescriptor(); err != nil {
                return err
        }
-       n.Data["Pages"] = s.Pages
-       n.Pages = s.Pages
+       p.Data["Pages"] = s.Pages
+       p.Pages = s.Pages
 
        rLayouts := []string{"robots.txt", "_default/robots.txt", "_internal/_default/robots.txt"}
-       outBuffer := bp.GetBuffer()
-       defer bp.PutBuffer(outBuffer)
-       if err := s.renderForLayouts("robots", n, outBuffer, s.appendThemeTemplates(rLayouts)...); err != nil {
-               helpers.DistinctWarnLog.Println(err)
-               return nil
+
+       pageOutput, err := newPageOutput(p, false, output.RobotsTxtFormat)
+       if err != nil {
+               return err
        }
 
-       if outBuffer.Len() == 0 {
-               return nil
+       targetPath, err := pageOutput.targetPath()
+       if err != nil {
+               s.Log.ERROR.Printf("Failed to create target path for page %q: %s", p, err)
        }
 
-       return s.publish(&s.PathSpec.ProcessingStats.Pages, "robots.txt", outBuffer)
+       return s.renderAndWritePage(&s.PathSpec.ProcessingStats.Pages, "Robots Txt", targetPath, pageOutput, s.appendThemeTemplates(rLayouts)...)
+
 }
 
 // renderAliases renders shell pages that simply have a redirect in the header.
index fbc9f20cc58ba201367be35c2931097195e57777..0920e573655c35fcd95ad54464bb03cb53c802c9 100644 (file)
@@ -125,6 +125,14 @@ var (
                Rel:         "alternate",
        }
 
+       RobotsTxtFormat = Format{
+               Name:        "ROBOTS",
+               MediaType:   media.TextType,
+               BaseName:    "robots",
+               IsPlainText: true,
+               Rel:         "alternate",
+       }
+
        RSSFormat = Format{
                Name:      "RSS",
                MediaType: media.RSSType,