{% macro titleField(product) %} {%- import "_includes/forms" as forms -%} {{ forms.textField({ label: "Title"|t('commerce'), site: product.site, id: 'title', name: 'title', value: product.title, placeholder: 'Enter title'|t('commerce'), 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('commerce'), site: product.site, id: 'slug', name: 'slug', value: product.slug, placeholder: 'Enter slug'|t('commerce'), errors: product.getErrors('slug')|merge(product.getErrors('uri')) }) }} {{ forms.dateTimeField({ label: 'Post Date'|t('commerce'), id: 'postDate', name: 'postDate', value: product.postDate, errors: product.getErrors('postDate') }) }} {{ forms.dateTimeField({ label: 'Expiry Date'|t('commerce'), id: 'expiryDate', name: 'expiryDate', value: product.expiryDate, errors: product.getErrors('expiryDate') }) }} {% endmacro %} {% macro behavioralMetaFields(product) %} {%- import "_includes/forms" as forms -%} {% if product.getType().taxCategories|length > 1 %} {% set taxCategories = [] %} {% for taxCategory in product.getType().taxCategories %} {% set taxCategories = taxCategories|merge([{'value': taxCategory.id, 'label': taxCategory.name}]) %} {% endfor %} {{ forms.selectField({ label: 'Tax Category'|t('commerce'), name: 'taxCategoryId', value: product.taxCategoryId, required: true, options: taxCategories }) }} {% else %} {{ forms.hidden({ name: "taxCategoryId", value: product.taxCategoryId }) }} {% endif %} {% if product.getType().shippingCategories|length > 1 %} {% set shippingCategories = [] %} {% for shippingCategory in product.getType().shippingCategories %} {% set shippingCategories = shippingCategories|merge([{'value': shippingCategory.id, 'label': shippingCategory.name}]) %} {% endfor %} {{ forms.selectField({ label: 'Shipping Category'|t('commerce'), name: 'shippingCategoryId', value: product.shippingCategoryId, required: true, options: shippingCategories }) }} {% else %} {{ forms.hidden({ name: "shippingCategoryId", value: product.shippingCategoryId }) }} {% endif %} {{ forms.checkboxField({ id: 'available-for-purchase', fieldLabel: 'Available for purchase'|t('commerce'), name: 'availableForPurchase', checked: product.availableForPurchase, }) }} {{ forms.checkboxField({ id: 'free-shipping', fieldLabel: 'Free Shipping'|t('commerce'), name: 'freeShipping', checked: product.freeShipping, }) }} {{ forms.checkboxField({ id: 'promotable', fieldLabel: 'Promotable'|t('commerce'), name: 'promotable', checked: product.promotable, }) }} {% endmacro %} {% macro generalVariantFields(variant) %} {%- import "_includes/forms" as forms -%} {%- import "commerce/_includes/forms/commerceForms" as commerceForms -%} {% if variant.product.getType().hasVariantTitleField and variant.product.getType().hasVariants %} {{ forms.textField({ label: "Title"|t('commerce'), site: variant.site, id: 'title', name: 'title', value: variant.title, placeholder: 'Enter title'|t('commerce'), errors: variant.getErrors('title'), first: true, required: true, maxlength: 255 }) }} {% endif %} {{ forms.textField({ id: 'sku', label: 'SKU'|t('commerce'), required: true, name: 'sku', value: variant.sku, placeholder: 'Enter SKU'|t('commerce'), class: 'code', errors: variant.getErrors('sku') }) }} {{ forms.textField({ id: 'price', label: 'Price'|t('commerce')~' ('~craft.commerce.paymentCurrencies.primaryPaymentCurrency.iso|upper~')', name: 'price', value: (variant.price == '0' ? '0'|number : (variant.price ? variant.price|number ?: '')), placeholder: 'Enter price'|t('commerce'), required: true, errors: variant.getErrors('price') }) }} {% set stockInput %}