Candinya / Kratos-Rebirth

一个可爱而现代的 Hexo 主题
GNU General Public License v3.0
648 stars 81 forks source link

如何让根目录的索引指向站点目录 #176

Closed korin5 closed 1 year ago

korin5 commented 1 year ago

我在文章顶部输入:

pic: /images/index.png

我用 permalink 的默认值 :year/:month/:day/:title/

从而缩略图的实际目录是:

/2023/01/20/tittle/images/index.png

文章缩略图的根目录不在站点目录下,非常不方便

我想把图片全都放到 images 文件夹来索引,就只能用一长串的相对路径

如何让根目录的索引指向站点目录

Candinya commented 1 year ago

主题有这个考量,设置成从 // 起始的绝对路径就可以 但是看了一下代码,实现上有历史遗留问题(把 schema 的 : 也包含进去了,导致在调试的 http 和生产的 https 之间没法切换) 明天我调整一下吧

Candinya commented 1 year ago

链接使用完整绝对路径(比如 https://candinya.com/images/candinya.webp 这样)可以绕开相对路径补充,但暂时还是有域名的问题,我再想想办法

korin5 commented 1 year ago

要不干脆把绝对路径砍了,这样也不用写 //images/img.webp 了,直接写 /images/img.webp

layout/index.ejs 的138行和222行直接改成:

<img class="kratos-entry-thumb-new-img" src="<%- url_for(post.pic) %>" alt="">
ArcticLampyrid commented 1 year ago

但是...利用 assert folders 分别管理不同文章所依赖的图片是一种(不用图床的)常用用法

korin5 commented 1 year ago

但是...利用 assert folders 分别管理不同文章所依赖的图片是一种(不用图床的)常用用法

明白了,我刚入门不太了解

ArcticLampyrid commented 1 year ago
(new URL("relative1", "https://www.baidu.com/asd/")).toString()
'https://www.baidu.com/asd/relative1'

(new URL("/relativeToRoot", "https://www.baidu.com/asd/")).toString()
'https://www.baidu.com/relativeToRoot'

(new URL("//asd", "https://www.baidu.com/asd/")).toString()
'https://asd/'

(new URL("https://foo.bar/123/", "https://www.baidu.com/asd/")).toString()
'https://foo.bar/123/'

也许我们应该按照 URL 的标准做法来处理相对路径,//xxx 应该是包含域名但不包含 http/https 的路径,/abc 是绝对路径,asd 这种不以斜杠开头的才是相对路径

For developers and maintainers: ATTENTION: This is a breaking change

ArcticLampyrid commented 1 year ago

考虑站点配置中的 root 字段 /abc 这种绝对路径 或许 要从 site config 的 root 开始算,而不是从域名根目录开始算