steveosoule
7/25/2017 - 1:06 AM

Miva - Related Products Based on Breadcrumbs

Miva - Related Products Based on Breadcrumbs

<mvt:comment>
<!--
	Instructions:
	1. Create a "related_breadcrumbs" ReadyTheme Content Section
	2. Put the following code within that content section.
	3. Add the <mvt:item name="readytheme" param="contentsection( 'related_breadcrumbs' )" /> item to the PROD page where you want them to display.
-->
</mvt:comment>


<mvt:comment>
<!--
	| Initialization & Settings
-->
</mvt:comment>
<mvt:assign name="l.settings:related_breadcrumbs:max_product_count" value="8" />
<mvt:assign name="l.settings:related_breadcrumbs:image:width" value="150" />
<mvt:assign name="l.settings:related_breadcrumbs:image:height" value="150" />
<mvt:do file="g.Module_Library_DB" name="l.result" value="ImageType_Load_Code( 'main', l.settings:related_breadcrumbs:image:type )" />


<mvt:comment>
<!--
	| Prepare Data From Breadcrumbs
-->
</mvt:comment>
<mvt:foreach array="breadcrumbs:links" iterator="link">

	<mvt:do file="g.Module_Library_DB" name="l.success" value="Category_Load_Code( l.settings:link:code, l.settings:link:category )" />

	<mvt:if expr="l.settings:link:category:id">
		<mvt:do file="g.Module_Feature_URI_UT" name="l.settings:link:category:link" value="Store_Category_URL( l.settings:link:category, NULL )" />
		<mvt:assign name="l.result" value="miva_array_insert( l.settings:related_breadcrumbs:categories, l.settings:link:category, 1 )" />
	</mvt:if>
</mvt:foreach>


<mvt:comment>
<!--
	| Load Products on Breadcrumb Categories
-->
</mvt:comment>
<mvt:foreach array="related_breadcrumbs:categories" iterator="related_category">

	<mvt:do file="g.Module_Library_DB" name="l.success" value="ProductList_Load_Offset_Category_Assigned( l.settings:related_category:id, 0, '1', 'active', l.settings:related_breadcrumbs:max_product_count, l.settings:related_category:productlist:next_offset, l.settings:related_category:productlist:products )" />
	<mvt:foreach array="related_category:productlist:products" iterator="category_product">

		<mvt:comment>
			Load Resized `main` Image
		</mvt:comment>
		<mvt:do file="g.Module_Library_DB" name="l.result" value="ProductImage_Load_Type(l.settings:category_product:id, l.settings:related_breadcrumbs:image:type:id, l.settings:category_product:imagetypes_data:type)" />
		<mvt:do file="g.Module_Library_DB" name="l.result" value="Image_Load_ID( l.settings:category_product:imagetypes_data:type:image_id, l.settings:category_product:imagetypes_data:image )" />
		<mvt:do file="g.Module_Library_DB" name="l.result" value="GeneratedImage_FindOrInsert_Image_Dimensions( l.settings:category_product:imagetypes_data:image, l.settings:related_breadcrumbs:image:width, l.settings:related_breadcrumbs:image:height, l.settings:category_product:imagetypes_data:generated )" />
		<mvt:if expr="l.settings:category_product:imagetypes_data:generated:id">
			<mvt:assign name="l.settings:category_product:src" value="l.settings:category_product:imagetypes_data:generated:image" />
		<mvt:else>
			<mvt:assign name="l.settings:category_product:src" value="g.theme_path $ '/images/img_no_thumb.jpg'" />
		</mvt:if>

		<mvt:comment>
			Load other product data (URI, Currency Formatting)
		</mvt:comment>
		<mvt:do file="g.Module_Feature_URI_UT" name="l.settings:category_product:link" value="Store_Product_URL( l.settings:category_product, NULL )" />
		<mvt:do file="g.Module_Store_Module_Currency" name="l.settings:category_product:formatted_price" value="CurrencyModule_AddFormatting( g.Store:currncy_mod, l.settings:category_product:price )" />

	</mvt:foreach>
	<mvt:do file="g.Module_Feature_TUI_UT" name="l.result" value="CommonComponentFields_Initialize_Product_Discounts_Runtime(l.settings:related_category:products, miva_array_elements(l.settings:related_category:products))" />

</mvt:foreach>

<mvt:if expr="NOT miva_array_elements( l.settings:related_breadcrumbs:categories )">
	<mvt:exit/>
</mvt:if>

<h2>Related Breadcrumbs</h2>

<mvt:foreach array="related_breadcrumbs:categories" iterator="related_category">

	<h2 class="carousel-products-heading">&mvt:related_category:name;</h2>
	<div class="carousel-products carousel-products row">
		<mvt:foreach array="related_category:productlist:products" iterator="category_product">
			<div class="carousel-product column half medium-one-fourth align-center" style="width: 24%; display: inline-block;">
				<a href="&mvt:category_product:link;">
					<img class="carousel-product-image" src="&mvt:category_product:src;" alt="&mvt:category_product:name;">
				</a>
				<div class="carousel-product-price">&mvt:category_product:formatted_price;</div>
				<div class="carousel-product-name">
					<a href="&mvt:category_product:link;">
						&mvt:category_product:name;
					</a>
				</div>
			</div>
		</mvt:foreach>
	</div>
</mvt:foreach>

<mvt:if expr="g.debug">
	<mvt:eval expr="glosub(miva_array_serialize(l.settings:related_breadcrumbs), ',', '<br>')" />
</mvt:if>