Related products - "You may also like.."
-
Hi all, what's the easiest way to show 'related product' at the bottom of each product page?
-
@iwNZ Hi there.
I have implemented at least 2 very popular methods in the past.
Option 1: (Moderate) Show all products from the current category
Option 2: (Advanced) Custom Field called Related ProductsOption 1:
On product detail template:<logic:variable as="arrCategoryIds" value="[? \Components\Commerce\Products\Categories::getAllIdsForProduct($product['product_id']) ?]" /> <logic:variable as="category" value="[? \Components\Commerce\Products\Categories::get($arrCategoryIds[0]) ?]" /> <div class="categoryRow"> <h2>Category Products <small>([? $category['product_category_title'] ?])</small></h2> <div class="shop-grid"> <logic:variable as="currentProduct" value="[? $product ?]" /> <data:repeater id="grid-product" class="grid-product-wrap" as="product" datasource="\Components\Commerce\Products::getAllForCategoryAndBrandRecursive($category['product_category_id'], null)" paging="true" pagingrows="20" pagingautorender="true" > <data:template component="\Components\Commerce\Products" type="list" /> </data:repeater> <logic:variable as="product" value="[? $currentProduct ?]" /> </div> </div>Option 2:
This option is a lot more complicated:- step 1 you need to create a custom field called Related Product Ids. Use a Custom UI type, and choose Text < 255 Characters.
- step 2 then on each product you select your related products
- step 3 add a data:repeater on the product detail page to list through the related product ids, a lot like what I showed in option 1.
Your Custom UI code should look like this, or similar:
<forms:row label="Related Products"> <logic:variable as="selected_product_ids" value="[? [] ?]" /> <logic:if test="$product['product_related_products']"> <logic:variable as="selected_product_ids" value="[? unserialize( $product['product_related_products'] ) ?]" /> </logic:if> <forms:selectlist id="product_related_products" datacolumn="product_related_products" value="" as="relatedProduct" width="300" height="120" style="font-size: 80%;"> <forms:option value=""></forms:option> <data:repeater as="relatedProduct" datasource="\Components\Commerce\Products::getAllConsole()"> <logic:if test="in_array($relatedProduct['product_id'], $selected_product_ids, false)"> <forms:option value="[? $relatedProduct['product_id'] ?]" title="[? $relatedProduct['product_title'] ?]" selected="selected" /> </logic:if> <logic:else> <forms:option value="[? $relatedProduct['product_id'] ?]" title="[? $relatedProduct['product_title'] ?]" /> </logic:else> </data:repeater> </forms:selectlist> <p style="margin-top: 8px;"><em><small>Hold CMD or Ctrl to select multiple products</small></em></p> </forms:row>Hope this sets you on the right path.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login