hikan.ru/mvc/models/page.go

48 lines
1.1 KiB
Go
Raw Normal View History

2025-02-02 16:43:55 +03:00
package models
import (
"bytes"
"fmt"
)
2025-02-02 16:43:55 +03:00
// Контекст страницы
type Page struct {
AccessLvl int //уровень доступа юзера
Title string // тайтл странциы
PostsSublist Posts
Number int // номер страницы
Data string // строка с данными (например искомая строка для поиска)
SiteCtx *Site
}
2025-02-02 19:29:59 +03:00
// Возвращает контекст страницы по списку постов (которые на ней должны быть),
// номеру страницы, метадаты
func NewPage(s *Site, postsSublist Posts,
pageNumber int, accessLvl int, data string) *Page {
return &Page{
AccessLvl: accessLvl,
Title: "hikan.ru",
PostsSublist: postsSublist,
Number: pageNumber,
Data: data,
SiteCtx: s,
}
}
func (p *Page) RenderPage(s *Site, tmplname string) (string, error) {
var buffer bytes.Buffer
if err := s.Tmpl.ExecuteTemplate(
&buffer,
fmt.Sprintf("%s.gohtml", tmplname),
p); err != nil {
return "", err
}
return buffer.String(), nil
}