add rss feed for blogs
This commit is contained in:
parent
458a0291b5
commit
9b2d4c9faf
14
blog/blog.go
14
blog/blog.go
|
@ -21,8 +21,8 @@ const postsPerPage int = 5
|
|||
var blogname string
|
||||
var folder string
|
||||
var style string
|
||||
var templateString string
|
||||
var t *template.Template
|
||||
var rssTemplate *template.Template
|
||||
var categories map[string][]Post
|
||||
|
||||
func linkToPost(filename string) string {
|
||||
|
@ -208,6 +208,13 @@ func makeTimeline(posts []Post) {
|
|||
goutil.WriteFile(filepath.Join("stage2", folder, "timeline.html"), buf.String())
|
||||
}
|
||||
|
||||
func makeRSS(posts []Post) {
|
||||
sort.Sort(byDateDesc(posts))
|
||||
buf := new(bytes.Buffer)
|
||||
rssTemplate.Execute(buf, posts)
|
||||
goutil.WriteFile(filepath.Join("stage2", folder, "feed.rss"), buf.String())
|
||||
}
|
||||
|
||||
type byDate []Post
|
||||
|
||||
func (p byDate) Len() int { return len(p) }
|
||||
|
@ -246,6 +253,7 @@ func makeBlog() {
|
|||
os.Link(indexFilename(n), filepath.Join("stage2", folder, "index.html"))
|
||||
makeCategories()
|
||||
makeTimeline(posts)
|
||||
makeRSS(posts)
|
||||
}
|
||||
|
||||
func Generate(dir string) {
|
||||
|
@ -259,8 +267,10 @@ func Generate(dir string) {
|
|||
var err error
|
||||
var err2 error
|
||||
style, err = goutil.ReadFile("style.css")
|
||||
templateString, err2 = goutil.ReadFile("template")
|
||||
templateString, err2 := goutil.ReadFile("template")
|
||||
t = template.Must(template.New("page").Parse(templateString))
|
||||
rssTemplateString, _ := goutil.ReadFile("rssTemplate")
|
||||
rssTemplate = template.Must(template.New("rss").Parse(rssTemplateString))
|
||||
if err == nil && err2 == nil {
|
||||
makeBlog()
|
||||
} else {
|
||||
|
|
|
@ -41,6 +41,10 @@ func dumpInitFiles(style Style) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = goutil.WriteFile("rssTemplate", rssTemplate)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = goutil.WriteFile("style.css", css)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -1,5 +1,27 @@
|
|||
package initer
|
||||
|
||||
var rssTemplate string = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>YOUR TITLE</title>
|
||||
<link>LINK TO YOUR BLOG</link>
|
||||
<description>DESCRIPTION OF YOUR BLOG</description>
|
||||
|
||||
{{range $index, $post := .}}
|
||||
{{- if (lt $index 10)}}
|
||||
<item>
|
||||
<title>{{$post.Meta.Title}}</title>
|
||||
<content:encoded><![CDATA[ {{$post.Content}} ]]></content:encoded>
|
||||
<link>BASE ADDRESS OF YOUR BLOG{{$post.Link}}</link>
|
||||
<pubDate>{{$post.Meta.RFC1123Date}}</pubDate>
|
||||
</item>
|
||||
{{end}}
|
||||
{{- end}}
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
`
|
||||
|
||||
var defaultTemplate string = `<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>{{.Title}}</title>
|
||||
|
@ -7,6 +29,9 @@ var defaultTemplate string = `<!DOCTYPE html>
|
|||
<!-- Tell "smart" phones that they are as wide as they are wide... -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
||||
{{if .PostCollection}}
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="/blog{{.Blogname}}/feed.rss">
|
||||
{{end}}
|
||||
<style>
|
||||
{{.Style}}
|
||||
</style>
|
||||
|
@ -115,6 +140,9 @@ var bsStarterTemplate string = `
|
|||
<!-- Tell "smart" phones that they are as wide as they are wide... -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
||||
{{if .PostCollection}}
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="/blog{{.Blogname}}/feed.rss">
|
||||
{{end}}
|
||||
<title>{{.Title}}</title>
|
||||
<style>
|
||||
{{.Style}}
|
||||
|
|
|
@ -61,3 +61,7 @@ type Metadata struct {
|
|||
func (m Metadata) FormattedDate() string {
|
||||
return m.Date.Format("2006-01-02")
|
||||
}
|
||||
|
||||
func (m Metadata) RFC1123Date() string {
|
||||
return m.Date.Format(time.RFC1123Z)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user