Product
The product object has the following attributes:
product.id
Returns the unique platform ID for the product.
product.title
Returns the title/name of the product.
product.brand
Returns the title/name of the brand the product is assigned to.
Use the brand object to return other information.
product.photo_url
Returns the URL of the main (1st) photo/image for the product.
You can use the product.photos array (described below) to return other photos.
product.photo_description
Returns the ALT text for the main (1st) photo/image for the product.
product.photos
Returns an array of the product's photos/images.
{% for photo in product.photos %} <img src="{{ photo.url }}" alt="{{ photo.description }}"> {% endfor %}
photo.url returns the URL of the product photo/image.
photo.description returns the ALT text for the product photo/image.
product.raw_video_embed_code
Returns the video embedding code set for the product.
product.video_embed_code
Returns a modified version of the video embedding code set for the product (just outputting the URL within the embed code).
product.description
Returns the description of the product. Use the raw filter so that the variable is not escaped.
With the tabbed product descriptions extension enabled further variables are available:
product.description2
product.description3
product.description4
product.description5
product.sku
Returns the SKU code for the product.
Note: If the product has variations which have SKU codes set, the product.sku is, in effect, defunct.
product.stock
Returns an integer of the current stock quantity of the product.
Note: If the product has variations which have SKU codes set, the product.stock is, in effect, defunct.
product.in_stock
Returns true if the product is in stock (i.e. has a product SKU code set and product.stock is greater than 0).
Returns false if the product is out of stock (i.e. has a product SKU code set and product.stock is 0 or less).
product.variants_out_of_stock
If the product has variants, and a SKU code and stock quantity is set at the variant level (rather than the product level), this value will return true if all of the variants are out of stock.
product.slug
Returns the path of the product page without the leading /.
{{ product.slug }}
returns...
nike-airmax-trainers-in-white
product.url
Returns the URL of the product page.
{{ product.url }}
returns...
https://www.yourdomain.com/nike-airmax-trainers-in-white
product.price
Returns the price of the product.
You can use the currency_value function to return the price of the product to 2 decimal places and include a currency symbol, e.g.
{{ currency_value(product.price) }}
returns...
£3.58
Note: The £ symbol will replaced with whatever base currency the account is configured with or in accordance with the multi currency APP.
You can use the number_format filter to return the price to a specific number of decimal places, e.g.
£{{ product.price|number_format(0) }}
returns...
£3
Note: If variations are used this value might be overwritten by Javascript.
product.sale_price
Returns the sale price of the product.
Including and excluding tax
The account's B2B settings will determine whether the product.price and product.sale_price variables are returned displaying the price including or excluding vat.
Additional price variables are available to display the price regardless of those settings.
product.price_including_tax
product.price_excluding_tax
product.sale_price_including_tax
product.sale_price_excluding_tax
product.rrp
Returns the RRP/Compare price of the product.
product.archived
Returns true if the product is not active (i.e. has been archived).
Returns false if the product is active.
product.can_be_added
Returns true if the product can be added to the basket. A product will only be able to be added to the basket if it is not archived and is in stock.
product.new
Returns true if the product has been marked with the new indicator.
product.two_for_one
Returns true if the product has been marked with the two for one indicator (using the two for one app).
product.three_for_two
Returns true if the product has been marked with the three for two indicator (using the multi-buy offers app).
product.delivery_cost
Returns the specific delivery cost set for the product.
product.delivery_cost_excluding_tax
Returns the specific delivery cost set for the product, excluding VAT.
product.delivery_cost_including_tax
Returns the specific delivery cost set for the product, including VAT.
product.free_delivery
Returns true if the product has been marked with free delivery.
product.specific_delivery_prices
When specifying specific delivery prices for each zone, product.specific_delivery_prices returns an array of specific delivery prices.
country returns the name of the country that the specific delivery price is set for (blank when set for 'all countries'.
delivery_cost returns the specific delivery cost.
delivery_cost_excluding_tax returns the specific delivery cost excluding VAT.
delivery_cost_including_tax returns the specific delivery cost including VAT.
free_delivery returns true if the product has been marked with free delivery.
product.vat_exclusive
If the account has VAT enabled and the product has been marked as zero rated for VAT, this variable will return true.
product.warehouse_notes
If the warehouse notes APP is enabled on the account and the product has warehouse notes set, this variable will return the warehouse notes.
product.categories
Returns an array of the categories a product is assigned to. (Note this is not the full category tree but the categories a product is directly assigned to).
product.tag
The tag object is available if tags are enabled on the product.
product.gtin
Returns the GTIN set for the product.
product.mpn
Returns the MPN set for the product.
product.in_wishlist
Returns true if the product is in the visitor's wishlist.
product.trade_type
Returns a value based on what type of categories the product is assigned to. Values of retail_and_trade, retail and trade are possible.
Additional properties available on the product page
product.options
Returns an array of the product variations.
{% for option in product.options %} {{ option.name }} {% endfor %}
returns...
Colour Size Material
{{ option.name }} returns the name of the variation types (e.g. 'colour')
{{ option.id }} returns the ID of the variation type
option.values is an array of the available choices within a variation
{% for value in option.values %} {{ value.name }} {% endfor %}
returns...
Blue Green Black Purple Orange Red
{{ value.name }} returns the name of the choice (e.g. 'Blue')
{{ value.id }} returns the ID of the choice
product.variations
Returns an array of the variation combinations (an alternative, rarely used, method to the above product.options array).
{% for variation in product.variations %} {{ variation.image_url }} {{ variation.values|join(' ') }} {{ variation.sale_price }} {{ variation.price }} {{ variation.gtin }} {{ variation.mpn }} {{ variation.sku }} {{ variation.in_stock }} {{ variation.id }} {% endfor %}
{{ variation.values }} returns the values of the variation combination e.g. Small Green Metal
{{ variation.image_url }} returns the URL of the image assigned to the variation combination
{{ variation.sale_price }} if the product has a sale price, this will return the product sale price (if a % sale is set this will return the sale price of the variation combination)
{{ variation.price }} returns the price of the variation combination
{{ variation.gtin }} returns the GTIN set for the variation combination
{{ variation.mpn }} returns the MPN set for the variation combination
{{ variation.sku }} returns the SKU code of the variation combination
{{ variation.in_stock }} returns true or false depending on whether the variation combination is in or out of stock
{{ variation.quantity }} returns the stock quantity of the variation combination
{{ variation.reward_points }} returns the number of reward points earned by purchasing the variation
{{ variation.url }} returns the URL of the variation (visiting this URL will pre-select the variation options from the drop down)
{{ variation.purchasable }} returns true or false depending on whether the variation can be purchased or not
{{ variation.id }} returns the ID of the variation combination
The above can be used to create a form on the product page for each variation combination, e.g.
<form action="{{ product.url }}" method="post"> <input name="quantity" value="1" type="hidden"> <input name="variation_id" value="{{ variation.id }}" type="hidden"> <button type="submit">add to basket</button> </form>
product.current_variation
This variable returns true if a valid variation was specified in the URL.
This variable has an options property, which is similar to product.options.
product.extras
Returns an array of the product extras.
{% for extra in product.extras %} {{ extra.name }} {% endfor %}
returns...
Mobile phone charger Car phone charger Hands free kit
{{ extra.name }} returns the name of the extra (e.g. 'Mobile phone charger')
{{ extra.id }} returns the ID of the extra
{{ extra.price }} returns the price of the extra. Use currency_value to return the price with the currency symbol and to two decimal places, e.g. {{ currency_value(extra.price) }}.
product.related_products
Returns an array of the related products.
product.bulk_prices
Returns an array of the bulk discounted prices for the product at the product level.
{% for bulk_price in product.bulk_prices %} {{ bulk_price.quantity }} ~ {{ currency_value(bulk_price.value) }} {% endfor %}
returns...
2-4 ~ £3.50 5-8 ~ £3.30 9+ ~ £3.10
{{ bulk_price.quantity }} returns the quantity the customer needs to purchase to qualify for the discounted price.
{{ bulk_price.value }} returns the price of a single product when purchased at that quantity.
product.bulk_variations
Bulk discounted prices are also available for variations. product.bulk_variations returns an array of the discounts available for each variation.
{% for variation in product.bulk_variations %} {{ variation title }} ~ {{ bulk_price.quantity }} ~ {{ currency_value(bulk_price.value) }} {% endfor %}
returns...
Small, Blue, Wood ~ 2-4 ~ £3.50 Small, Blue, Wood ~ 5-8 ~ £3.30 Small, Blue, Wood ~ 9+ ~ £3.10 Small, Blue, Metal ~ 2-4 ~ £3.50 Small, Blue, Metal ~ 5-8 ~ £3.30 Small, Blue, Metal ~ 9+ ~ £3.10 Large, Blue, Metal ~ 2-4 ~ £3.50 Large, Blue, Metal ~ 5-8 ~ £3.30 Large, Blue, Metal ~ 9+ ~ £3.10 ...
{{ variation.title }} returns the variation choices applicable to the discount. Each individual variation choice is returned separated with a comma (as in the example above).
product.bulk_discounts
Returns an array of the bulk discounted prices for the product at the account level (percentage based bulk discounts).
{{ bulk_discount.quantity }} returns the quantity the customer needs to purchase to qualify for the discounted price.
{{ bulk_discount.percent }} returns the percent discount from the normal product price, when purchased at that quantity.
Product reviews
If product reviews are enabled, these can be outputted using product.reviews described here.
Product reward points
If reward points are enabled, these can be outputted with attributes described here.
Product questions & answers
If product questions & answers are enabled, these can be outputted using product.questions described here.
Product bundles
If using the product bundles app when viewing the product bundle page, the products that are part of the bundle can be outputted using the product.bundle_products array.
{% for product in product.bundle_products %} {{ product.title }} {% endfor %}