2013-05-13 34 views
11

Tôi làm cách nào để sử dụng Jekyll để kiểm tra sự tồn tại của một tệp?Kiểm tra sự tồn tại của tập tin bằng cách sử dụng Jekyll

Để làm rõ, tôi muốn chạy câu lệnh {% if %} để kiểm tra xem tệp hình ảnh có tồn tại với tên giống với trang tôi đang truy cập không.

Trên trang của tôi trong vấn đề trước YAML:

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

Trong cách bố trí của tôi:

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

Trả lời

16

Kể từ Jekyll 2, tất cả các tệp trang web đều có sẵn qua site.static_files. Bạn có thể sử dụng điều này để kiểm tra xem tệp có tồn tại hay không. Ví dụ:

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

Cực kỳ không hiệu quả. – KFunk

+0

@KFunk tại sao? Kiểm tra sự tồn tại của tập tin liên quan đến I/O và có thể rất chậm hơn so với điều này cho đến khi bạn có khá nhiều tệp tĩnh. Ngoài ra, nếu đó là giải pháp duy nhất, tôi sẽ lấy nó. – autra

+5

@KFunk Có lẽ, nhưng hiệu suất không phải là mối quan tâm lớn với Jekyll, vì bạn chỉ làm giai đoạn biên dịch một lần. Nó cuối cùng dẫn đến HTML tĩnh cũ đơn giản. Nếu quá trình xây dựng của tôi mất thêm vài giây nữa, tôi thực sự không quan tâm. – Jonathan

Các vấn đề liên quan