Skip to content

Instantly share code, notes, and snippets.

@steveosoule
Last active January 10, 2019 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steveosoule/6941e70d57ef7725f202e48cc7ece8c6 to your computer and use it in GitHub Desktop.
Save steveosoule/6941e70d57ef7725f202e48cc7ece8c6 to your computer and use it in GitHub Desktop.
Product & Category URI Cascades
<mvt:comment>
Categories
</mvt:comment>
<mvt:do file="g.Module_Library_DB" name="l.success" value="CategoryList_Load_All( l.settings:categories )" />
<mvt:foreach iterator="category" array="categories">
<mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.settings:category:cascade_count" value="CategoryCascadeList_Load_Category( l.settings:category, l.settings:category:cascade )" />
<mvt:if expr="l.settings:category:cascade_count EQ 1">
<mvt:foreachcontinue/>
</mvt:if>
<uri_add category_code="&mvte:category:code;" status="200" uri="/&mvte:category:code;.html" />
<mvt:foreach iterator="cascade_item" array="category:cascade">
<mvt:assign name="l.settings:category:uri" value="l.settings:category:uri $ '/' $ l.settings:cascade_item:code" />
<mvt:if expr="l.pos2 EQ 1 OR l.pos2 EQ l.settings:category:cascade_count">
<mvt:foreachcontinue />
</mvt:if>
<uri_add category_code="&mvte:category:code;" status="200" uri="&mvte:category:uri;.html"/>
</mvt:foreach>
<uri_add category_code="&mvte:category:code;" canonical="Yes" uri="&mvte:category:uri;.html" />
</mvt:foreach>
<mvt:comment>
Products
</mvt:comment>
<mvt:do file="g.Module_Library_DB" name="l.success" value="ProductList_Load_All( l.settings:products )" />
<mvt:foreach iterator="product" array="products">
<mvt:do name="l.result" file="g.Module_Library_DB" value="CategoryList_Load_Offset_Product_Assigned(l.settings:product:id, 0, '', '', 0, l.null, l.settings:product:categories )" />
<mvt:foreach iterator="category" array="product:categories">
<mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.success" value="CategoryCascadeList_Load_Category( l.settings:category, l.settings:category:cascade )" />
<mvt:foreach iterator="cascade_item" array="category:cascade">
<mvt:assign name="l.settings:category:cascade_uri" value="l.settings:category:cascade_uri $ '/' $ l.settings:cascade_item:code" />
<uri_add product_code="&mvte:product:code;" status="200" uri="&mvte:category:cascade_uri;/&mvte:product:code;.html" />
</mvt:foreach>
<mvt:if expr="l.settings:product:concat_id EQ l.settings:category:id OR (ISNULL l.settings:product:concat_id AND l.pos2 EQ 1)">
<uri_delete uri="&mvte:category:cascade_uri;/&mvte:product:code;.html" />
<uri_add product_code="&mvte:product:code;" canonical="Yes" uri="&mvte:category:cascade_uri;/&mvte:product:code;.html" />
</mvt:if>
</mvt:foreach>
</mvt:foreach>
<mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.success" value="CategoryCascadeList_Load_Category( l.settings:category, l.settings:category:cascade )" />
<mvt:foreach iterator="cascade_item" array="category:cascade">
<mvt:assign name="l.settings:category:uri" value="l.settings:category:uri $ '/' $ l.settings:cascade_item:code" />
</mvt:foreach>
&mvt:category:uri;.html
<mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.success" value="CategoryCascadeList_Load_Category( l.settings:category, l.settings:category:cascade )" /><mvt:foreach iterator="cascade_item" array="category:cascade"><mvt:assign name="l.settings:category:uri" value="l.settings:category:uri $ '/' $ l.settings:cascade_item:code" /></mvt:foreach>&mvt:category:uri;.html
<mvt:if expr="l.settings:product:concat_id">
<mvt:do file="g.Module_Library_DB" name="l.success" value="Runtime_Category_Load_ID( l.settings:product:concat_id, l.settings:product:category )" />
</mvt:if>
<mvt:if expr="ISNULL l.settings:product:category:id">
<mvt:do file="g.Module_Library_DB" name="l.success" value="CategoryList_Load_Offset_Product_Assigned( l.settings:product:id, 0, '', '', 1, g.NextOffset, l.settings:product:categories )" />
<mvt:if expr="miva_array_elements( l.settings:product:categories )">
<mvt:assign name="l.settings:product:category" value="l.settings:product:categories[1]" />
</mvt:if>
</mvt:if>
<mvt:if expr="l.settings:product:category:id">
<mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.success" value="CategoryCascadeList_Load_Category( l.settings:product:category, l.settings:product:category:cascade )" />
<mvt:foreach iterator="cascade_item" array="product:category:cascade">
<mvt:assign name="l.settings:product:uri" value="l.settings:product:uri $ '/' $ l.settings:cascade_item:code" />
</mvt:foreach>
&mvte:product:uri;/&mvte:product:code;.html
<mvt:else>
/&mvte:product:code;.html
</mvt:if>
<mvt:if expr="l.settings:product:concat_id"><mvt:do file="g.Module_Library_DB" name="l.success" value="Runtime_Category_Load_ID( l.settings:product:concat_id, l.settings:product:category )" /></mvt:if><mvt:if expr="ISNULL l.settings:product:category:id"><mvt:do file="g.Module_Library_DB" name="l.success" value="CategoryList_Load_Offset_Product_Assigned( l.settings:product:id, 0, '', '', 1, g.NextOffset, l.settings:product:categories )" /><mvt:if expr="miva_array_elements( l.settings:product:categories )"><mvt:assign name="l.settings:product:category" value="l.settings:product:categories[1]" /></mvt:if></mvt:if><mvt:if expr="l.settings:product:category:id"><mvt:do file="g.Module_Root $ '/modules/component/cmp-mv-prodctgy-meta.mvc'" name="l.success" value="CategoryCascadeList_Load_Category( l.settings:product:category, l.settings:product:category:cascade )" /><mvt:foreach iterator="cascade_item" array="product:category:cascade"><mvt:assign name="l.settings:product:uri" value="l.settings:product:uri $ '/' $ l.settings:cascade_item:code" /></mvt:foreach>&mvte:product:uri;/&mvte:product:code;.html<mvt:else>/&mvte:product:code;.html</mvt:if>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment