hugo-next / hugo-theme-next

Easily & powerful theme for Hugo engine.
https://hugo-next.eu.org
MIT License
209 stars 37 forks source link

分类页面无法正常显示小写英文字母开头的类别下文章数量 #136

Closed hxhue closed 1 week ago

hxhue commented 3 months ago

请按照此 Issue 模版提供相关信息,例如源码仓库、网站链接和屏幕截图,这将有助于我们进行调查。 (Please follow this Issue template to provide relevant information, such as source code repository, website URL and screenshots, which will help us investigate.)

问题自检列表 (Issue Checklist)

请确认如下情况已检查,并将 [ ] 换成 [x] 来选择 (Change [ ] to [x] to selected which your could make sure)


预期行为 (Expected behavior)

请描述你想实现的预期效果 (Please describe the expected behavior what you want)

分类数量是实际数量。

实际行为 (Actual behavior)

请同时提供网站链接、屏幕截图和源码地址 (Please provide your site links, screenshots and code repository)

分类数量为 0。

image

问题重现步骤 (Steps to reproduce the behavior)

所有文章的 categories 都是小写,单词之间用连字符链接。比如:

---
date: YYYY-MM-DD
categories:
  - some-category
---

可能问题:

https://github.com/hugo-next/hugo-theme-next/blob/8405b789e9857a040705f3beb9aad1fd21b61b89/layouts/_default/terms.html#L25-L31

在第 26 行首先获取了 category 的 title case,然后在第 30-31 行直接和文章的第一个 category 比较,所以会失败。将第 30-31 行改成这样就能正常获取类别下的文章数量(实测能成功):

            {{ range $pages }}
              {{ if eq (title (index .Params.categories 0)) $primaryCategory }}

环境信息 (Environment Information)

主题配置(Configuration)

提供主题 config.yaml 中修改过的部分内容 (Paste ONLY CHANGED CONFIGURATION from config.yaml)

config.yaml ```yaml relativeLinks: true uglyURLs: true summaryLength: 140 #! 默认是 70 theme: hugo-theme-next # 站点默认的语言和代码 defaultContentLanguage: zh-cn languageCode: zh-CN menus: main: - identifier: home name: 首页 pageref: / pre: home weight: 1 - identifier: about name: 关于 pageref: /about.html pre: user weight: 2 - identifier: archives name: 归档 pageref: /archives.html pre: archive weight: 3 - identifier: categories name: 分类 pageref: /categories.html pre: th weight: 4 - identifier: tags name: 标签 pageref: /tags.html pre: tags weight: 5 # 站点基本信息 # Site Information Settings author: 😋 subtitle: "" description: 个人博客 keywords: "" ```

其他有用信息 (Other Information)

例如:操作系统、浏览器等 (e.g. Browser, System)

环境信息 ```txt 版本 Windows 11 家庭中文版 版本 23H2 安装日期 ‎2024/‎4/‎1 操作系统版本 22631.3374 体验 Windows Feature Experience Pack 1000.22688.1000.0 处理器 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz 2.21 GHz 机带 RAM 16.0 GB (15.9 GB 可用) 设备 ID 8AA07571-193D-49D8-9D50-9329677CFB6D 产品 ID 00342-35052-49627-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 笔和触控 没有可用于此显示器的笔或触控输入 ```
elkan1788 commented 3 months ago

确实是有些问题,欢迎直接提交PR进行修复😁

hxhue commented 3 months ago

确实是有些问题,欢迎直接提交PR进行修复😁

我的做法比较 error-prone,如果所有 tags 都用 titlecase 去比较,tags 就变得大小写不敏感了。我对 Hugo 不熟悉,没找到获取当前页真正标签名的方法(.Page.Title 获取的标签已经转换大小写了),不知道怎么处理😢。我原来用的 Hexo 处理标签是大小写敏感的。

hxhue commented 3 months ago

我找到对应的属性名了,已经提交 PR。

zanxj commented 1 month ago

我找到对应的属性名了,已经提交 PR。

怎么解决的?代码有些看不懂

hxhue commented 1 month ago

我找到对应的属性名了,已经提交 PR。

怎么解决的?代码有些看不懂

@zanxj 之前分类依据的是类别子页面的标题名,但是标题名并不等于类别名。标题名会去掉某些字符、换成 title case 等,这样在后面的逻辑中标题名和类别名判等就可能会因为大小写不同而失败。

zanxj commented 1 month ago

我找到对应的属性名了,已经提交 PR。

怎么解决的?代码有些看不懂

@zanxj 之前分类依据的是类别子页面的标题名,但是标题名并不等于类别名。标题名会去掉某些字符、换成 title case 等,这样在后面的逻辑中标题名和类别名判等就可能会因为大小写不同而失败。

根据你提交的PR,修改layouts/_default/terms.html{{ $primaryCategory := .Name }} ,但出现了新问题,见下图👇

Q1

Q2

建议重新开放该问题等待修复……

elkan1788 commented 1 month ago

是的,在开发分支对PR暂时已回滚:L25C11-L31C50

之前和Hugo作者沟通过,他们不认可二级分类的概念,所以在想要不就移除这段二级分类的功能,这样使用分类统计就正常。

现在二级分类也就是有个Bug,就是在每次有新文章发布时,分类显示的顺序会发生改变。😂

zanxj commented 1 month ago

是的,在开发分支对PR暂时已回滚:L25C11-L31C50

之前和Hugo作者沟通过,他们不认可二级分类的概念,所以在想要不就移除这段二级分类的功能,这样使用分类统计就正常。

现在二级分类也就是有个Bug,就是在每次有新文章发布时,分类显示的顺序会发生改变。😂

赞成,如果没有很好的解决方案,建议开发版保留,正式版移除二级分类支持。二级分类问题可以继续开放讨论,等未来有能力者参与修复。建议还是优先解决当前主题一级分类英文名称不显示文章数量问题👇

20240628141120