summaryrefslogtreecommitdiff
path: root/internal/router/handlers/lang-blog-title.go
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
authorGravatar Saya Andy <145215889+SayaAndy@users.noreply.github.com> 2026-03-31 00:54:20 +0700
committerGravatar GitHub <noreply@github.com> 2026-03-31 00:54:20 +0700
commitabc9e2fc1e93fba0b274f31b95340c411a73dd6d (patch)
tree3d0b70016ce8f160203629da07c1a8ae3edff8af /internal/router/handlers/lang-blog-title.go
parent8d0385546b0a5f4f3b0832fce1b4c0a10fa0a927 (diff)
parenta8f566cbeb8358aca7fb4532d8b69c513ef197f3 (diff)
downloadweb-0.13.0.tar.gz
web-0.13.0.zip
v0.13.0 (#25)v0.13.0
- [feat: enable etag middleware](https://github.com/SayaAndy/saya-today-web/commit/c7742b341a46360d16dd9035c046f004d0fe760c) - feat: enable compress middleware - feat: trim end slash of each request url (except for root) - [feat: add linked data](https://github.com/SayaAndy/saya-today-web/commit/a8f566cbeb8358aca7fb4532d8b69c513ef197f3) - [feat: build sitemap.xml](https://github.com/SayaAndy/saya-today-web/commit/7a40c01dd14f04787f5052d0c89e0d6fb9ce597f) - [feat: generate robots.txt](https://github.com/SayaAndy/saya-today-web/commit/be906e1cc4ec3e92bcb14ee08256b53f3a4b44e2) - [feat: specify canonical hrefs for each page](https://github.com/SayaAndy/saya-today-web/commit/a0ace41ad3b0f4661e98d8fa8ef254369cc80d1e) - [feat: use semantic html tags for pages](https://github.com/SayaAndy/saya-today-web/commit/2bcf8ee39555ea98be309b85547c797b0d172b84) - feat: specify more meta properties for search engines - fix: correct user and catalogue meta - format: specify og property names in property field - feat: user profile description
Diffstat (limited to 'internal/router/handlers/lang-blog-title.go')
-rw-r--r--internal/router/handlers/lang-blog-title.go49
1 files changed, 43 insertions, 6 deletions
diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go
index 97de089..5bfc6e7 100644
--- a/internal/router/handlers/lang-blog-title.go
+++ b/internal/router/handlers/lang-blog-title.go
@@ -46,17 +46,54 @@ func (r *BlogPageHandler) ToValidateLang() router.LangSetting {
return router.InPath
}
-func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error) {
+func (r *BlogPageHandler) SitemapInfo(supplements *router.Supplements) []router.SitemapInfo {
+ sitemapInfo := []router.SitemapInfo{}
+
+ pages, err := supplements.B2Client.Scan("")
+ if err != nil {
+ return sitemapInfo
+ }
+
+ for _, page := range pages {
+ sitemapInfo = append(sitemapInfo, router.SitemapInfo{
+ Loc: "/" + page.Lang + "/blog/" + page.FileName,
+ LastModified: page.ModifiedTime,
+ Priority: 1.0,
+ })
+ }
+
+ return sitemapInfo
+}
+
+func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) {
+ metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md")
+ if err != nil {
+ return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err)
+ }
+
+ return []router.MetaField{
+ {Property: "og:title", Content: metadata.Title},
+ {Property: "og:description", Content: fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate)},
+ {Property: "og:image", Content: fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", metadata.Thumbnail)},
+ {Property: "og:url", Content: fmt.Sprintf("%s/%s/blog/%s", templateMap["CanonicalEndpoint"], lang, c.Params("title"))},
+ {Property: "og:type", Content: "website"},
+ {Name: "twitter:card", Content: "summary_large_image"},
+ }, nil
+}
+
+func (r *BlogPageHandler) AddLinkedData(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) {
metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md")
if err != nil {
return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err)
}
- return map[string]string{
- "og:title": metadata.Title,
- "og:description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate),
- "og:image": fmt.Sprintf("https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp", metadata.Thumbnail),
- "twitter:card": "summary_large_image",
+ return map[string]any{
+ "@context": "https://schema.org",
+ "@type": "Article",
+ "headline": metadata.Title,
+ "description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate),
+ "author": map[string]string{"@type": "Person", "name": "Saya Andy"},
+ "datePublished": metadata.PublishedTime.UTC().Format(time.RFC3339),
}, nil
}