diff --git a/internal/controller/space_controller.go b/internal/controller/space_controller.go index 7d1f063..7ec1015 100644 --- a/internal/controller/space_controller.go +++ b/internal/controller/space_controller.go @@ -179,21 +179,25 @@ func (ctrl *SpaceController) loadCollectionsData(c *gin.Context, data gin.H, uid data["FoldersResult"] = folders // 默认展示第一个收藏夹的内容 - activeFolderID := c.DefaultQuery("folder", "") - if activeFolderID == "" && len(folders.Folders) > 0 { - activeFolderID = strconv.FormatUint(uint64(folders.Folders[0].ID), 10) + folderParam := c.DefaultQuery("folder", "") + var activeFolderID uint + if folderParam != "" { + fid, parseErr := strconv.ParseUint(folderParam, 10, 64) + if parseErr == nil { + activeFolderID = uint(fid) + } + } + if activeFolderID == 0 && len(folders.Folders) > 0 { + activeFolderID = folders.Folders[0].ID } var folderItems *service.FolderItemsResult - if activeFolderID != "" { - fid, parseErr := strconv.ParseUint(activeFolderID, 10, 64) - if parseErr == nil { - items, itemErr := ctrl.favoriteSvc.ListFolderItems(uid, uint(fid), page, pageSize) - if itemErr != nil || items == nil { - folderItems = &service.FolderItemsResult{Items: []model.FolderItem{}, Total: 0} - } else { - folderItems = items - } + if activeFolderID > 0 { + items, itemErr := ctrl.favoriteSvc.ListFolderItems(uid, activeFolderID, page, pageSize) + if itemErr != nil || items == nil { + folderItems = &service.FolderItemsResult{Items: []model.FolderItem{}, Total: 0} + } else { + folderItems = items } } if folderItems == nil { @@ -201,6 +205,17 @@ func (ctrl *SpaceController) loadCollectionsData(c *gin.Context, data gin.H, uid } data["FolderItems"] = folderItems data["ActiveFolderID"] = activeFolderID + + // 找到当前激活的收藏夹对象传给模板 + var activeFolder *model.Folder + for i := range folders.Folders { + if folders.Folders[i].ID == activeFolderID { + activeFolder = &folders.Folders[i] + break + } + } + data["ActiveFolder"] = activeFolder + data["Page"] = page data["TotalPages"] = folderItems.TotalPages data["PrevPage"] = max(1, page-1) diff --git a/internal/theme/loader.go b/internal/theme/loader.go index a9ccc0e..9064382 100644 --- a/internal/theme/loader.go +++ b/internal/theme/loader.go @@ -22,8 +22,10 @@ func LoadTemplates(roots ...TemplateRoot) (*template.Template, error) { funcMap := template.FuncMap{ "add": func(a, b int) int { return a + b }, "subtract": func(a, b int) int { return a - b }, - "formatTTL": formatTTL, - "assetV": common.AssetV, + "formatTTL": formatTTL, + "formatCount": formatCount, + "str": str, + "assetV": common.AssetV, "substr": func(s string, start, length int) string { runes := []rune(s) if start >= len(runes) { @@ -100,3 +102,19 @@ func formatTTL(minutes int) string { } return fmt.Sprintf("%d 天 %d 小时", days, remainHours) } + +// formatCount 将 int64 数字格式化为简洁中文计数(如 "2.5万"、"70.3万"、"0") +func formatCount(n int64) string { + if n < 10000 { + return fmt.Sprintf("%d", n) + } + if n < 100000000 { + v := float64(n) / 10000.0 + return fmt.Sprintf("%.1f万", v) + } + v := float64(n) / 100000000.0 + return fmt.Sprintf("%.1f亿", v) +} + +// str 将 uint 转为字符串,用于模板中与字符串比较 +func str(n uint) string { return fmt.Sprintf("%d", n) } diff --git a/templates/MetaLab-2026/html/space/index.html b/templates/MetaLab-2026/html/space/index.html index dc7557b..347ac91 100644 --- a/templates/MetaLab-2026/html/space/index.html +++ b/templates/MetaLab-2026/html/space/index.html @@ -351,7 +351,7 @@ {{if .FoldersResult}} {{range $f := .FoldersResult.Folders}} {{$f.Name}} @@ -366,32 +366,21 @@
{{if .FoldersResult}} {{if gt (len .FoldersResult.Folders) 0}} - {{/* 找到当前激活的收藏夹 */}} - {{$activeFolder := ""}} - {{range $f := .FoldersResult.Folders}} - {{if eq (str $.ActiveFolderID) (str $f.ID)}} - {{$activeFolder = $f}} - {{end}} - {{end}} - - {{if $activeFolder}} + {{if .ActiveFolder}}
- {{if $activeFolder.Description}}
- {{end}}
-

{{$activeFolder.Name}}

+

{{.ActiveFolder.Name}}

- {{if $activeFolder.IsPublic}}公开{{else}}私密{{end}} - · 视频数 {{.FolderItems.Total}} + {{if .ActiveFolder.IsPublic}}公开{{else}}私密{{end}} + · 文章数 {{.FolderItems.Total}}

-
@@ -406,14 +395,8 @@
-