blogposts: fill categoryListings to link to related posts automatically
This commit is contained in:
parent
410e7fc496
commit
ad117af7a8
25
blog/blog.go
25
blog/blog.go
|
@ -72,8 +72,9 @@ func emitPostPage(post Post) string {
|
|||
page.Time = post.Meta.Date.Format(TimeFormat)
|
||||
page.Blogpost = true
|
||||
for _, categoryName := range post.Meta.Categories {
|
||||
page.Categories = append(page.Categories, Category{categoryName, linkToCategory(categoryName)})
|
||||
addToCategory(categoryName, post)
|
||||
page.Categories = append(page.Categories, Category{Name: categoryName, Path: linkToCategory(categoryName)})
|
||||
related := CategoryListing{Name: categoryName, ASCIIName: ConvASCII(categoryName), Posts: categories[categoryName]}
|
||||
page.CategoryListings = append(page.CategoryListings, related)
|
||||
}
|
||||
buf := new(bytes.Buffer)
|
||||
t.Execute(buf, page)
|
||||
|
@ -96,7 +97,7 @@ func (p byDateDesc) Len() int { return len(p) }
|
|||
func (p byDateDesc) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||||
func (p byDateDesc) Less(i, j int) bool { return p[i].Meta.Date.After(p[j].Meta.Date) }
|
||||
|
||||
func emitIndexPage(i int, posts []Post, total int) {
|
||||
func emitIndexAndPostPages(i int, posts []Post, total int) {
|
||||
file := indexFilename(i)
|
||||
postCollection := make([]Blogpost, 0)
|
||||
sort.Sort(byDateDesc(posts))
|
||||
|
@ -179,7 +180,13 @@ func getPost(file string) (Post, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func makeCategories() {
|
||||
func makeCategories(posts []Post) {
|
||||
sort.Sort(byDate(posts))
|
||||
for _, post := range posts {
|
||||
for _, category := range post.Meta.Categories {
|
||||
addToCategory(category, post)
|
||||
}
|
||||
}
|
||||
page := Page{}
|
||||
page.Title = blogname + ": Categories"
|
||||
page.Style = style
|
||||
|
@ -243,25 +250,25 @@ func getPosts() []Post {
|
|||
|
||||
func makeBlog() {
|
||||
posts := getPosts()
|
||||
makeCategories(posts)
|
||||
makeTimeline(posts)
|
||||
makeRSS(posts)
|
||||
sort.Sort(byDate(posts))
|
||||
total := len(posts)
|
||||
s := make([]Post, 0)
|
||||
n := 0
|
||||
for i, tmp := range posts {
|
||||
if (i / postsPerPage) != n {
|
||||
emitIndexPage(n, s, total)
|
||||
emitIndexAndPostPages(n, s, total)
|
||||
n = i / postsPerPage
|
||||
s = make([]Post, 0)
|
||||
}
|
||||
s = append(s, tmp)
|
||||
}
|
||||
if len(s) != 0 {
|
||||
emitIndexPage(n, s, total)
|
||||
emitIndexAndPostPages(n, s, total)
|
||||
}
|
||||
os.Link(indexFilename(n), filepath.Join("stage2", folder, "index.html"))
|
||||
makeCategories()
|
||||
makeTimeline(posts)
|
||||
makeRSS(posts)
|
||||
}
|
||||
|
||||
func Generate(dir string) {
|
||||
|
|
2
go.mod
2
go.mod
|
@ -3,7 +3,7 @@ module git.gutmet.org/wombat.git
|
|||
go 1.14
|
||||
|
||||
require (
|
||||
git.gutmet.org/finstr.git v0.0.0-20210628072143-8f552a2440f5 // indirect
|
||||
git.gutmet.org/finstr.git v0.0.0-20210628072143-8f552a2440f5
|
||||
git.gutmet.org/goutil.git v0.0.0-20201108182825-c19893df11f9
|
||||
git.gutmet.org/simpleserver.git v0.0.0-20201011112611-555b83d5de53
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
|
|
|
@ -24,9 +24,15 @@ a.linktopost {
|
|||
color: #E8E8E8;
|
||||
text-decoration: none;
|
||||
}
|
||||
div.categoryListing {
|
||||
padding-bottom: 150em;
|
||||
}
|
||||
a.categoryListing {
|
||||
color: #E8E8E8;
|
||||
}
|
||||
div.relatedListing{
|
||||
padding-top: 10em;
|
||||
}
|
||||
img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
|
|
|
@ -73,8 +73,13 @@ const defaultTemplate string = `<!DOCTYPE html>
|
|||
{{.Content}}
|
||||
|
||||
{{if .CategoryListings}}
|
||||
{{if .Blogpost}}
|
||||
<div class="relatedListing">
|
||||
Related posts:
|
||||
{{else}}
|
||||
<div class="categoryListing">
|
||||
<dl style="padding-bottom:150em;">
|
||||
{{end}}
|
||||
<dl>
|
||||
{{range $i, $listing := .CategoryListings -}}
|
||||
<dt><a name="{{$listing.ASCIIName}}" class="categoryListing">{{$listing.Name}}</a></dt>
|
||||
{{range $j, $post := $listing.Posts -}}
|
||||
|
|
Loading…
Reference in New Issue
Block a user