II Build // Auto Update Craziness
<mvt:if expr="g.update_ctgy_dat EQ 1">
<mvt:assign name="l.settings:dat_filename" value="'Merchant5/s01/export/powersearch-other_cats.dat'" />
<mvt:assign name="l.settings:file_exsists" value="fexists(l.settings:dat_filename)"/>
<mvt:if expr="l.settings:file_exsists">
<mvt:assign name="l.settings:delete_file" value="fdelete(l.settings:dat_filename)" />
</mvt:if>
<mvt:assign name="g.Offset" value="0" />
<mvt:assign name="g.Search" value="1" />
<mvt:assign name="g.Fields" value="'active'" />
<mvt:assign name="g.Max" value="0" />
<mvt:assign name="g.run" value="0" />
<mvt:do file="g.module_library_db" name="l.null" value="CategoryList_Load_Offset(g.Offset, g.Search, g.Fields, g.Max, g.NextOffset, l.settings:cats)" />
<mvt:foreach iterator="cat" array="cats">
<mvt:if expr="l.settings:cat:parent_id EQ 0">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:cat:code EQ 'tire-finder' OR l.settings:cat:code EQ 'for-the-bike'">
<mvt:foreachcontinue />
</mvt:if>
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:cat:parent_id, l.settings:cat2)" />
<mvt:comment> <!-- check for Brand, do not want to include --> </mvt:comment>
<mvt:if expr="l.settings:cat2:code EQ 'shop-by-brand' OR l.settings:cat2:code EQ 'year'">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:cat2:parent_id GT 0">
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:cat2:parent_id, l.settings:parentcategory)" />
<mvt:comment> <!-- Check for "shop for the bike", want to exclude this --> </mvt:comment>
<mvt:if expr="tolower(l.settings:parentcategory:code) EQ 'year'">
<mvt:foreachcontinue />
</mvt:if>
</mvt:if>
<mvt:assign name="l.settings:dat_data" value="l.settings:dat_data $ l.settings:cat:name $ '|' $ l.settings:cat:id $ asciichar(10)" />
</mvt:foreach>
<mvt:assign name="l.settings:created_file" value="file_create( l.settings:dat_filename, 'data', l.settings:dat_data)" />
Complete!
<mvt:exit />
</mvt:if>
<mvt:if expr="l.settings:all_products:page_links:last_page GT 1">
<mvt:if expr="ISNULL g.start">
<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&start=1">Start Auto Update for Products.</a><br />
This will update the following custom fields:<br />
<ul>
<li>Brand Code (brandcode)</li>
<li>Brand Name (brandname)</li>
<li>Variant Skus (vskus, vcodes, vskus_nd, vskus_nds, vcodes_nd, vcodes_nds)</li>
<li>Number of Colors Available (num_colors)</li>
<li>Fitment (fitment)</li>
<li>Other Category Filters (CTGY only)</li>
<li>Category names for search </li>
</ul>
</mvt:if>
<div>
<span class="page-links-title">Page(s):</span>
<span class="page-links-container">
<mvt:if expr="l.settings:all_products:page_links:current_page NE 1">
<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&&mvte:all_products:page_links:prev_link_params;&start=&mvt:global:start;&category_updates=&mvt:global:category_updates;" class="page-links-previous"><</a>
</mvt:if>
<mvt:if expr="l.settings:all_products:page_links:current_page NE l.settings:all_products:page_links:last_page">
<a href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&&mvte:all_products:page_links:next_link_params;&start=&mvt:global:start;&category_updates=&mvt:global:category_updates;" class="page-links-next" id="page-links-next">></a>
</mvt:if>
</span>
</div>
</mvt:if>
<mvt:if expr="g.start">
<mvt:if expr="l.settings:all_products:page_links:current_page EQ l.settings:all_products:page_links:last_page AND g.category_updates">
COMPLETE<br/><br/>
<a id="page-links-next" href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&update_ctgy_dat=1">update_categories</a>
<mvt:elseif expr="l.settings:all_products:page_links:current_page EQ l.settings:all_products:page_links:last_page">
CATEGORY UPDATES...<br/><br/>
<a id="page-links-next" href="&mvt:global:sessionurl;Screen=&mvt:global:Screen;&start=1&category_updates=1">update_categories</a>
l.settings:all_products:page_links:first_link
</mvt:if>
<mvt:eval expr="miva_array_elements( l.settings:all_products:products ) + g.AllOffset" /> out of &mvt:all_products:total_prod_count;<br />
&mvt:all_products:products[1]:code;
<mvt:if expr="ISNULL g.category_updates">
<mvt:foreach iterator="product" array="all_products:products">
<mvt:comment>
|
| Assignment of Variant Skus
|
</mvt:comment>
<mvt:assign name="l.settings:variantSkus" value="''" />
<mvt:assign name="l.settings:variantCodes" value="''" />
<mvt:assign name="l.settings:vskus_nodash" value="''" />
<mvt:assign name="l.settings:vskus_nodashspace" value="''" />
<mvt:assign name="l.settings:vcodes_nodash" value="''" />
<mvt:assign name="l.settings:vcodes_nodashspace" value="''" />
<mvt:assign name="l.settings:product:sku_without_dashes" value="glosub( l.settings:product:sku, '-', '' )" />
<mvt:assign name="l.settings:product:sku_with_spaces" value="glosub( l.settings:product:sku, '-', ' ' )" />
<mvt:assign name="l.settings:product:code_without_dashes" value="glosub( l.settings:product:code, '-', '' )" />
<mvt:assign name="l.settings:product:code_with_spaces" value="glosub( l.settings:product:code, '-', ' ' )" />
<mvt:item name="toolkit" param="variantarray|vcount|l.all_settings:product:code" />
<mvt:if expr="g.vcount GT 0">
<mvt:assign name="l.settings:variantSkus" value="''" />
<mvt:assign name="l.vcount" value="1" />
<mvt:foreach iterator="variant" array="variants">
<mvt:item name="toolkit" param="vproduct_find|productfound|l.all_settings:variant:variant_code|A" />
<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'brandcode', l.settings:product:customfield_values:customfields:brandcode )" />
<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'brandname', l.settings:product:customfield_values:customfields:brandname )" />
<mvt:if expr="NOT ISNULL l.settings:product:new_brandcode AND NOT ISNULL l.settings:product:new_brandname">
<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandcode', l.settings:product:new_brandcode )" />
<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandName', l.settings:product:new_brandname)" />
<mvt:elseif expr="NOT ISNULL l.settings:product:customfield_values:customfields:brandcode AND NOT ISNULL l.settings:product:customfield_values:customfields:brandname">
<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandcode', l.settings:product:customfield_values:customfields:brandcode )" />
<mvt:item name="customfields" param="Write_Product_Code( l.settings:variant:variant_code, 'brandName', l.settings:product:customfield_values:customfields:brandname)" />
</mvt:if>
<mvt:assign name="l.settings:key_product:code_without_dashes" value="glosub( l.settings:key_product:code, '-', '' )" />
<mvt:assign name="l.settings:key_product:code_with_spaces" value="glosub( l.settings:key_product:code, '-', ' ' )" />
<mvt:assign name="l.settings:key_product:sku_without_dashes" value="glosub( l.settings:key_product:sku, '-', '' )" />
<mvt:assign name="l.settings:key_product:sku_with_spaces" value="glosub( l.settings:key_product:sku, '-', ' ' )" />
<mvt:if expr="ISNULL l.settings:variantSkus AND l.settings:key_product:sku">
<mvt:assign name="l.settings:variantSkus" value="'|' $ l.settings:product:sku $ '|' $ l.settings:key_product:sku $ '|'" />
<mvt:elseif expr="l.settings:variantSkus AND l.settings:key_product:sku">
<mvt:assign name="l.settings:variantSkus" value="l.settings:variantSkus $ l.settings:key_product:sku $ '|'" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:variantCodes AND l.settings:key_product:code">
<mvt:assign name="l.settings:variantCodes" value="'|' $ l.settings:product:code $ '|' $ l.settings:key_product:code $ '|'" />
<mvt:elseif expr="l.settings:variantCodes AND l.settings:key_product:code">
<mvt:assign name="l.settings:variantCodes" value="l.settings:variantCodes $ l.settings:key_product:code $ '|'" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:vskus_nodash AND l.settings:key_product:sku_without_dashes">
<mvt:assign name="l.settings:vskus_nodash" value="'|' $ l.settings:product:sku_without_dashes $ '|' $ l.settings:key_product:sku_without_dashes $ '|'" />
<mvt:elseif expr="l.settings:vskus_nodash AND l.settings:key_product:sku_without_dashes">
<mvt:assign name="l.settings:vskus_nodash" value="l.settings:vskus_nodash $ l.settings:key_product:sku_without_dashes $ '|'" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:vskus_nodashspace AND l.settings:key_product:sku_with_spaces">
<mvt:assign name="l.settings:vskus_nodashspace" value="'|' $ l.settings:product:sku_with_spaces $ '|' $ l.settings:key_product:sku_with_spaces $ '|'" />
<mvt:elseif expr="l.settings:vskus_nodashspace AND l.settings:key_product:sku_with_spaces">
<mvt:assign name="l.settings:vskus_nodashspace" value="l.settings:vskus_nodashspace $ l.settings:key_product:sku_with_spaces $ '|'" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:vcodes_nodash AND l.settings:key_product:code_without_dashes">
<mvt:assign name="l.settings:vcodes_nodash" value="'|' $ l.settings:product:code_without_dashes $ '|' $ l.settings:key_product:code_without_dashes $ '|'" />
<mvt:elseif expr="l.settings:vcodes_nodash AND l.settings:key_product:code_without_dashes">
<mvt:assign name="l.settings:vcodes_nodash" value="l.settings:vcodes_nodash $ l.settings:key_product:code_without_dashes $ '|'" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:vcodes_nodashspace AND l.settings:key_product:code_with_spaces">
<mvt:assign name="l.settings:vcodes_nodashspace" value="'|' $ l.settings:product:code_with_spaces $ '|' $ l.settings:key_product:code_with_spaces $ '|'" />
<mvt:elseif expr="l.settings:vcodes_nodashspace AND l.settings:key_product:code_with_spaces">
<mvt:assign name="l.settings:vcodes_nodashspace" value="l.settings:vcodes_nodashspace $ l.settings:key_product:code_with_spaces $ '|'" />
</mvt:if>
</mvt:foreach>
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus', l.settings:variantSkus )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes', l.settings:variantCodes )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus_nd', l.settings:vskus_nodash )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vskus_nds', l.settings:vskus_nodashspace )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes_nd', l.settings:vcodes_nodash )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'vcodes_nds', l.settings:vcodes_nodashspace )" />
</mvt:if>
<mvt:comment>
|
| # of Colors Available
|
</mvt:comment>
<mvt:assign name="l.settings:numberofcolors" value="0" />
<mvt:assign name="l.settings:loaded_attributes" value="0" />
<mvt:item name="customfields" param="Read_Product_ID( l.settings:product:id, 'num_colors', l.settings:numberofcolors )" />
<mvt:if expr="ISNULL l.settings:numberofcolors OR l.settings:numberofcolors EQ 0">
<mvt:assign name="l.settings:option" value="''" />
<mvt:do file="g.Module_Library_DB" name="l.success" value="AttributeList_Load_Product(l.settings:product:id, l.settings:loaded_attributes)" />
<mvt:if expr="miva_array_elements( l.settings:loaded_attributes ) GT 0">
<mvt:foreach iterator="attribute" array="loaded_attributes">
<mvt:if expr="'color' CIN tolower(l.settings:attribute:prompt)">
<mvt:if expr="l.settings:attribute:attmpat_id GT 0">
<mvt:do file="g.Module_Library_DB" name="l.success" value="AttributeTemplateOptionList_Load_Attribute(l.settings:attribute:attmpat_id, l.settings:option)" />
<mvt:assign name="l.settings:numberofcolors" value="miva_array_elements(l.settings:option)" />
<mvt:else>
<mvt:do file="g.Module_Library_DB" name="l.success" value="OptionList_Load_Attribute(l.settings:attribute:id, l.settings:option)" />
<mvt:assign name="l.settings:numberofcolors" value="miva_array_elements(l.settings:option)" />
</mvt:if>
</mvt:if>
</mvt:foreach>
</mvt:if>
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'num_colors', l.settings:numberofcolors )" />
</mvt:if>
<mvt:comment>
|
| On Sale
|
</mvt:comment>
<mvt:if expr="l.settings:product:base_price GT l.settings:product:price">
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'on_sale', '|1|' )" />
<mvt:else>
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'on_sale', '|0|' )" />
</mvt:if>
</mvt:foreach>
<mvt:else>
<mvt:comment> <!-- CATEGORIES --> </mvt:comment>
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Code( 'shop-by-brand', l.shop_by_brand )" />
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Code( 'year', l.year )" />
<mvt:foreach iterator="product" array="all_products:products">
<mvt:comment>
|
| Assign brandcode/ brandName
| Only if empty.
|
</mvt:comment>
<mvt:assign name="l.settings:product:new_brandcode" value="''" />
<mvt:assign name="l.settings:product:new_brandname" value="''" />
<mvt:assign name="l.settings:incategories" value="''" />
<mvt:assign name="l.settings:fitment" value="''" />
<mvt:do file="g.Module_Library_DB" name="l.productincats" value="CategoryList_Load_Offset_Product_Assigned(l.settings:product:id, 0, '', '', 0, l.offsetvar, l.settings:incategories)" />
<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray(l.settings:incategories, ':name', -1)" />
<mvt:comment> <!-- NEW CODE --> </mvt:comment>
<mvt:if expr="l.settings:incategories">
<mvt:foreach iterator="incategory" array="incategories">
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:id, l.settings:incategory)" />
<mvt:comment> ---[ Begin: Check for Shop by Brand ] --- </mvt:comment>
<mvt:if expr="l.settings:incategory:parent_id EQ l.shop_by_brand:id AND ( ISNULL l.settings:product:brandcode ) AND ( ISNULL l.settings:customfield_values:customfields:brandcode )">
<mvt:assign name="l.settings:product:new_brandcode" value="l.settings:incategory:code" />
<mvt:assign name="l.settings:product:new_brandname" value="glosub(l.settings:incategory:name, '&', 'and')" />
<mvt:comment><mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'brandcode', l.settings:product:new_brandcode )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'brandName', l.settings:product:new_brandname)" /></mvt:comment>
</mvt:if>
<mvt:comment> ---[ End: Check for Shop by Brand ] --- </mvt:comment>
<mvt:comment> ---[ Begin: Fitment ] --- </mvt:comment>
<mvt:if expr="l.settings:incategory:parent_id GT 0">
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:parent_id, l.settings:incategory:parent_category)" />
<mvt:if expr="l.settings:incategory:parent_category:parent_id GT 0">
<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Id( l.settings:incategory:parent_category:parent_id, l.settings:incategory:parent_category:parent_category)" />
<mvt:if expr="tolower( l.settings:incategory:parent_category:parent_category:name) EQ 'year'">
<mvt:if expr="NOT ISNULL l.settings:fitment">
<mvt:assign name="l.settings:fitment" value="l.settings:fitment $ ', ' $ l.settings:incategory:name" />
<mvt:else>
<mvt:assign name="l.settings:fitment" value="l.settings:incategory:name" />
</mvt:if>
</mvt:if>
</mvt:if>
</mvt:if>
<mvt:comment> ---[ End: Fitment ] --- </mvt:comment>
<mvt:comment> ---[ Begin: Category Search ] --- </mvt:comment>
<mvt:if expr="ISNULL l.settings:cat_search">
<mvt:assign name="l.settings:cat_search" value="l.settings:incategory:name" />
<mvt:else>
<mvt:assign name="l.settings:cat_search" value="l.settings:cat_search $ ',' $ l.settings:incategory:name" />
</mvt:if>
<mvt:if expr="l.settings:incategory:parent_id EQ 0">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:incategory:code EQ 'tire-finder' OR l.settings:incategory:code EQ 'for-the-bike'">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:incategory:parent_id EQ l.shop_by_brand:id OR l.settings:incategory:parent_id EQ l.year:id">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:incategory:parent_category:parent_id GT 0">
<mvt:if expr="l.settings:incategory:parent_category:parent_category:id EQ l.year:id">
<mvt:foreachcontinue />
</mvt:if>
</mvt:if>
<mvt:do file="g.Module_Library_DB" name="l.null" value="Runtime_CategoryList_Load_Parent( l.settings:incategory:id, l.settings:incategory:children )" />
<mvt:if expr="miva_array_elements( l.settings:incategory:children ) GT 0">
<mvt:foreachcontinue />
</mvt:if>
<mvt:if expr="l.settings:other_cats">
<mvt:assign name="l.settings:other_cats" value="l.settings:other_cats $ trim( l.settings:incategory:id ) $ '|' " />
<mvt:else>
<mvt:assign name="l.settings:other_cats" value="'|' $ trim( l.settings:incategory:id ) $ '|' " />
</mvt:if>
<mvt:comment> ---[ End: Category Search ] --- </mvt:comment>
</mvt:foreach>
</mvt:if>
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'fitment', l.settings:fitment )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'other_cats', l.settings:other_cats )" />
<mvt:item name="customfields" param="Write_Product_ID( l.settings:product:id, 'cat_search', l.settings:cat_search )" />
<mvt:comment> <!-- / NEW CODE --> </mvt:comment>
</mvt:foreach>
<mvt:comment> <!-- CATEGORIES --> </mvt:comment>
</mvt:if>
</table>
</mvt:if>
<mvt:if expr="g.start">
<script>
document.addEventListener("DOMContentLoaded", function(event) {
var next = document.getElementById('page-links-next').getAttribute('href');
if (next) {
window.location.href = next;
}
});
</script>
</mvt:if>