summaryrefslogtreecommitdiffstats
path: root/hugolib/site_render.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-23 14:02:54 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-24 09:00:21 +0100
commit0432c64dd22e4610302162678bb93661ba68d758 (patch)
tree7eb5e0bc4a9f4d6e48c00b7001a4e77a21c324f2 /hugolib/site_render.go
parent5a0819b9b5eb9e79826cfa0a65f235d9821b1ac4 (diff)
Add headless bundle support
This commit adds support for `headless bundles` for the `index` bundle type. So: ```toml headless = true ``` In front matter means that * It will have no `Permalink` and no rendered HTML in /public * It will not be part of `.Site.RegularPages` etc. But you can get it by: * `.Site.GetPage ...` The use cases are many: * Shared media galleries * Reusable page content "snippets" * ... Fixes #4311
Diffstat (limited to 'hugolib/site_render.go')
-rw-r--r--hugolib/site_render.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/hugolib/site_render.go b/hugolib/site_render.go
index 43019619b..bde4ef1f3 100644
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -45,6 +45,12 @@ func (s *Site) renderPages(filter map[string]bool) error {
go pageRenderer(s, pages, results, wg)
}
+ if len(s.headlessPages) > 0 {
+ wg.Add(1)
+ go headlessPagesPublisher(s, wg)
+
+ }
+
hasFilter := filter != nil && len(filter) > 0
for _, page := range s.Pages {
@@ -67,6 +73,22 @@ func (s *Site) renderPages(filter map[string]bool) error {
return nil
}
+func headlessPagesPublisher(s *Site, wg *sync.WaitGroup) {
+ defer wg.Done()
+ for _, page := range s.headlessPages {
+ outFormat := page.outputFormats[0] // There is only one
+ pageOutput, err := newPageOutput(page, false, outFormat)
+ if err == nil {
+ page.mainPageOutput = pageOutput
+ err = pageOutput.renderResources()
+ }
+
+ if err != nil {
+ s.Log.ERROR.Printf("Failed to render resources for headless page %q: %s", page, err)
+ }
+ }
+}
+
func pageRenderer(s *Site, pages <-chan *Page, results chan<- error, wg *sync.WaitGroup) {
defer wg.Done()