2013-05-13 7 views
11

Wie kann ich Jekyll verwenden, um das Vorhandensein einer Datei zu testen?Mit Jekyll auf Vorhandensein von Datei prüfen

Um zu verdeutlichen, ich möchte eine {% if %} Anweisung ausführen, um zu überprüfen, ob eine Bilddatei mit dem gleichen Namen wie die Seite ich bin auf.

Auf meiner Seite in der YAML Titelei:

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

In meinem Layout:

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

Antwort

16

Ab Jekyll 2 sind alle Site-Dateien über site.static_files verfügbar. Sie können damit prüfen, ob eine Datei existiert. Zum Beispiel:

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

unglaublich ineffizient. – KFunk

+0

@KFunk warum? Das Überprüfen der Dateiexistenz ist mit E/A verbunden und könnte sehr langsam sein, bis Sie eine Menge statischer Dateien haben. Außerdem, wenn es die einzige Lösung ist, würde ich es nehmen. – autra

+5

@KFunk Wahrscheinlich, aber Leistung ist nicht ein großes Problem mit Jekyll, da Sie nur die Kompilierungsstufe einmal tun. Es resultiert letztlich in schlichtem, altem statischem HTML. Wenn mein Build-Prozess noch ein paar Sekunden dauert, ist mir das wirklich egal. – Jonathan