2013-02-02 44 views
8

Tôi muốn đưa đoạn mã vào mẫu nhưng chỉ khi tệp đoạn mã tồn tại. Có cách nào tôi có thể làm được không?Shopify lỏng: Làm thế nào tôi có thể bao gồm điều kiện các đoạn trong chất lỏng Shopify?

Bây giờ tôi chỉ sử dụng:

{% include 'snippetName' %} 

Nhưng điều này ném lỗi:

Liquid error: Could not find asset snippets/snippetName.liquid 

Lý do tôi cần một chức năng như vậy là vì tôi có một quá trình nền mà thêm đoạn mã sau trên.

Trả lời

17

Đã xảy ra sự cố này. Đây là giải pháp của tôi:

{% capture the_snippet_content %}{% include the_snippet %}{% endcapture %} 
{% unless the_snippet_content contains "Liquid error" %} 
    {% include reviews_snippet %} 
{% endunless %} 

Về cơ bản nắm bắt nội dung của đoạn nội dung dưới dạng biến. Nếu không có đoạn Shopify tạo ra các lỗi:

Liquid error: Could not find asset snippets/caroline-flint-reviews.liquid

Vì vậy, hãy kiểm tra để xem nếu nó được tạo ra mà ... nếu do đó, không in đoạn : D

Tất nhiên điều này sẽ phá vỡ nếu bạn dự định đoạn mã của bạn để bao gồm "Lỗi chất lỏng" hoặc nếu Shopify thay đổi thông báo lỗi.

+0

Đó là một câu trả lời tuyệt vời !!! – vovafeldman

+0

Rất hữu ích. Vết thương bằng cách sử dụng tính năng này để tạo một hệ thống định tuyến đoạn mã dựa trên tay cầm – Leland

0

@vovafeldman Không chắc chắn lý do bạn không thể có đoạn mã trống, nhưng không có tệp nào tồn tại.

Tùy chọn duy nhất khác tôi có thể nghĩ là vì bạn đang sử dụng quy trình BG để tạo đoạn mã (và tôi giả sử tải đoạn mã đó), bạn luôn có thể sử dụng API mẫu để tải lên phiên bản mẫu bao gồm đoạn mã cùng một lúc.

2

Mở rộng câu trả lời của Jon;

Tạo một tập tin gọi snippet.liquid

{% capture snippet_content %}{% include snippet %}{% endcapture %} 
{% unless snippet_content contains "Liquid error" %} 
    {{ snippet_content }} 
{% endunless %} 

Sau đó, khi bạn muốn bao gồm một tập tin duy nhất nếu nó tồn tại

{% include 'snippet' with 'filename_of_include' %} 
+0

Triển khai rất gọn gàng. – Carlton