mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
Merge branch 'redirect' of https://github.com/rozza/hugo into rozza-redirect
Conflicts: hugolib/page.go
This commit is contained in:
commit
45ce6e2b30
6 changed files with 79 additions and 6 deletions
|
@ -4,8 +4,8 @@ date = "2013-07-01"
|
|||
+++
|
||||
|
||||
The front matter is one of the features that gives Hugo it's strength. It enables
|
||||
you to include the meta data of the content right with it. Hugo supports a few
|
||||
different formats each with their own identifying tokens.
|
||||
you to include the meta data of the content right with it. Hugo supports a few
|
||||
different formats each with their own identifying tokens.
|
||||
|
||||
Supported formats: <br>
|
||||
**YAML**, identified by '\-\-\-'. <br>
|
||||
|
@ -24,7 +24,7 @@ Supported formats: <br>
|
|||
- "VIM"
|
||||
slug: "spf13-vim-3-0-release-and-new-website"
|
||||
---
|
||||
Content of the file goes Here
|
||||
Content of the file goes Here
|
||||
|
||||
### TOML Example
|
||||
|
||||
|
@ -39,7 +39,7 @@ Supported formats: <br>
|
|||
]
|
||||
slug = "spf13-vim-3-0-release-and-new-website"
|
||||
+++
|
||||
Content of the file goes Here
|
||||
Content of the file goes Here
|
||||
|
||||
### JSON Example
|
||||
|
||||
|
@ -54,7 +54,7 @@ Supported formats: <br>
|
|||
],
|
||||
"slug": "spf13-vim-3-0-release-and-new-website",
|
||||
}
|
||||
Content of the file goes Here
|
||||
Content of the file goes Here
|
||||
|
||||
### Variables
|
||||
|
||||
|
@ -71,6 +71,7 @@ any variable they want to. These will be placed into the `.Params` variable avai
|
|||
|
||||
#### Optional
|
||||
|
||||
**redirect** Mark the post as a redirect post<br>
|
||||
**draft** If true the content will not be rendered unless `hugo` is called with -d<br>
|
||||
**type** The type of the content (will be derived from the directory automatically if unset).<br>
|
||||
**markup** (Experimental) Specify "rst" for reStructuredText (requires
|
||||
|
|
37
docs/content/doc/redirects.md
Normal file
37
docs/content/doc/redirects.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
title: "Redirects"
|
||||
Pubdate: "2013-07-09"
|
||||
---
|
||||
|
||||
For people migrating existing published content to Hugo theres a good chance
|
||||
you need a mechanism to handle redirecting old urls.
|
||||
|
||||
Luckily, this can be handled easily in a couple of easy steps.
|
||||
|
||||
1. Create a special post for the redirect and mark the file as a `redirect`
|
||||
file in the front matter. Here is an example
|
||||
`content/redirects/my-awesome-blog-post.md` :
|
||||
|
||||
```markdown
|
||||
---
|
||||
redirect: true
|
||||
slug: /my-awesome-blog-post/
|
||||
url: /docs/redirects/
|
||||
---
|
||||
```
|
||||
|
||||
2. Set the redirect template `layouts/redirects/single.html`:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="canonical" href="{{ .Url }}"/>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="refresh" content="0;url={{ .Url }}" />
|
||||
</head>
|
||||
</html>
|
||||
```
|
||||
|
||||
Now when you go to `/my-awesome-blog-post/` it will do a meta redirect to
|
||||
`/docs/redirects/`.
|
5
docs/content/redirects/my-awesome-blog-post.md
Normal file
5
docs/content/redirects/my-awesome-blog-post.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
redirect: true
|
||||
slug: /my-awesome-blog-post/
|
||||
url: /docs/redirects1/
|
||||
---
|
|
@ -19,6 +19,7 @@
|
|||
<li class="nav-header">Extras</li>
|
||||
<li> <a href="/doc/shortcodes">ShortCodes</a></li>
|
||||
<li> <a href="/doc/indexes">Indexes</a></li>
|
||||
<li> <a href="/doc/redirects">Redirects</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="nav-header">Meta</li>
|
||||
<li> <a href="/doc/release-notes">Release Notes</a></li>
|
||||
|
|
8
docs/layouts/redirects/single.html
Normal file
8
docs/layouts/redirects/single.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="canonical" href="{{ .Url }}"/>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="refresh" content="0;url={{ .Url }}" />
|
||||
</head>
|
||||
</html>
|
|
@ -46,6 +46,7 @@ type Page struct {
|
|||
RenderedContent *bytes.Buffer
|
||||
contentType string
|
||||
Draft bool
|
||||
Aliases []string
|
||||
Tmpl *template.Template
|
||||
Markup string
|
||||
PageMeta
|
||||
|
@ -98,16 +99,28 @@ func (p *Page) setSection() {
|
|||
return
|
||||
}
|
||||
|
||||
//section := x[len(x)-2]
|
||||
if section := x[len(x)-2]; section != "content" {
|
||||
p.Section = section
|
||||
}
|
||||
|
||||
//c := p.Site.Config
|
||||
//systemDirs := map[string]bool{
|
||||
//c.ContentDir: true,
|
||||
//c.StaticDir: true,
|
||||
//c.LayoutDir: true,
|
||||
//}
|
||||
|
||||
//if !systemDirs[section] && !p.Redirect {
|
||||
//p.Section = section
|
||||
//}
|
||||
}
|
||||
|
||||
func (page *Page) Type() string {
|
||||
if page.contentType != "" {
|
||||
return page.contentType
|
||||
}
|
||||
|
||||
page.setSection()
|
||||
if x := page.GetSection(); x != "" {
|
||||
return x
|
||||
}
|
||||
|
@ -151,6 +164,7 @@ func ReadFrom(buf io.Reader, name string) (page *Page, err error) {
|
|||
// TODO initalize separately... load from reader (file, or []byte)
|
||||
func NewPage(filename string) *Page {
|
||||
p := initializePage(filename)
|
||||
|
||||
if err := p.buildPageFromFile(); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
@ -264,6 +278,13 @@ func (page *Page) update(f interface{}) error {
|
|||
page.layout = interfaceToString(v)
|
||||
case "markup":
|
||||
page.Markup = interfaceToString(v)
|
||||
case "aliases":
|
||||
page.Aliases = interfaceArrayToStringArray(v)
|
||||
for _, alias := range page.Aliases {
|
||||
if strings.HasPrefix(alias, "http://") || strings.HasPrefix(alias, "https://") {
|
||||
return fmt.Errorf("Only relative aliases are supported, %v provided", alias)
|
||||
}
|
||||
}
|
||||
case "status":
|
||||
page.Status = interfaceToString(v)
|
||||
default:
|
||||
|
|
Loading…
Reference in a new issue