【发布时间】:2021-05-23 14:25:20
【问题描述】:
我正在使用 Jekyll 创建博客,为了组织起见,我决定将图像放在文件夹下:“assets/img/[post name]/”。文件夹如下所示:
.
├── assets
│ ├── css
│ │ ├── BMFW.css
│ │ └── vs.css
│ └── img
│ └── 2021-05-23-Blog-presentation
│ └── test.jpg <--
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.html
├── _layouts
│ ├── layout.html
│ └── post.html
├── _posts
│ └── 2021-05-23-Blog-presentation.md
├── README.md
└── script
└── cibuild
似乎 page.name 变量由于某种原因不存在(我已经用{{page | inspect}} 进行了检查)所以我使用这一行来获取帖子的名称:
{{ page.path | replace: ".md","" | split: "/" | slice: -1 | }}
这意味着如果我想显示一个名为 test.jpg 的图像,我会写:

从一个图像到另一个图像的唯一变化是图像的名称。所以我的问题是:有没有办法设置基本路径,在我的情况下为{{ site.baseurl }}/assets/img/{{ page.path | replace: ".md","" | split: "/" | slice: -1 | }}/,所以我不必一遍又一遍地编写完整路径?
理想的解决方案是只需要写  或类似的。
编辑 1:
以防万一它对任何人有用,我现在正在做的是将这一行放在每个博客条目的开头:
{% assign media = site.baseurl | append: "assets/media/" | append: page.path | replace: ".md","" | replace: "_posts/","" %}
那么我就可以插入图片了:

这不是一个解决方案,因为我仍然必须在每篇文章的开头加上那一行,但比以前更好了。
编辑 2:
我希望在 Jekyll 中制作一些自定义插件,但我还没有找到访问页面属性的方法。
另一个选项是创建一个插入液体代码的自定义标签:{{site.baseurl | append: "assets/media/" | append: page.path | replace: ".md","" | replace: "_posts/","" }}。这个问题是,一旦执行了自定义标签,jekyll 就会继续执行并且不会执行新插入的液态代码。
【问题讨论】: