Change log

item_attributes

This component fetches all attributes/options for a specified product. By default, each attribute group is rendered, with its options and any prices, according to their specified form inputs.

{% component type: "item_attributes", module: "<Module name/ID>", itemId: "<Item Id>" %}

Parameters and Options

Parameter
Values
Required
Description
type
item_attributes

This is the name of the entity that needs to be used for the component retrieving function.

module
<Module name/ID>
The module’s entity/alias name or ID that the data is to be sourced from.
itemId
<Item ID>
The module item ID (specific Product) the data is to be sourced from
layout
<path/to/layout>

Path to file that will contain the Liquid layout content to be parsed.

If an empty string, nothing will be rendered.
If paramater is not included, the default virtual layout will be rendered (see below).

object
item
collection (default)

Determines the method for Liquid rendering.
item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).
collection returns all items as one collection for output (your container element and looping logic would be handled in the Components Layout).
includeTax
false (default)
true

When true, renders the attribute's display price inclusive of tax. If false, or the parameter is not included the display price will be exclusive of tax.

collectionVariable
<yourLiquidVariableName>

Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.

Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.

Liquid Output

The below example shows the attributes available for the specified product ID. The Liquid data output from this example would look like the following (for example, when using a collectionVariable to create the collection):

{
  "Attributes": [
    {
      "Name": "Size",
      "Required": true,
      "AddToInventory": true,
      "Weight": 0,
      "Id": "3661",
      "Options": [
        {
          "Name": "Small",
          "Image": "/images/template-detail-crafter-mobile.png",
          "Country": "US",
          "Weight": 0,
          "Currency": {
            "Code": "USD",
            "Symbol": "$",
            "DigitalCode": "840",
            "Name": "US Dollar"
          },
          "Id": "3652",
          "FormattedPrice": "$0.00",
          "PriceValue": 0.0,
          "TaxPrice": 0.0,
          "TaxRate": 0.0,
          "Params": {}
        },
        {
          "Name": "Medium",
          "Image": "/images/template-crafter@2x.jpg",
          "Country": "US",
          "Weight": 1,
          "Currency": {
            "Code": "USD",
            "Symbol": "$",
            "DigitalCode": "840",
            "Name": "US Dollar"
          },
          "Id": "3653",
          "FormattedPrice": "$2.00",
          "PriceValue": 2.0000,
          "TaxPrice": 0.0,
          "TaxRate": 0.0,
          "Params": {}
        },
        {
          "Name": "Large",
          "Image": "/images/template-detail-crafter-desktop@2x.jpg",
          "Country": "US",
          "Weight": 2,
          "Currency": {
            "Code": "USD",
            "Symbol": "$",
            "DigitalCode": "840",
            "Name": "US Dollar"
          },
          "Id": "3654",
          "FormattedPrice": "$4.00",
          "PriceValue": 4.0000,
          "TaxPrice": 0.0,
          "TaxRate": 0.0,
          "Params": {}
        }
      ],
      "AttributeType": "dropdown",
      "ValueType": "FixedPrice",
      "Params": {}
    }
  ],
  "eCommerceItemId": 2535,
  "Params": {
    "type": "item_attributes",
    "module": "2485",
    "itemid": "2535",
    "layout": "",
    "collectionvariable": "attrCollection"
  }
}

Virtual Layout

Based on the above example, if not using any custom layout or collection, the default virtual layout will output as form elements (depending on their attributeType):

Size


