2013-08-23 4 views
1

Я хочу отсортировать массив cart.items в файле cart.liquid. И затем я могу отображать время в таблице в ожидаемом порядке.Shopify Сортировать массив cart.items используя Liquid script

{% for item in cart.items sort_by:item.line_price %} 
    <div class="row"> 
     <div class="span12"> 
     <h1>Your cart</h1> 
     <form action="/cart" method="post" id="cartform"> 
     <table> 
     </table> 
     </form> 
     </div> 
    </div> 
    {% endfor %} 

Но код не работает, так как я не могу использовать sort_by:item.line_price в for заявлении.

Как я могу отсортировать массив с помощью встроенных функций?

Другая проблема: Liquid Shopify не поддерживает создание массива. если я использую свой собственный алгоритм для сортировки массива. Но как я могу сохранить вывод в новый массив?

Большое спасибо.

ответ

2

Вы можете просто отобразить данные в структуре данных Javascript, а затем отсортировать их. Используйте шаблон в Javascript. Handlebars.js хорошо работает для этого. Нет встроенной сортировки.

+0

Хорошо, я думал об этом раньше, он будет работать на странице cart.liquid. Но это не работает для «New Order Notification», потому что шаблон электронной почты не поддерживает JavaScript. –

6

Shopify имеет sort filter для «массива хешей или капель». Вы можете использовать его таким образом:

{% assign cart_items = cart.items | sort: "line_price" %} 
{% for item in cart_items %} 
- {{item.title}} {{item.line_price}}<br/> 
{% endfor %} 
+0

Могу ли я использовать настраиваемое поле типа «item.properties ['tags'] содержит« [Оборудование] »? –

+1

Нет, я так не думаю, прочитав [код] (https://github.com/Shopify/liquid/blob/c8f38ad9d0afda4d70da24f1e25cc7f577cf4e22/lib/liquid/standardfilters.rb#L83), который ** может ** быть внутренне используемый для Shopify, похоже, этот синтаксис не поддерживается. – hjblok

+0

Также элементы (line_items) не имеют полей 'properties'. Теги продукта доступны только в продукте ('item.product.tags'). – hjblok

Смежные вопросы