{% macro titleField(product) %} {%- import "_includes/forms" as forms -%} {{ forms.textField({ label: "Title"|t, locale: product.locale, id: 'title', name: 'title', value: product.title, placeholder: 'Enter title'|t, errors: product.getErrors('title'), first: true, autofocus: true, required: true, maxlength: 255 }) }} {% endmacro %} {% macro generalMetaFields(product) %} {%- import "_includes/forms" as forms -%} {{ forms.textField({ label: "Slug"|t, locale: product.locale, id: 'slug', name: 'slug', value: product.slug, placeholder: 'Enter slug'|t, errors: product.getErrors('slug')|merge(product.getErrors('uri')) }) }} {{ forms.dateTimeField({ label: 'Post Date'|t, id: 'postDate', name: 'postDate', value: product.postDate, errors: product.getErrors('postDate') }) }} {{ forms.dateTimeField({ label: 'Expiry Date'|t, id: 'expiryDate', name: 'expiryDate', value: product.expiryDate, errors: product.getErrors('expiryDate') }) }} {% endmacro %} {% macro behavioralMetaFields(product) %} {%- import "_includes/forms" as forms -%} {% if product.type.taxCategories|length > 1 %} {{ forms.selectField({ label: 'Tax Category'|t, name: 'taxCategoryId', value: product.taxCategoryId, required: true, options: product.type.getTaxCategories(true) }) }} {% else %} {{ forms.hidden({ name: "taxCategoryId", value: product.taxCategoryId }) }} {% endif %} {% if product.type.shippingCategories|length > 1 %} {{ forms.selectField({ label: 'Shipping Category'|t, name: 'shippingCategoryId', value: product.shippingCategoryId, required: true, options: product.type.getShippingCategories(true) }) }} {% else %} {{ forms.hidden({ name: "shippingCategoryId", value: product.shippingCategoryId }) }} {% endif %} {{ forms.checkboxField({ id: 'free-shipping', fieldLabel: 'Free Shipping'|t, name: 'freeShipping', checked: product.freeShipping, }) }} {{ forms.checkboxField({ id: 'promotable', fieldLabel: 'Promotable'|t, name: 'promotable', checked: product.promotable, }) }} {% endmacro %} {% macro generalVariantFields(variant) %} {%- import "_includes/forms" as forms -%} {% if variant.product.type.hasVariantTitleField and variant.product.type.hasVariants %} {{ forms.textField({ label: "Title"|t, locale: variant.locale, id: 'title', name: 'title', value: variant.title, placeholder: 'Enter title'|t, errors: variant.getErrors('title'), first: true, required: true, maxlength: 255 }) }} {% endif %} {{ forms.textField({ id: 'sku', label: 'SKU'|t, required: true, name: 'sku', value: variant.sku, placeholder: 'Enter SKU'|t, errors: variant.getErrors('sku') }) }} {{ forms.textField({ id: 'price', label: 'Price'|t, name: 'price', value: (variant.price == '0' ? '0'|number : (variant.price ? variant.price|number ?: '')), placeholder: 'Enter price'|t, unit: craft.commerce.primaryPaymentCurrency.iso, required: true, errors: variant.getErrors('price') }) }} {% set stockInput %}
{{ forms.text({ id: 'stock', name: 'stock', value: (variant.unlimitedStock ? '' : (variant.stock == '0' ? '0': (variant.stock ? variant.stock : ''))), placeholder: 'Enter stock'|t, disabled: variant.unlimitedStock }) }}
{{ forms.checkbox({ id: 'unlimited-stock', class: 'unlimited-stock', label: 'Unlimited'|t, name: 'unlimitedStock', checked: variant.unlimitedStock, }) }}
{% endset %} {{ forms.field({ id: 'stock', label: 'Stock'|t, required: true, errors: variant.getErrors('unlimitedStock')|merge(variant.getErrors('stock')), }, stockInput) }} {% set quantityRangeInput %}
{{ forms.text({ id: 'minQty', name: 'minQty', value: variant.minQty, placeholder: 'Any'|t, title: 'Minimum allowed quantity'|t }) }}
{{ 'to'|t }}
{{ forms.text({ id: 'maxQty', name: 'maxQty', value: variant.maxQty, placeholder: 'Any'|t, title: 'Maximum allowed quantity'|t }) }}
{% endset %} {{ forms.field({ id: 'minQty', label: 'Allowed Qty'|t, errors: variant.getErrors('minQty')|merge(variant.getErrors('maxQty')) }, quantityRangeInput) }} {% endmacro %} {% macro dimensionVariantFields(variant) %} {%- import "_includes/forms" as forms -%} {% set dimensionsInput %}
{{ forms.text({ id: 'length', name: 'length', value: (variant.length|number ?: ''), placeholder: 'Length'|t|upper[0:1], title: 'Length'|t, unit: craft.commerce.settings.dimensionUnits, errors: variant.getErrors('length') }) }}
/
{{ forms.text({ id: 'width', name: 'width', value: (variant.width|number ?: ''), placeholder: 'Width'|t|upper[0:1], title: 'Width'|t, unit: craft.commerce.settings.dimensionUnits, errors: variant.getErrors('width') }) }}
/
{{ forms.text({ id: 'height', name: 'height', value: (variant.height|number ?: ''), placeholder: 'Height'|t|upper[0:1], title: 'Height'|t, unit: craft.commerce.settings.dimensionUnits, errors: variant.getErrors('height') }) }}
{{ craft.commerce.settings.dimensionUnits }}
{% endset %} {{ forms.field({ label: 'Dimensions'|t, id: 'width' }, dimensionsInput) }} {{ forms.textField({ id: 'weight', label: 'Weight'|t, name: 'weight', value: (variant.weight|number ?: ''), placeholder: 'Enter weight'|t, unit: craft.commerce.settings.weightUnits, errors: variant.getErrors('weight') }) }} {% endmacro %}