Note: Attribute Machine currently does not work with Multi-Add
The only thing that is required for the Multi-Add is the input name changes within the Example Category Product List and Example Product Attribute files. Everything else is just to show a completed category page.
Create a new Multi-Add category page within Miva.
Create a copy of your CTGY page. You could call it, "CTGY_MULTI". Assign all of items that CTGY has to CTGY_MULTI, and transfer all of the page template code from CTGY to CTGY_MULTI as well.
Here are some example items, templates, and settings I ended up migrating:
Code | Module |
---|---|
affiliatelink | CSSUI Affiliate Sign-in Link |
breadcrumbs | CSSUI Smart Breadcrumbs |
buttons | CSSUI Buttons |
category | Standard Category Fields |
category_listing | CSSUI Product List |
category_listing_imagemachine | Image Machine |
category_title | CSSUI Category Title |
category_tree | CSSUI Category Tree |
cssui_links | CSSUI Links |
customerlink | CSSUI Customer Sign-in Link |
ga_jsencode | Google Analytics |
ga_tracking | Google Analytics |
global_minibasket | Mini-Basket |
hdft | CSSUI Headers & Footers |
head | CSSUI HEAD Tag Content/CSS |
html_profile | CSSUI HTML Profile |
navbar | CSSUI Navigation Bar |
prodctgy_meta | Product/Category META-Tag Settings |
product | Standard Product Fields |
product_attributes | CSSUI Product Attributes |
prod_ctgy_hdft | CSSUI Product/Category Header & Footer |
readytheme | ReadyTheme |
store | Standard Store Fields |
tokenlist | Token List |
Products[]:code Required
Products[]:quantity Required if you want to add the product
Products[]:attributes[]:code Required if the product has attributes
Products[]:attributes[]:template_code Required if the attribute is from an attribute-template
Products[]:attributes[]:value Required if the attribute is required
Products[]:subterm_id Required if the product can only be purchased with subscriptions
<input type="hidden" name="Products[1]:code" value="prod-abc">
<input type="hidden" name="Products[1]:quantity" value="1">
<input type="hidden" name="Products[1]:attributes[1]:code" value="size">
<input type="hidden" name="Products[1]:attributes[1]:template_code" value="size-template">
<input type="hidden" name="Products[1]:attributes[1]:value" value="small">
<input type="hidden" name="Products[1]:attributes[2]:code" value="color">
<input type="hidden" name="Products[1]:attributes[2]:template_code" value="color-template">
<input type="hidden" name="Products[1]:attributes[2]:value" value="red">
<input type="hidden" name="Products[1]:subterm_id" value="123">
<form action="&mvte:urls:BASK:auto;">
<input type="hidden" name="Action" value="ADPM">
<mvt:foreach iterator="product" array="category_listing:products">
<input type="hidden" name="Products[<mvt:eval expr="l.pos1"/>]:code" value="&mvte:product:code;">
<input type="number" name="Products[<mvt:eval expr="l.pos1"/>]:quantity" value="1">
<mvt:comment><!-- Attributes --></mvt:comment>
<mvt:foreach iterator="attribute" array="product:attributes">
<div>
<input type="hidden" name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:code" value="&mvte:attribute:code;" />
<mvt:if expr="l.settings:attribute:template_code NE 0">
<input type="hidden" name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:template_code" value="&mvte:attribute:template_code;" />
</mvt:if>
&mvt:attribute:prompt;
<mvt:if expr="l.settings:attribute:type EQ 'text'">
<input type="text" name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:value" value="&mvte:attribute:value;" class="textfield" />
<mvt:elseif expr="l.settings:attribute:type EQ 'memo'">
<textarea name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:value">&mvte:attribute:value;</textarea>
<mvt:elseif expr="l.settings:attribute:type EQ 'radio'">
<mvt:foreach iterator="option" array="attribute:options">
<label>
<input type="radio" name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:value" value="&mvte:option:code;" />
&mvte:option:prompt;
</label>
</mvt:foreach>
<mvt:elseif expr="( l.settings:attribute:type EQ 'select' ) OR ( l.settings:attribute:type EQ 'swatch-select' )">
<select name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:value">
<mvt:foreach iterator="option" array="attribute:options">
<option value="&mvte:option:code;">&mvte:option:prompt;</option>
</mvt:foreach>
</select>
<mvt:elseif expr="l.settings:attribute:type EQ 'checkbox'">
<label>
<input type="checkbox" name="Products[<mvt:eval expr="l.pos1"/>]:attributes[<mvt:eval expr="l.pos2"/>]:value" />
&mvt:attribute:prompt;
</label>
</mvt:if>
</div>
</mvt:foreach>
<mvt:comment><!-- Subscriptions --></mvt:comment>
<mvt:if expr="l.settings:subscription:enabled AND l.settings:subscription:term_count">
<label>Select Subscription</label>
<select name="Products[<mvt:eval expr="l.pos1"/>]:subterm_id">
<option value="0">One Time Purchase</option>
<mvt:foreach iterator="term" array="subscription:terms">
<option value="&mvte:term:id;">&mvte:term:descrip;</option>
</mvt:foreach>
</select>
</mvt:if>
</mvt:foreach>
<button>Add to Basket</button>
</form>