This is the documentation for LemonStand V1, which has been discontinued. You can learn more and upgrade your store here.

LemonStand Version 1 Has Been Discontinued

This documentation is for LemonStand Version 1. LemonStand is now offered as a cloud-based eCommerce platform.
You can try the new LemonStand and learn about upgrading here.

Displaying a List of Product Attributes

Product attributes are just named pieces of information assigned to a product, which describe a product. For example, if you sell books, for each book you can specify a book format (A5, A4) and a cover type.

Each product attribute has a name and a value. In the product page you can output product attributes as a table.

We recommend you to create a separate partial for displaying the product attribute list. Using partials can keep your product page code looking clean and easy to read.

Start by creating a new partial and assign it some meaningful name, for example shop:product_attributes. The following code outputs a product attribute as a table.

<? if ($product->properties->count): ?>
  <table>
    <? foreach ($product->properties as $attribute): ?>
      <tr>
        <th><?= h($attribute->name) ?>:</th>
        <td><?= h($attribute->value) ?></td>
      </tr>
    <? endforeach ?>
  </table>
<? endif ?>
{% if product.properties.count %}
  <table>
    {% for attr in product.properties %}
      <tr>
        <th>{{ attr.name }}:</th>
        <td>{{ attr.value }}</td>
      </tr>
    {% endfor %}
  </table>
{% endif %}

In the first line check the code to see whether any attributes were assigned to a product. If no attributes were assigned, we do not need to output any markup to the page.

PHP foreach loop iterates over a list of attributes, contained in the $properties field of the $product object, displaying a table row with two columns for each attribute.

Once you have finished developing the partial, you can render it on the product page, somewhere under the product description:

<? $this->render_partial('shop:product_attributes') ?>
{{ render_partial('shop:product_attributes') }}

See also:

Next: Displaying Product Options
Previous: Displaying a List of Grouped Products
Return to Displaying a List of Products