Джекилл берет файлы из папки с одинаковыми начальными буквами - PullRequest
0 голосов
/ 09 июля 2019

Эту проблему немного сложно описать.

Я пытаюсь записать путь к папке с изображениями, которая называется текущей 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>

В случаеНа странице под названием «Кевин N» оператор capture, приведенный выше, выведет pics/models/gallery/kevinn.

. Это работало раньше, но я только что добавил новый файл .md для новой страницы под названием «Кен».Существует старая страница под названием «Кеннет».Они оба начинаются с «Кен» в названии.Похоже, это создает проблемы с указанным выше циклом, так как capture захватывает путь к файлу для «Кена» и «Кеннета», добавляя изображения, подключенные к «Кеннету», после изображений, подключенных к «Кену».

Проблема возникает только на странице под названием «Кен».Если я захожу на страницу «Кеннет», она показывает только изображения «Кеннет», как и должно быть.Так что, похоже, существует какое-то поведение, когда код capture захватывает объекты с одинаковыми буквами в начале.

Есть предложения по решению этой проблемы?

Редактировать: Я подозреваю, что эта строка вызывает проблему: {% if image.path contains gallery_path %}, так как путь pics/models/gallery/kenneth содержит pics/models/gallery/ken.Есть ли способ быть более точным в этом сравнении?

1 Ответ

0 голосов
/ 09 июля 2019

Проблема вызвана тем, что gallery_path записывается без завершающей косой черты.Поэтому, когда {% if image.path contains gallery_path %} пытается увидеть, присутствует ли путь галереи в пути изображения, эта проверка становится истинной, поскольку pics/models/gallery/kenneth содержит pics/models/gallery/ken.

. Очень просто исправить это просто добавить косую черту.до 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/, поскольку завершающий слеш делает путь точным.

...