viewrender

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2026 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TemplateFuncs = template.FuncMap{
	"Url": func() URLHelper {
		return URLHelper{}
	},
	"ContainsInt": func(s []int, v any) bool {
		return slices.Contains(s, cast.ToInt(v))
	},
	"ViteEntry": ViteEntry,
	"VitePath":  VitePath,
	"Asset":     Asset,
	"SafeHTML": func(s string) template.HTML {
		return template.HTML(s)
	},
	"FormatTime": func(t time.Time) string {
		return t.Format(time.DateTime)
	},
	"Nl2br": func(text string) template.HTML {

		escaped := template.HTMLEscapeString(text)
		result := strings.ReplaceAll(escaped, "\n", "<br>")
		return template.HTML(result)
	},
	"IsOnline": func(t time.Time) bool {
		return time.Since(t) < 120*time.Second
	},
	"add": func(a, b int) int {
		return a + b
	},
	"sub": func(a, b int) int {
		return a - b
	},
	"ToJson": func(v any) string {
		return jsonopt.EncodeFormat(v)
	},
	"json": func(v any) template.JS {
		return template.JS(jsonopt.Encode(v))
	},
}

TemplateFuncs defines the available functions for templates

Functions

func Asset added in v0.1.1

func Asset(path string) string

Asset 返回静态资源的完整路径,如果配置了 CDN 则返回 CDN 路径

func GetLang added in v0.1.2

func GetLang(c *gin.Context) string

func GetTheme added in v0.0.8

func GetTheme(c *gin.Context) string

GetTheme 从cookie中读取主题设置

func Reload

func Reload()

func SafeRender added in v0.0.9

func SafeRender[T any](c *gin.Context, name string, data T, pageMeta ...*PageMeta)

func ViteEntry added in v0.1.1

func ViteEntry(origin string) template.HTML

ViteEntry generates HTML tags for an entry point

func VitePath added in v0.1.1

func VitePath(path string) string

VitePath returns the resolved URL for an asset

Types

type ManifestItem added in v0.1.1

type ManifestItem struct {
	File           string   `json:"file"`
	Name           string   `json:"name"`
	Src            string   `json:"src"`
	IsEntry        bool     `json:"isEntry"`
	IsDynamicEntry bool     `json:"isDynamicEntry"`
	Imports        []string `json:"imports"`
	DynamicImports []string `json:"dynamicImports"`
	Css            []string `json:"css"`
	Assets         []string `json:"assets"`
}

ManifestItem represents an entry in the manifest.json

type OpenGraphMeta added in v0.0.9

type OpenGraphMeta struct {
	Type        string `json:"type,omitempty"` // website, article, profile
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
	Image       string `json:"image,omitempty"`
	ImageAlt    string `json:"image_alt,omitempty"`
	URL         string `json:"url,omitempty"`
	SiteName    string `json:"site_name,omitempty"`

	// 文章特定字段
	ArticleAuthor        string     `json:"article_author,omitempty"`
	ArticleSection       string     `json:"article_section,omitempty"`
	ArticleTag           []string   `json:"article_tag,omitempty"`
	ArticlePublishedTime *time.Time `json:"article_published_time,omitempty"`
	ArticleModifiedTime  *time.Time `json:"article_modified_time,omitempty"`
}

type PageMeta added in v0.0.9

type PageMeta struct {
	// 基础 SEO 信息
	Title       string `json:"title"`
	Description string `json:"description"`
	Keywords    string `json:"keywords"`
	Author      string `json:"author,omitempty"`

	// URL 相关
	CanonicalURL string `json:"canonical_url,omitempty"`
	AlternateURL string `json:"alternate_url,omitempty"`

	// Open Graph 协议
	OG OpenGraphMeta `json:"og"`

	// Twitter Card
	Twitter TwitterCardMeta `json:"twitter"`

	// 结构化数据
	SchemaOrgJSON template.JS `json:"schema_org_json,omitempty"`

	// 页面特定配置
	Favicon    string `json:"favicon,omitempty"`
	ThemeColor string `json:"theme_color,omitempty"`
}

type PageMetaBuilder added in v0.0.9

type PageMetaBuilder struct {
	// contains filtered or unexported fields
}

func NewPageMetaBuilder added in v0.0.9

func NewPageMetaBuilder() *PageMetaBuilder

func (*PageMetaBuilder) Build added in v0.0.9

func (b *PageMetaBuilder) Build() *PageMeta

Build 构建最终的 PageMeta

func (*PageMetaBuilder) SetArticle added in v0.0.9

func (b *PageMetaBuilder) SetArticle(title, desc, author string, categories []string, publishTime, modifyTime *time.Time) *PageMetaBuilder

SetArticle 文章特定设置

func (*PageMetaBuilder) SetCanonicalURL added in v0.0.9

func (b *PageMetaBuilder) SetCanonicalURL(url string) *PageMetaBuilder

func (*PageMetaBuilder) SetDescription added in v0.0.9

func (b *PageMetaBuilder) SetDescription(desc string) *PageMetaBuilder

func (*PageMetaBuilder) SetImage added in v0.0.9

func (b *PageMetaBuilder) SetImage(imageURL, imageAlt string) *PageMetaBuilder

SetImage 图片设置

func (*PageMetaBuilder) SetKeywords added in v0.0.9

func (b *PageMetaBuilder) SetKeywords(keywords string) *PageMetaBuilder

func (*PageMetaBuilder) SetPageType added in v0.0.9

func (b *PageMetaBuilder) SetPageType(pageType string) *PageMetaBuilder

SetPageType 页面类型设置

func (*PageMetaBuilder) SetSchemaOrg added in v0.0.9

func (b *PageMetaBuilder) SetSchemaOrg(jsonLD template.JS) *PageMetaBuilder

SetSchemaOrg 结构化数据设置

func (*PageMetaBuilder) SetTitle added in v0.0.9

func (b *PageMetaBuilder) SetTitle(title string) *PageMetaBuilder

SetTitle 基础信息设置

func (*PageMetaBuilder) SetUserProfile added in v0.0.9

func (b *PageMetaBuilder) SetUserProfile(username, bio string) *PageMetaBuilder

SetUserProfile 用户页面设置

type TemplateRegistry added in v0.1.1

type TemplateRegistry struct {
	// contains filtered or unexported fields
}
var (
	CurrentRegistry *TemplateRegistry
)

func NewRegistry added in v0.1.1

func NewRegistry(fileSystem fs.FS) (*TemplateRegistry, error)

func (*TemplateRegistry) Render added in v0.1.1

func (r *TemplateRegistry) Render(w io.Writer, name string, data any) error

type TmplData added in v0.0.9

type TmplData[T any] struct {
	IsProduction  bool
	Theme         string
	Footer        pageConfig.FooterInfo
	SiteSetting   pageConfig.SiteSettingsConfig
	Data          T
	Url           URLHelper
	User          *vo.UserInfoShow
	CurrentUserId uint64
	PageMeta      *PageMeta
	Lang          string
	T             func(string, ...any) string
}

type TwitterCardMeta added in v0.0.9

type TwitterCardMeta struct {
	Card        string `json:"card,omitempty"`    // summary, summary_large_image
	Site        string `json:"site,omitempty"`    // @username
	Creator     string `json:"creator,omitempty"` // @username
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
	Image       string `json:"image,omitempty"`
	ImageAlt    string `json:"image_alt,omitempty"`
}

type URLHelper added in v0.1.1

type URLHelper struct{}

func (URLHelper) About added in v0.1.1

func (u URLHelper) About() string

func (URLHelper) Activate added in v0.1.1

func (u URLHelper) Activate() string

func (URLHelper) Admin added in v0.1.1

func (u URLHelper) Admin() string

func (URLHelper) Docs added in v0.1.1

func (u URLHelper) Docs() string

func (URLHelper) DocsContent added in v0.1.1

func (u URLHelper) DocsContent(p, v, c any) string

func (URLHelper) DocsProject added in v0.1.1

func (u URLHelper) DocsProject(slug any) string

func (URLHelper) Home added in v0.1.1

func (u URLHelper) Home() string
func (u URLHelper) Links() string

func (URLHelper) Login added in v0.1.1

func (u URLHelper) Login() string

func (URLHelper) Messages added in v0.1.1

func (u URLHelper) Messages() string

func (URLHelper) Notifications added in v0.1.1

func (u URLHelper) Notifications() string

func (URLHelper) Post added in v0.1.1

func (u URLHelper) Post() string

func (URLHelper) PostDetail added in v0.1.1

func (u URLHelper) PostDetail(id any) string

func (URLHelper) Publish added in v0.1.1

func (u URLHelper) Publish() string

func (URLHelper) Register added in v0.1.1

func (u URLHelper) Register() string

func (URLHelper) ResetPassword added in v0.1.1

func (u URLHelper) ResetPassword() string

func (URLHelper) Rss added in v0.1.1

func (u URLHelper) Rss() string

func (URLHelper) Search added in v0.1.1

func (u URLHelper) Search() string

func (URLHelper) Settings added in v0.1.1

func (u URLHelper) Settings() string

func (URLHelper) Sponsors added in v0.1.1

func (u URLHelper) Sponsors() string

func (URLHelper) User added in v0.1.1

func (u URLHelper) User(id any) string

type ViteHandler added in v0.1.1

type ViteHandler struct {
	// contains filtered or unexported fields
}
var (
	// DefaultViteHandler is the default instance of ViteHandler
	DefaultViteHandler *ViteHandler
)

func NewViteHandler added in v0.1.1

func NewViteHandler(viteDevServerURL string, isProduction bool, manifestItemMap map[string]ManifestItem) *ViteHandler

NewViteHandler creates a new ViteHandler

func (*ViteHandler) ViteEntry added in v0.1.1

func (v *ViteHandler) ViteEntry(origin string) template.HTML

ViteEntry generates HTML tags for an entry point

func (*ViteHandler) VitePath added in v0.1.1

func (v *ViteHandler) VitePath(path string) string

VitePath returns the resolved URL for an asset

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL