From 21421d0380aaf746add156298a546334787d7418 Mon Sep 17 00:00:00 2001 From: aichy126 <16996097+aichy126@users.noreply.github.com> Date: Thu, 1 Dec 2022 14:20:41 +0800 Subject: [PATCH] add Canonical --- internal/controller/template_controller.go | 49 +++++++++++++++++++--- internal/router/template_router.go | 4 +- internal/schema/siteinfo_schema.go | 1 + ui/template/header.html | 2 + 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/internal/controller/template_controller.go b/internal/controller/template_controller.go index f8b2064b..f1391faa 100644 --- a/internal/controller/template_controller.go +++ b/internal/controller/template_controller.go @@ -4,6 +4,7 @@ import ( "fmt" "html/template" "net/http" + "net/url" "regexp" "time" @@ -77,6 +78,7 @@ func (tc *TemplateController) SiteInfo(ctx *gin.Context) *schema.TemplateSiteInf func (tc *TemplateController) Index(ctx *gin.Context) { req := &schema.QuestionSearch{} if handler.BindAndCheck(ctx, req) { + tc.Page404(ctx) return } @@ -87,8 +89,33 @@ func (tc *TemplateController) Index(ctx *gin.Context) { tc.Page404(ctx) return } + siteInfo := tc.SiteInfo(ctx) + siteInfo.Canonical = fmt.Sprintf("%s", siteInfo.General.SiteUrl) ctx.HTML(http.StatusOK, "question.html", gin.H{ - "siteinfo": tc.SiteInfo(ctx), + "siteinfo": siteInfo, + "scriptPath": tc.scriptPath, + "cssPath": tc.cssPath, + "data": data, + "page": templaterender.Paginator(page, req.PageSize, count), + }) +} + +func (tc *TemplateController) QuestionList(ctx *gin.Context) { + req := &schema.QuestionSearch{} + if handler.BindAndCheck(ctx, req) { + tc.Page404(ctx) + return + } + var page = req.Page + data, count, err := tc.templateRenderController.Index(ctx, req) + if err != nil { + tc.Page404(ctx) + return + } + siteInfo := tc.SiteInfo(ctx) + siteInfo.Canonical = fmt.Sprintf("%s/questions", siteInfo.General.SiteUrl) + ctx.HTML(http.StatusOK, "question.html", gin.H{ + "siteinfo": siteInfo, "scriptPath": tc.scriptPath, "cssPath": tc.cssPath, "data": data, @@ -100,12 +127,15 @@ func (tc *TemplateController) Index(ctx *gin.Context) { func (tc *TemplateController) QuestionInfo(ctx *gin.Context) { id := ctx.Param("id") answerid := ctx.Param("answerid") + siteInfo := tc.SiteInfo(ctx) + encodeTitle := url.QueryEscape("title") + siteInfo.Canonical = fmt.Sprintf("%s/questions/%s/%s", siteInfo.General.SiteUrl, id, encodeTitle) ctx.HTML(http.StatusOK, "question-detail.html", gin.H{ "id": id, "answerid": answerid, "scriptPath": tc.scriptPath, "cssPath": tc.cssPath, - "siteinfo": tc.SiteInfo(ctx), + "siteinfo": siteInfo, }) } @@ -126,12 +156,14 @@ func (tc *TemplateController) TagList(ctx *gin.Context) { return } page := templaterender.Paginator(req.Page, req.PageSize, data.Count) + siteInfo := tc.SiteInfo(ctx) + siteInfo.Canonical = fmt.Sprintf("%s/tags", siteInfo.General.SiteUrl) ctx.HTML(http.StatusOK, "tags.html", gin.H{ "scriptPath": tc.scriptPath, "cssPath": tc.cssPath, "page": page, "data": data, - "siteinfo": tc.SiteInfo(ctx), + "siteinfo": siteInfo, }) } @@ -161,14 +193,15 @@ func (tc *TemplateController) TagInfo(ctx *gin.Context) { return } page := templaterender.Paginator(nowPage, req.PageSize, questionCount) - + siteInfo := tc.SiteInfo(ctx) + siteInfo.Canonical = fmt.Sprintf("%s/tags/%s", siteInfo.General.SiteUrl, tag) ctx.HTML(http.StatusOK, "tag-detail.html", gin.H{ "tag": taginifo, "questionList": questionList, "questionCount": questionCount, "scriptPath": tc.scriptPath, "cssPath": tc.cssPath, - "siteinfo": tc.SiteInfo(ctx), + "siteinfo": siteInfo, "page": page, }) } @@ -197,8 +230,12 @@ func (tc *TemplateController) UserInfo(ctx *gin.Context) { }) return } + + siteInfo := tc.SiteInfo(ctx) + siteInfo.Canonical = fmt.Sprintf("%s/users/%s", siteInfo.General.SiteUrl, username) + ctx.HTML(http.StatusOK, "homepage.html", gin.H{ - "siteinfo": tc.SiteInfo(ctx), + "siteinfo": siteInfo, "userinfo": userinfo, "scriptPath": tc.scriptPath, "cssPath": tc.cssPath, diff --git a/internal/router/template_router.go b/internal/router/template_router.go index cd7a6f6b..33a8a958 100644 --- a/internal/router/template_router.go +++ b/internal/router/template_router.go @@ -27,10 +27,10 @@ func (a *TemplateRouter) RegisterTemplateRouter(r *gin.RouterGroup) { r.GET("/", a.templateController.Index) r.GET("/index", a.templateController.Index) - r.GET("/questions", a.templateController.Index) + r.GET("/questions", a.templateController.QuestionList) r.GET("/questions/:id/", a.templateController.QuestionInfo) r.GET("/questions/:id/:title/", a.templateController.QuestionInfo) - r.GET("/questions/:id/:title/:answerid", a.templateController.QuestionInfo) + r.GET("/questions/:id/:title/:answerid", a.templateController.QuestionList) r.GET("/tags", a.templateController.TagList) r.GET("/tags/:tag", a.templateController.TagInfo) diff --git a/internal/schema/siteinfo_schema.go b/internal/schema/siteinfo_schema.go index 97fcc2d9..aace77bf 100644 --- a/internal/schema/siteinfo_schema.go +++ b/internal/schema/siteinfo_schema.go @@ -100,6 +100,7 @@ type TemplateSiteInfoResp struct { Interface *SiteInterfaceResp `json:"interface"` Branding *SiteBrandingResp `json:"branding"` Year string + Canonical string } // UpdateSMTPConfigReq get smtp config request diff --git a/ui/template/header.html b/ui/template/header.html index db2db8cc..d87cf718 100644 --- a/ui/template/header.html +++ b/ui/template/header.html @@ -5,6 +5,8 @@ + +