Add sitemap index for multilingual sites

See #2309
This commit is contained in:
Bjørn Erik Pedersen
2016-08-04 22:12:19 +02:00
parent d572071784
commit b6fcb3d0bb
8 changed files with 82 additions and 29 deletions

View File

@@ -61,6 +61,14 @@ func (h HugoSites) Reset() {
}
}
func (h HugoSites) siteInfos() []*SiteInfo {
infos := make([]*SiteInfo, len(h.Sites))
for i, s := range h.Sites {
infos[i] = &s.Info
}
return infos
}
type BuildCfg struct {
// Whether we are in watch (server) mode
Watching bool
@@ -118,9 +126,9 @@ func (h HugoSites) Build(config BuildCfg) error {
return err
}
for _, s := range h.Sites {
if !config.skipRender {
for _, s := range h.Sites {
if !config.skipRender {
if err := s.Render(); err != nil {
return err
}
@@ -129,7 +137,10 @@ func (h HugoSites) Build(config BuildCfg) error {
s.Stats()
}
}
// TODO(bep) ml lang in site.Info?
if err := h.render(); err != nil {
return err
}
}
if config.PrintStats {
@@ -180,6 +191,10 @@ func (h HugoSites) Rebuild(config BuildCfg, events ...fsnotify.Event) error {
s.Stats()
}
}
if err := h.render(); err != nil {
return err
}
}
if config.PrintStats {
@@ -190,6 +205,28 @@ func (h HugoSites) Rebuild(config BuildCfg, events ...fsnotify.Event) error {
}
// Render the cross-site artifacts.
func (h *HugoSites) render() error {
if !h.Multilingual.enabled() {
return nil
}
// TODO(bep) DRY
sitemapDefault := parseSitemap(viper.GetStringMap("Sitemap"))
s := h.Sites[0]
smLayouts := []string{"sitemapindex.xml", "_default/sitemapindex.xml", "_internal/_default/sitemapindex.xml"}
if err := s.renderAndWriteXML("sitemapindex", sitemapDefault.Filename,
h.siteInfos(), s.appendThemeTemplates(smLayouts)...); err != nil {
return err
}
return nil
}
func (s *HugoSites) setupTranslations(master *Site) {
for _, p := range master.rawAllPages {