diff options
author | Bjørn Erik Pedersen <[email protected]> | 2018-01-06 18:42:32 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2018-01-06 19:14:31 +0100 |
commit | 8969331f5be352939883074034adac6b7086ddc8 (patch) | |
tree | d8782bd1e9d2741816399d446653c39d7cb97f61 | |
parent | 6feb138785eeb9e813428d0df30010d9b5fb1059 (diff) | |
download | hugo-8969331f5be352939883074034adac6b7086ddc8.tar.gz hugo-8969331f5be352939883074034adac6b7086ddc8.zip |
Fix multihost detection for sites without language definition
Static content was wrongly put into the lang-code subfolder.
Fixes #4221
-rw-r--r-- | helpers/language.go | 8 | ||||
-rw-r--r-- | hugolib/config.go | 31 |
2 files changed, 21 insertions, 18 deletions
diff --git a/helpers/language.go b/helpers/language.go index 3cb388abb..fa933fddd 100644 --- a/helpers/language.go +++ b/helpers/language.go @@ -100,9 +100,13 @@ func (l *Language) Params() map[string]interface{} { return l.params } -// IsMultihost returns whether the languages has baseURL specificed on the -// language level. +// IsMultihost returns whether there are more than one language and at least one of +// the languages has baseURL specificed on the language level. func (l Languages) IsMultihost() bool { + if len(l) <= 1 { + return false + } + for _, lang := range l { if lang.GetLocal("baseURL") != nil { return true diff --git a/hugolib/config.go b/hugolib/config.go index c83f38cce..8e06d3e8e 100644 --- a/hugolib/config.go +++ b/hugolib/config.go @@ -134,27 +134,26 @@ func loadLanguageSettings(cfg config.Provider, oldLangs helpers.Languages) error cfg.Set("languagesSorted", langs) cfg.Set("multilingual", len(langs) > 1) - // The baseURL may be provided at the language level. If that is true, - // then every language must have a baseURL. In this case we always render - // to a language sub folder, which is then stripped from all the Permalink URLs etc. - var baseURLFromLang bool - - for _, l := range langs { - burl := l.GetLocal("baseURL") - if baseURLFromLang && burl == nil { - return errors.New("baseURL must be set on all or none of the languages") - } + multihost := langs.IsMultihost() - if burl != nil { - baseURLFromLang = true - } - } - - if baseURLFromLang { + if multihost { cfg.Set("defaultContentLanguageInSubdir", true) cfg.Set("multihost", true) } + if multihost { + // The baseURL may be provided at the language level. If that is true, + // then every language must have a baseURL. In this case we always render + // to a language sub folder, which is then stripped from all the Permalink URLs etc. + for _, l := range langs { + burl := l.GetLocal("baseURL") + if burl == nil { + return errors.New("baseURL must be set on all or none of the languages") + } + } + + } + return nil } |