这个问题很难描述。
我正在尝试捕获一个图像文件夹的路径,该文件夹的标题类似于当前的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
。有什么方法可以使这种比较更加精确吗?
答案 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/
,因为结尾的斜杠使路径精确。