-
-
Save shopifypartners/4d595dd0b799965b3ed3395ba84d9524 to your computer and use it in GitHub Desktop.
Create an order form for a collection - http://shopify.com/partners/blog/93657286-4-advanced-shopify-theming-techniques-to-add-to-your-workflow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% comment %} | |
Source: https://gist.github.com/carolineschnapp/9122054 | |
If you are not on a collection page, do define which collection to use in the order form. | |
Use the following assign statement, replace 'your-collection-handle-here' with your collection handle. | |
{% assign collection = collections.your-collection-handle-here %} | |
Use the assign statement outside of this comment block at the top of your template. | |
{% endcomment %} | |
{% paginate collection.products by 100 %} | |
{% if collection.products_count > 0 %} | |
<div> | |
<h1>{% if template contains 'page' %}{{ page.title }}{% else %}{{ collection.title }}{% endif %}</h1> | |
<input type="submit" value="Add to the cart" /> | |
</div> | |
{% else %} | |
<h1>{% if template contains 'page' %}{{ page.title }}{% else %}{{ collection.title }}{% endif %}</h1> | |
{% endif %} | |
{% if template contains 'page' and page.content.size > 0 %} | |
<div class="rte"> | |
{{ page.content }} | |
</div> | |
{% elsif collection.description.size > 0 %} | |
<div class="rte"> | |
{{ collection.description }} | |
</div> | |
{% endif %} | |
{% if collection.products_count > 0 %} | |
<table> | |
<tbody> | |
{% for product in collection.products %} | |
{% if product.available %} | |
{% for variant in product.variants %} | |
{% if variant.available %} | |
<tr class="{% cycle 'pure-table-odd', '' %}"> | |
<td> | |
<a href="{{ variant.url | collection }}"> | |
<img src="{{ variant.image | default: product.featured_image | img_url: 'small' }}" alt="{{ variant.title | escape }}" /> | |
</a> | |
</td> | |
<td> | |
<a href="{{ variant.url | collection }}"> | |
{{ product.title }}{% unless variant.title contains 'Default' %} - {{ variant.title }}{% endunless %}{% unless variant.sku == blank %} - {{ variant.sku }}{% endunless %} | |
</a> | |
</td> | |
<td> | |
{{ variant.price | money }} | |
</td> | |
<td style="text-align:right;"> | |
<input name="updates[{{ variant.id }}]" onfocus="this.select()" class="quantity field" min="0" {% unless variant.inventory_management == blank or variant.inventory_policy == 'continue' %} max="{{ variant.inventory_quantity }}" {% endunless %} type="text" value="0" tabindex="1" /> | |
</td> | |
</tr> | |
{% endif %} | |
{% endfor %} | |
{% endif %} | |
{% endfor %} | |
</tbody> | |
</table> | |
<div> | |
<input type="submit" value="Add to the cart" /> | |
</div> | |
{% else %} | |
<p>There are no products in this view.</p> | |
{% endif %} | |
{% endpaginate %} | |
{% if collection.products_count > 0 %} | |
<script> | |
jQuery(function($) { | |
$('table .quantity:first').focus(); | |
$('[max]').change(function() { | |
var max = parseInt($(this).attr('max'), 10); | |
var value = parseInt($(this).val(), 10) || 0; | |
if (value > max) { | |
alert('We only have ' + max + ' of this item in stock'); | |
$(this).val(max); | |
} | |
}); | |
}); | |
</script> | |
{% endif %} | |
<style> | |
.action-bar { margin: 15px 0; } | |
.action-bar.top { margin: 30px 0 0; } | |
.action-bar h1 { margin:0; padding: 0; line-height:1 } | |
.left { float: left; } | |
.right { float: right; } | |
.clearfix:before, .clearfix:after { content: ""; display: table; } | |
.clearfix:after { clear: both; } | |
.clearfix { zoom: 1; } | |
/* Additional styles for table */ | |
table.pure-table { margin: 15px 0; width: 100%; } | |
table.pure-table tr td:first-child, table.pure-table tr th:first-child { padding-left: 12px; } | |
table.pure-table tr td:last-child, table.pure-table tr th:last-child { padding-right: 12px; } | |
table.pure-table img { float:left; padding: 5px 0; } | |
table.pure-table td { vertical-align: middle; } | |
.quantity { text-align: center; width: 60px !important; margin: 0 !important; } | |
</style> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi! When I use this I get the following error message
Liquid error: Array 'collection.products' is not paginateable.
Would you know how to resolve this issue?