2013-05-13 20 views
11

Jak mogę użyć Jekyll do sprawdzenia istnienia pliku?Sprawdzanie istnienia pliku przy użyciu Jekyll

Aby wyjaśnić, chcę uruchomić instrukcję {% if %}, aby sprawdzić, czy plik obrazu istnieje z taką samą nazwą jak strona, na której się znajduje.

Na mojej stronie w przedniej materii YAML:

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

W moim układzie:

{% 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 %} 

Odpowiedz

16

Od Jekyll 2 wszystkie pliki stron są dostępne pod numerem site.static_files. Możesz użyć tego do sprawdzenia, czy plik istnieje. Na przykład:

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

Niesamowicie nieefektywny. – KFunk

+0

@KFunk dlaczego? Sprawdzanie istnienia pliku wymaga operacji we/wy i może być wolniejsze, dopóki nie pojawi się sporo statycznych plików. Ponadto, jeśli to jedyne rozwiązanie, wziąłbym to. – autra

+5

@KFunk Prawdopodobnie, ale wydajność nie jest zbyt wielkim problemem z Jekyll, ponieważ wykonujesz tylko etap kompilacji. W efekcie powstaje zwykły stary statyczny HTML. Jeśli mój proces kompilacji zajmie jeszcze kilka sekund, szczerze mówiąc, nie obchodzi mnie to. – Jonathan

Powiązane problemy