2013-05-13 3 views
11

Как я могу использовать Jekyll для проверки наличия файла?Проверить наличие файла с помощью Jekyll

Чтобы уточнить, я хочу запустить оператор {% if %}, чтобы проверить, существует ли файл изображения с тем же именем, что и страница, на которой я включен.

На моей странице в вводной части YAML:

---- 
    reference-design: true 
---- 

В моем макете:

{% if page.reference-design %} 
    {% assign filename = page.path | remove_first: '.html' %} 
    <!-- How can I check if file actually exists? --> 
    <img src="images/reference_designs/{{ filename }}.png"> 
{% endif %} 

ответ

16

Начиная с Jekyll 2, все файлы сайта доступны через site.static_files. Вы можете использовать это, чтобы проверить, существует ли файл. Например:

{% for static_file in site.static_files %} 
    {% if static_file.path == '/favicon.ico' %} 
     {% assign favicon = true %} 
    {% endif %} 
{% endfor %} 
+2

Невероятно неэффективно. – KFunk

+0

@KFunk почему? Проверка существования файла связана с I/O и может быть очень медленным, чем это, пока у вас не будет достаточно много статических файлов. Кроме того, если это единственное решение, я бы взял его. – autra

+5

@KFunk Наверное, но производительность не очень большая проблема с Jekyll, так как вы только на этапе компиляции. Это в конечном итоге приводит к простому старому статическому HTML. Если мой процесс сборки займет еще несколько секунд, мне, честно говоря, все равно. – Jonathan