Jekyll从文件夹中读取首字母相同的文件

时间:2019-07-09 13:55:42

标签: jekyll

这个问题很难描述。

我正在尝试捕获一个图像文件夹的路径,该文件夹的标题类似于当前的page.title,但已压缩。换句话说,如果当前页面标题为“ Kevin N”,则图像文件夹名为“ kevinn”,并且page.title | slugify过滤器将在下面的代码中输出它。

<div class="model-gallery">
{% capture gallery_path %}pics/models/gallery/{{ page.title | slugify | replace: '-','' | replace: 'å','a' | replace: 'ä','a' | replace: 'ö','o' }}{% endcapture %}
{% for image in site.static_files %}
    {% if image.path contains gallery_path %}
        {{image.size}}
        <img class="gallery-item" src="{{ site.baseurl }}{{ image.path }}" alt="{{page.title}}, {{site.title}}" />
    {% endif %}
{% endfor %}
</div>

在页面标题为“ Kevin N”的情况下,上面的capture语句将输出pics/models/gallery/kevinn

这以前曾经起作用,但是我只是为名为“ Ken”的新页面添加了一个新的.md文件。存在一个名为“ Kenneth”的旧页面。它们的标题都以“ Ken”开头。这似乎在上面的循环中造成了问题,因为capture都在抓取“ Ken”和“ Kenneth”的文件路径,并在连接到“ Ken”的图像之后添加了连接到“ Kenneth”的图像。 / p>

仅在标题为“肯”的页面上出现此问题。如果我访问“肯尼思”页面,它只会像显示的那样显示“肯尼思”图像。因此,似乎有一种行为,其中capture代码正在抓取开头具有相同字母的实体。

有解决此问题的建议吗?

编辑: 我怀疑这行引起了问题: {% if image.path contains gallery_path %},因为路径pics/models/gallery/kenneth确实包含pics/models/gallery/ken。有什么方法可以使这种比较更加精确吗?

1 个答案:

答案 0 :(得分:0)

该问题是由于写入gallery_path时没有结尾斜杠引起的。因此,当{% if image.path contains gallery_path %}试图查看图像路径中是否存在图库路径时,由于pics/models/gallery/kenneth包含pics/models/gallery/ken,因此该检查为true。

非常简单的解决方法是在过滤器后面的gallery_path后面添加斜杠,如下所示:

{% capture gallery_path %}pics/models/gallery/{{ page.title | slugify | replace: '-','' | replace: 'å','a' | replace: 'ä','a' | replace: 'ö','o' }}/{% endcapture %}

有了这个,pics/models/gallery/kenneth不再包含pics/models/gallery/ken/,因为结尾的斜杠使路径精确。