Merge branch 'redirect' of https://github.com/rozza/hugo into rozza-redirect

Conflicts:
	hugolib/page.go
This commit is contained in:
spf13 2013-08-10 14:08:38 +01:00
commit 45ce6e2b30
6 changed files with 79 additions and 6 deletions

View file

@ -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

View 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/`.

View file

@ -0,0 +1,5 @@
---
redirect: true
slug: /my-awesome-blog-post/
url: /docs/redirects1/
---

View file

@ -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>

View 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>

View file

@ -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: