package controllers import ( "html/template" "net/http" "lokistack/services" "lokistack/utils" "github.com/gin-gonic/gin" ) // 文档站控制器:模板内嵌(三栏布局,参考 opsxapi/opsxshell 文档站,品牌绿) var docsTemplate = template.Must(template.New("docs").Parse(` {{.Page.Title}} · LokiStack 文档
LokiStack 文档 v{{.Version}}

{{.Page.Title}}

{{if .Page.Updated}}
更新于 {{.Page.Updated}}
{{end}}
{{.Page.Content}}
{{with .Page.Prev}} {{else}}{{end}} {{with .Page.Next}} {{else}}{{end}}
`)) type DocsController struct{} func NewDocsController() *DocsController { return &DocsController{} } func (ctrl *DocsController) Home(c *gin.Context) { c.Redirect(http.StatusFound, "/docs/"+services.DocsFirstSlug()) } func (ctrl *DocsController) Page(c *gin.Context) { page, manifest, err := services.DocsRenderPage(c.Param("slug")) if err != nil { utils.NotFound(c, "文档页面不存在") return } _ = docsTemplate.Execute(c.Writer, gin.H{"Page": page, "Manifest": manifest, "Version": manifest.ProductVersion}) } func (ctrl *DocsController) SearchData(c *gin.Context) { data, err := services.DocsSearchData() if err != nil { data = []map[string]string{} } c.JSON(http.StatusOK, data) }