<form name="productAttributeForm_{{this.eCommerceItemId}}" data-ecommerce_item="{{this.eCommerceItemId}}">
    {% for attribute in this.attributes %}
        <h3 >{{attribute.name}}</h3>
        {% case attribute.attributeType %}
            {% when 'dropdown' %}
                <div class="cms_fake_select" data-attr_group="{{attribute.id}}">
                   <select name="attr_{{this.eCommerceItemId}}_{{attribute.id}}">
                       <option value="">Please select</option>
                    {% for attrOption in attribute.options %}
                        <option value="{{attrOption.id}}" {% if attrOption.image != '' and attrOption.image != null %} style="background-image:url({{attrOption.image}});"{% endif %}>{{attrOption.name}} {{attrOption.formattedPrice}}</option>
                    {% endfor %}
                </select>
            </div>
            {% when 'checkbox' %}
             <div data-attr_group="{{attribute.id}}">
            {% for attrOption in attribute.options %}
            <div class="cms_custom_input">
                <label>
                    <input type="checkbox" name="attr_{{this.eCommerceItemId}}_{{attribute.id}}" value="{{attrOption.id}}">
                    {% if attrOption.image != '' and attrOption.image != null %}
                        <img src="{{attrOption.image}}?width=40&height=40" width="40" height="40" title="{{attrOption.name}}" alt="{{attrOption.name}}">
                    {% else %}
                        <span class="cms_fake_input"></span>
                     {% endif %}
                    <span class="cms_fake_label">{{attrOption.name}} {{attrOption.formattedPrice}}</span>
                </label>
            </div>
            {% endfor %}
            </div>
            {% when 'radiolist' %}
            <div data-attr_group="{{attribute.id}}">
                {% for attrOption in attribute.options %}
                <div class="cms_custom_input">
                    <label>
                        <input type="radio" name="attr_{{this.eCommerceItemId}}_{{attribute.id}}" value="{{attrOption.id}}">
                        {% if attrOption.image != '' and attrOption.image != null %}
                            <img src="{{attrOption.image}}?width=40&height=40" width="40" height="40" title="{{attrOption.name}}" alt="{{attrOption.name}}">
                        {% else %}
                        <span class="cms_fake_input"></span>
                        {% endif %}
                        <span class="cms_fake_label">{{attrOption.name}} {{attrOption.formattedPrice}}</span>
                    </label>
                </div>
                {% endfor %}
                </div>
            {% when 'numeric' %}
                <div style="text-align: center" data-attr_group="{{attribute.id}}">{% for attrOption in attribute.options %}
                    <label>{{attrOption.name}} {{attrOption.formattedPrice}}</label>
                    {% if attrOption.image != '' and attrOption.image != null %}
                        <img src="{{attrOption.image}}?width=40&height=40" width="40" height="40" alt="{{attrOption.name}}">
                    {% endif %}
                    <input type="number" {% if attribute.required == true %} required{% endif %} name="attr_{{this.eCommerceItemId}}_{{attribute.id}}" value="">
                {% endfor %}</div>
            {% when 'userinput' %}
                <div style="text-align: center" data-attr_group="{{attribute.id}}">
                     <input type="text" maxlength="250" {% if attribute.required == true %} required{% endif %} name="attr_{{this.eCommerceItemId}}_{{attribute.id}}" value="">
                </div>
            {% else %}
        {% endcase %}</br>
    {% endfor %}
</form>

Accessing the Data

JSON Output

You can output the full JSON for your component data by referencing the root Liquid object {{this}} in your module’s layouts, or directly on your page, if using the collectionVariable parameter in your component tag.

For example:

{% component type: ... collectionVariable: "myData" %}

You can then render the JSON like so:

{{myData}}

For more details on using this approach, see Part 2 of the free ‘Learning Liquid Course’.

Rendering Property Values

This data is accessible directly on the Page or Template via a Liquid Collection if collectionVariable was added to the Component.

An example using collectionVariable with value "attrCollection":

{% component type: "item_attributes", module: "2485", itemId: "2535", collectionVariable: "attrCollection" %}

Using the following forloop directly on the page:

<ul>
    {% for attr in attrCollection.attributes %}
        <li>{{attr['name']}}</li>
    {% endfor %}
</ul>

Renders all the item names in a list:

  • Size

Accessing a specific item within the collection. In this case the third attributes option (zero based index), which in our example would render the value Large

{{attrCollection.attributes[0].options[2]['name']}}


