2012-11-07 25 views
8

Tôi có danh sách các tay cầm sản phẩm và tôi muốn tìm nạp sản phẩm dựa trên tay cầm này. Có vẻ như không có cách nào để nói với Liquid đi và lấy một sản phẩm. Tôi có thể làm điều này với API, nhưng nếu tôi sử dụng API thì tôi phải sử dụng JavaScript, và tôi sẽ phải sao chép HTML mà tôi đã có trong một đoạn mã, và cũng sao chép logic.Làm cách nào để truy xuất một sản phẩm cụ thể trong Shopify Liquid?

Một cắt giảm phiên bản của những gì tôi đang cố gắng:

{% assign handle = 'my-product-handle' %} 
{% assign product = products.handle %} 
{% include 'snippet-product-item' %} 

Trả lời

1

Theo như tôi biết bạn không thể lấy một sản phẩm bằng cách xử lý của nó trong chất lỏng.

Điều đó dẫn tôi đến hỏi một vài câu hỏi: Tại sao bạn có danh sách xử lý sản phẩm ngay từ đầu? Nó từ đâu đến? Tôi muốn khuyên bạn nên đặt những sản phẩm trong bộ sưu tập tùy chỉnh, sau đó bạn có thể tham khảo chúng như thế này: {% collections['my-collections'] %}

3

bạn có thể thử một cái gì đó như thế này:

{% for product in collection.all_products %} 
    {% if product.handle contains 'your-handle-name' %} 
     // Do what you want here 
    {% endif %} 
{% endfor %} 

Looping qua tất cả các sản phẩm (có thể cũng lặp qua một cụ thể bộ sưu tập), bạn có thể tìm thấy sản phẩm mong muốn bằng câu lệnh if.

Chúc mừng.

+0

Nó thực sự trông như thế này là lựa chọn duy nhất. Sau nhiều thử nghiệm và lỗi này là những gì Shopify lá chúng tôi (ngay cả trong năm 2015!) – cpres

+2

FYI: Shopify lỏng 'for' vòng có một giới hạn cứng của 50 sản phẩm.Nếu bộ sưu tập của bạn có hơn 50 sản phẩm, bạn sẽ không đạt được tất cả. Vì câu trả lời này đã được đăng, Shopify đã cho phép 'all_products ['handle']' truy cập một đối tượng sản phẩm bằng cách sử dụng 'handle'; như đã đề cập trong các câu trả lời gần đây hơn. – FactoryAidan

19

Bây giờ bạn có thể lấy một sản phẩm thông qua một xử lý bằng cách sử dụng sau đây:

{% assign someProduct = all_products.some-handle %} 

Hiện không có tài liệu hướng dẫn để trở lại này lên, nhưng hy vọng sẽ có một cái gì đó hữu hình trên Shopify bên sớm.

+0

Đã lưu ngày của tôi. Cảm ơn –

+1

Cả hai điều sau đều hợp lệ trong Shopify: '{{all_products ['some-handle']. Title}}' và '{{all_products.some-handle.title}}' – FactoryAidan

+0

Có cách nào để làm điều này với một bộ sưu tập chứa tất cả các sản phẩm thay vì all_products để chúng tôi không bị giới hạn ở mức 20? Và bạn có thể phân trang all_products không? – Buts

6

Chỉ cần cập nhật cho bất kỳ ai chỉ tìm thấy điều này, giờ đây bạn có thể tham khảo sản phẩm trực tiếp qua xử lý theo số all_products['handle'] theo số this response trên đại lý Shopify/repo của họ.

+0

hoạt động như một sự quyến rũ! – JoshHighland

4

Không chỉ bây giờ bạn có thể truy cập bất kỳ sản phẩm bằng cách xử lý của nó trên bất kỳ trang lỏng với all_products['the-handle-of-the-product'] nhưng bạn có thể đe dọa nó như một biến sản phẩm như vậy:

{{ all_products['the-handle-of-the-product'].title }} mà là giống như {{ product.title }} trên trang product.liquid .

1

Tôi cũng đang tìm kiếm điều này và tôi chưa tìm được cách để lấy sản phẩm bằng id bên trong các tệp chất lỏng.

Nhưng khi câu trả lời ở trên cho bạn có thể truy cập bất kỳ sản phẩm thông qua một tay cầm

{{ all_products['product-handle'] }}

Những gì tôi đã lo lắng về là tôi nghĩ nếu bạn thay đổi tên của tay cầm sản phẩm được thay đổi tự động, nhưng thực sự điều đó không xảy ra, nó vẫn sẽ là tay cầm cũ.

Bạn cần phải tạo một sản phẩm khác để thay đổi xử lý, vì vậy tôi đoán {{ all_products['product-handle'] }} là cách khá tốt để truy cập sản phẩm của bạn.

tôi làm điều gì đó như thế này:

{% assign product = all_products['test-product-1'] %} 
{% if product == blank %} 
    <h1>No product found</h1> 
{% else %} 
    <h1>{{ product.title }}</h1> 
{% endif %} 
Các vấn đề liên quan