mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-16 20:53:59 +02:00
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
This commit is contained in:
@@ -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()
|
||||
|
||||
|
Reference in New Issue
Block a user