Related Articles

  • Site Settings & Management
    Domains

    The WebinOne Domain settings allow you to control default domain, landing pages, domain authentication for system emails along with country and cultural settings like number and currency formatting.
  • Site Settings & Management
    Payment Settings

    Integrate various payment gateways, for multiple countries and currencies, into WebinOne for form payments, subscriptions and eCommerce workflows.
  • CRM
    Orders

    Orders store accounts of any payments made via the website and provide management for additional payments, invoices, order statuses, tracking info, the products purchased within the order and the details of the form submission used to take the order.
  • CRM
    Advanced CRM Groups

    Advanced CRM Groups allow you to extend the data fields within multiple areas of the CRM, either globally or on a per-record basis.
  • OpenAPI (Admin)
    CRM Orders API

    Retrieve and Update Order Items via the public API endpoint using "where" filtering.
  • OpenAPI (Admin)
    CRM Order Lines API

    Create, Retrieve, Update and Delete CRM Order Lines within an Order via the public API endpoint.
  • Liquid Objects & Usage
    {{ order }} object

    This liquid object will output the order details of a submitted payment. ...
  • OpenAPI (Admin)
    CRM Order Assets API

    Create CRM Order Assets, such as Discount Codes, Gift Vouchers, Shipping Options and Tax Codes via the public API endpoint.
  • OpenAPI (Admin)
    CRM Order Payments API

    Create, Retrieve, Update and Delete CRM Order Payments within an Order via the public API endpoint using "where" filtering.
  • OpenAPI (Admin)
    CRM Order Statuses API

    Retrieve CRM Order Statuses via the public API endpoint using "where" filtering.
  • OpenAPI (Admin)
    Print API

    Retrieve the print version of an Order asset via the public API endpoint by type.
  • Liquid Components
    module (Catalogs)

    This module component fetches data relating to eCommerce Catalogs and can be used to render Catalog structures and Products within them.
  • Liquid Components
    module (Products)

    This module component fetches data relating to eCommerce Products and can be used to render Product information.
  • Liquid Components
    ecommerce_add_to_cart

    This component renders an anchor element allowing the javascript function to add the item to the shopping cart.
  • Liquid Components
    ecommerce_buy_now

    This component renders an anchor element allowing the javascript function to add the item to the shopping cart and then proceeding directly to the shopping cart page.
  • Liquid Components
    ecommerce_item_quantity

    This component renders a form input element allowing a quantity to be set for when the source item is added to the shopping cart.
  • Liquid Components
    related_items

    This component fetches related items of a specific source item, such as a Product that has had Related Products assign to it.
  • Liquid Components
    grouped_items

    This component fetches grouped items of a specific source item, such as a Product that has been Grouped with other Products and allows the ability to navigate between grouped items.
  • Liquid Components
    currencies

    This component renders a form select element of all currency names, codes and symbols by default, and can also be used to output currency data to a Liquid collection.
  • OpenAPI (Admin)
    Ecommerce Discount Codes API

    Create, Retrieve, Update and Delete Ecommerce Discount Codes via the public API endpoint using "where" filtering.
  • OpenAPI (Admin)
    Ecommerce Gift Vouchers API

    Create, Retrieve, Update and Delete Ecommerce Gift Vouchers via the public API endpoint using "where" filtering.
  • Liquid Components
    shopping_cart

    This component fetches data relating to the shopping cart, such as any products added, order totals, tax, shipping, etc.
  • OpenAPI (Admin)
    Ecommerce Shipping Options API

    Create, Retrieve, Update and Delete Ecommerce Shipping Options via the public API endpoint as well as return external shipping providers and settings.
  • Liquid Components
    shipping_options

    This component renders a form select element of all shipping options configured on the site, and can also be used to output shipping option data to a Liquid collection.
  • Liquid Components
    shippingProviderFields

    This component provides a placeholder for populating additional Shipping Provider options to the user.
  • OpenAPI (Admin)
    Ecommerce Taxes API

    Create, Retrieve, Update and Delete Ecommerce Taxes via the public API endpoint using "where" filtering.
  • Liquid Components
    tax_codes

    This component renders a form select element of all tax codes configured on the site, and can also be used to output tax code data to a Liquid collection.
  • Liquid Components
    payment_form_fields

    This component is used to render payment fields, and payment related validation errors, within a form using the capabilities provided by your configured payment gateway.
  • Liquid Components
    orders

    This component fetches Orders from the CRM, either owned by the logged-in user or for all customer Orders.
  • eCommerce
    Getting Started

    To get started with the eCommerce module there are some overall settings to configure that provide eCommerce with further context in order to function appropriately for your situation.
  • eCommerce
    Products

    Products are one of the most powerful and flexible modules in WebinOne. Create customised product schemas with multiple price points, catalogs, inventory tracked attributes/variables, SEO optimisation and more.
  • eCommerce
    Catalogs

    When organising any eCommerce store, Catalogs are crucial to your Products structure and browserbility. Easily create and customise unlimited product catalogs for your online store.
  • eCommerce
    Discount codes

    Provide discount code functionality for your WebinOne shopping cart. Ideal for promotions, customer loyalty and conversions or to help move more stock.
  • eCommerce
    Gift vouchers

    Gift vouchers can be issued to your customers or purchased by them online via the shopping cart.
  • eCommerce
    Taxes

    Create any number of required tax codes specific to the shipping country selected in your WebinOne shopping cart.
  • Liquid Components
    countries

    This component renders a form select element of all country names and country codes by default, and can also be used to output country codes/names to a Liquid collection.
  • Liquid Components
    domain_settings

    This module component retrieves settings associated with the current domain, or optionally from another specified domain configured in the site instance.
  • eCommerce
    Shipping Options

    WebinOne provides the ability to configure both custom shipping options and integrated shipping providers based on a variety of conditions during the shopping cart stage.
  • eCommerce
    Settings

    These various eCommerce settings allow you to further control and customise the way your website functions, both in the admin and on the front-end, in terms of eCommerce functionality.
  • eCommerce
    eCommerce Javascript

    This is the provided javascript options for further controlling/customising the ecommerce javascript provided by the CMS.
  • Extensions
    Abandoned Cart Recovery

    With Abandoned Cart Recovery functionality, you can automatically send email reminders to customers who add products to their cart (while logged in) and leave without completing the order.
  • Extras
    Migrating to Advanced Payment Flow

    This article describes differences and possible required actions for migrating to the Advanced Payment Gateway flow.

External Resources

There are currently no external resources available.

Please let us know if you have any other contributions or know of any helpful resources you'd like to see added here.


Questions?

We are always happy to help with any questions you may have.
Visit the Treepl Forum for community support and to search previously asked questions or send us a message at support@webinone.com and we will consult you as soon as possible.