hikan.ru/mvc/models/pages/posts.go

52 lines
995 B
Go

package models
import (
"bytes"
"html/template"
"strings"
"time"
)
const (
// Имя соответствующего шаблона
PostsPageTmplName = "posts.gohtml"
)
type Posts map[PostName]Post
var (
posts = Posts{
"post 1": *NewPost(
"post 1",
"/post-1/",
"full content 1 with more than 100 characters Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod...",
),
"post 2": *NewPost(
"post 2",
"/post-2/",
"full content 2",
),
"post 3": *NewPost(
"post 3",
"/post-3/",
strings.Repeat("This is post 3 content. ", 30),
),
}
)
func RenderPostsPage(templates *template.Template, version int64) ([]byte, error) {
var pageData bytes.Buffer
context := map[string]any{
"version": version,
"renderingTimestamp": time.Now().Unix(),
"posts": posts,
}
if err := templates.ExecuteTemplate(&pageData, PostsPageTmplName, context); err != nil {
return nil, err
}
return pageData.Bytes(), nil
}