Posts.category的title属性问题
Hi,
最近遇到一个问题,想找一个优雅的解决方法。
问题是:
在做分类页面的时候,类别是按Posts.category.title来提取的,也就是相对应的文件夹名字。
作为中文站,当然希望分类的名字也是中文,于是我所有的文章都是写在不同的中文文件夹中。
不过其实在渲染的时候可以看到所有的中文文件夹名称,都被转化为对应的拼音作为路径显示在浏览器中,这没问题。
问题出现在,当我在文章中使用相对引用,引用该中文文件夹下的/images目录中的图片时(比如./images/abc.jpg),md的渲染没问题,因为图片路径会依然按照后台路径去找。但如果使用嵌套链接的写法,希望图片可点击放大成原图,即,就会出现超链的路径是拼音非后台,所以会找不到放大的原图。
想问问有什么好的解决方法呢?
demo:https://tomatoegg.tk/post/gong-cheng-shi/2017-11-24-nabula-writesup-level08
里面的第一张图片
多谢,
丢失了嵌套的写法...
```
[](./images/abc.jpg)
```
这样子如果`.`的路径是中文的话,就前台后台的路径不同了。
嵌套是这样写的:
[ ! [](./images/abc.jpg)] (./images/abc.jpg)
前几发怎么老是有一部分被吃掉...但愿这次发完整了...
@Liu Zheng, 你好呀。
URL 和 Filepath 毕竟不一样, 属于外部不可控。 图片可以呈现,是因为 Bitcron 的 Markdown解析引擎会最终将这个 URL 转义为 绝对路径的。
问题来了,转义的逻辑是针对 img 标签上的 src, 不可能是针对 A 标签下的子标签。 所以,从 Bitcron 系统上来看, 你是无法得到直接的解决方案的。
但是,自己解决起来的办法很多呀。
比如,不要使用相对的图片地址的写法…… 或者前端脚本再处理,这样得到的图片地址是直接有效的。
@Hepo 你好呀~
我在想另一个思路,不知道行不行。
我的需求是:
1. 分类页面显示中文分类;
2. 图片链接可嵌套(前后台链接统一)。
那么能不能用英文名分类文章,但分类显示的时候显示中文就好了。
笨办法是在分类页面 /categories 一个个hardcode中文标题,用超链指向不同的子分类 /category 。优雅的办法是用迭代器来做,只是目前迭代的是Posts.category.title,而这个属性已经钉死是文件夹名字。有没有别的方法(我没有找到Posts.category的别的可自定义的属性),如果可以用别的属性来迭代就可以实现:“英文文件夹,但分类自动显示中文”啦。
请原谅非前端工程师的脑回路~
@wellsleep https://pi.bitcron.com/post/markdown_metadata#toc_0
不是很明白,但是 category.metadata 也是可以有的, 就是在文件夹下面放置一个 index.md, 然后 index.md 的 metadata 会存储在对应的(父) category 上。 :)
@Hepo 多谢~我试试看。
@Hepo 按照你给的方法我尝试了一下,有点小问题。
如果在/生活 文件夹下建立index.md,index.md的metadata部分如果我修改title, date,通过posts.category.title/date都可以正常继承(或者说“传送给文件夹的属性”更准确)。但是tag属性,以及自定义属性(比如cat-title),就无法继承给posts.category.tag或posts.category.cat-title(结果为空)。这里是有什么限制吗?我本意是希望能通过自定义index.md的meta来覆盖由文件名定义posts.category.title的内容。
不知道我说清楚没有。
非常感谢!
@Hepo
简单来说,就是希望:
1. 将/生活 文件夹更名为 /life
2. 由于文件夹更名,所以posts.category.title == life
3. 但是迭代分类的时候我又想要中文的名字,所以希望posts.category.cat-title == 生活
这样的话,所有的前后台路径统一为/life/xxx.md, /life/_images/yyy.jpg就不会出现图片直链翻译出错了。
同时用`for category in posts.categories`迭代时,可以从posts.category.cat-title直接取出中文分类名字。
但是目前的问题是,无法由/life/index.md的meta
```
cat-title: 生活
```
定义posts.category.cat-title的值,读出来的值是空。
这下应该说清楚了...
@Hepo 原来是我粗心,关键词中间不能用中横杠`-`
已经用posts.category.metadata.ctitle成功取到index.md的ctitle属性啦~
非常感谢~