Product Detail Layouts

 Last Edited: Oct 24, 2019


  • - You have created Products in the Admin

Getting Started

This Tutorial will show you how to output information about a Product on its automatically-generated Detail Page.

It will cover how to:

  • - Find where Product layouts are stored on Code Editor
  • - Develop a wrapper.liquid file
  • - Include an item.liquid file
  • - Add functionality for a User to add the Product to Cart

Product Layout files in Code Editor

In SITE MANAGER/Code Editor, the folder structure for eCommerce layouts is as below:

  • layouts
    • modules
      • module_14
        • product
          • name_of_my_layout
            • list
              • wrapper.liquid
              • item.liquid
            • detail
              • wrapper.liquid
              • Item.liquid
          • product_attributes
            • my_attribute_layout.liquid

Creating a new set of Product Layouts

To create a new set of Product layouts- create your folder at the level of "name_of_my_layout". Inside that, the folders and files should be created as shown above.

Detail Layout Development

As with list views, the detail folder inside your new layout folder should contain a wrapper.liquid and an item.liquid file. Refer to the folder structure at top of the document for reference. You also have the option of creating an attribute layout which can be included inside your item.liquid file to show Product Variations.


wrapper.liquid -- detail view example

<section class="large detail-view ecommerce"> <div class="container"> <div class="row"> {%- include 'modules/siteglide_ecommerce/ecommerce/get/get_products', item_layout: 'item' -%} </div> </div> </section>

This is the file for the main section code e.g. a section title or padding. You will need to use the following liquid to include your item.liquid file inside the wrapper and give it access to information about the Product:

{%- include 'modules/siteglide_ecommerce/ecommerce/get/get_products', item_layout: 'item' -%}


item.liquid -- detail view example

<div class="col-lg-6"> <img src="{{this['Image'] | asset_url}}" class="img-fluid"> </div> <div class="col-lg-5 offset-lg-1"> <div> <h2 class="product-title">{{this['name']}}</h2> <p class="product-price" data-price-control="{{this.price.price_charge}}" data-currency-control="{{this.price.currency_symbol}}"></p> <div class="row"> <div class="col-md-4"> <div class="form-group"> <label>Quantity</label> <input type="number" min="1" value="1" class="form-control" data-quantity-control=""> </div> </div> </div> </div> <hr class="mt-4 mb-4"> {% if this['Description'] %} <h4>Product Description</h4> {{this['Description']}} {% endif %} <hr class="mt-4 mb-4"> <div class="row product-detail-buttons"> <div class="col-12 col-md-6"> {% include 'ecommerce/cart_add' -%} </div> <div class="col-12 col-md-6"> <a class="btn btn-primary" href="/cart">View my Cart</a> </div> </div> </div>

Unlike the List View, the code in the item.liquid file in the Detail folder will only be displayed once instead of looped. It will allow access to the "this" object. See reference for available fields or output {{this | json}} in the item.liquid file to see the exact data available to you.

To create a button to add the current Product to the Cart use the following liquid:

Including the item.liquid file inside the detail wrapper.liquid file

{% include 'ecommerce/cart_add' -%}

and the following JavaScript which makes sure the correct data is ready when the "Add Cart Button" is pressed:

Update the price on page load with JavaScript

document.addEventListener('DOMContentLoaded', function(){ s_e_update_price(); });

Related Docs and Reference

See the Product Layout Reference Doc for fields you can use throughout your Product Layouts.