如何使用 html 选择元素的值对 Shopify 液体中的集合进行排序
How to use value of html select element to sort collection in Shopify liquid
我有以下html选择元素:
<div class="sort-collection-by">
<label for="sort-by">Sort by</label>
<select id="sort-by">
<option value="manual">Featured</option>
<option value="price-ascending">Price: Low to High</option>
<option value="price-descending">Price: High to Low</option>
<option value="title-ascending">A-Z</option>
<option value="title-descending">Z-A</option>
<option value="created-ascending">Oldest to Newest</option>
<option value="created-descending">Newest to Oldest</option>
<option value="best-selling">Best Selling</option>
</select>
</div>
我想在以下液体标签中使用所选选项,我已经指示SELECT_CHOICE_HERE。
{% assign sorted_products = collection.products | sort: SELECT_CHOICE_HERE %}
{% for product in sorted_products %}
我想在选择元素值更改时立即执行排序操作。
感谢您的任何帮助。
Funk Doc 关于遵循此的建议 Shopify 教程也是我推荐的。
此要点(来自上面的教程)显示了如何将事件处理程序绑定到sort-by
下拉列表中的"change"事件,从而在下拉列表中的选定值更改时触发排序:
jQuery('#sort-by').bind('change', function() {
Shopify.queryParams.sort_by = jQuery(this).val();
location.search = jQuery.param(Shopify.queryParams).replace(/'+/g, '%20');
});
这需要在Javascript中完成的原因是因为Liquid是在服务器端渲染的,所以:
{% assign sorted_products = collection.products | sort: SELECT_CHOICE_HERE %}
。在用户有机会从下拉菜单中选择选项之前,已经呈现。这里需要Javascript来处理客户端的用户事件。
相关文章:
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 如何合并不同集合的游标并按日期排序
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 骨干.js具有多种排序的集合
- 对JavaScript集合中的对象进行排序
- 使用多个键对MongoDB中的集合进行排序
- 在主干集合中对模型进行排序的奇怪行为
- 根据三个模型属性对主干集合进行排序
- 具有主干集合的可排序表
- 根据模型属性对主干集合进行排序
- 通过最大的嵌入式文档对文档集合进行排序 mongodb
- 按字母顺序对主干集合进行排序
- 流星:等待客户端排序的集合
- 如何在Meteor中使用两个按时间排序的不同模板显示两个不同的集合
- 如何以“Rs. 350,40”格式将价格作为字符串对集合进行排序
- 主干集合排序按多个属性
- Backbone.js自定义集合排序
- SproutCore集合排序
- 按xpages中值的总和对文档集合排序
- Minimongo不能在客户端进行集合排序