Do not add lang prefix in URL when set in frontmatter
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 14 Sep 2016 16:51:34 +0000 (18:51 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 14 Sep 2016 16:51:34 +0000 (18:51 +0200)
Fixes #2450

hugolib/hugo_sites_test.go
hugolib/page.go

index 3b5bf1cfc46992f23869d92da541340812f91ceb..52a3910a363297bf9350cd4e5207794618076fbc 100644 (file)
@@ -211,10 +211,13 @@ func doTestMultiSitesBuild(t *testing.T, configContent, configSuffix string) {
        doc3 := enSite.Pages[2]
        permalink, err = doc3.Permalink()
        assert.NoError(t, err, "permalink call failed")
+       // Note that /superbob is a custom URL set in frontmatter.
+       // We respect that URL literally (it can be /search.json)
+       // and do no not do any language code prefixing.
        assert.Equal(t, "http://example.com/blog/superbob", permalink, "invalid doc3 permalink")
 
-       assert.Equal(t, "/en/superbob", doc3.URL(), "invalid url, was specified on doc3")
-
+       assert.Equal(t, "/superbob", doc3.URL(), "invalid url, was specified on doc3")
+       assertFileContent(t, "public/superbob/index.html", true, "doc3|Hello|en")
        assert.Equal(t, doc2.Next, doc3, "doc3 should follow doc2, in .Next")
 
        doc1fr := doc1en.Translations()[0]
@@ -230,6 +233,8 @@ func doTestMultiSitesBuild(t *testing.T, configContent, configSuffix string) {
        permalink, err = doc4.Permalink()
        assert.NoError(t, err, "permalink call failed")
        assert.Equal(t, "http://example.com/blog/fr/sect/doc4/", permalink, "invalid doc4 permalink")
+       assert.Equal(t, "/blog/fr/sect/doc4/", doc4.URL())
+
        assert.Len(t, doc4.Translations(), 0, "found translations for doc4")
 
        doc5 := enSite.AllPages[5]
index a76c157be45b5819b7a6f7c9eff23cfe6970111b..fe4cd077fef35d9e3805e4ecdfa37724334f3630 100644 (file)
@@ -644,6 +644,16 @@ func (p *Page) Permalink() (string, error) {
        return link.String(), nil
 }
 
+func (p *Page) URL() string {
+       if p.URLPath.URL != "" {
+               // This is the url set in front matter
+               return p.URLPath.URL
+       }
+       // Fall back to the relative permalink.
+       u, _ := p.RelPermalink()
+       return u
+}
+
 func (p *Page) RelPermalink() (string, error) {
        link, err := p.permalink()
        if err != nil {