Skip to content

Cart tag

The cart tag is responsible for creating a cart overview.

The tag

{exp:reinos_store:cart}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

return_url

The return url, default to the current url

return_url=""

form_class

Set the form class

form_class=""

form_id

Set the form id

form_id=""

prefix

Set a prefix for your variables

prefix="cart:"

can_update

Mark the cart so it can be updated. We add a <form/> tag in the html.

can_update="yes"

Tag Variable

Below are the Tag Variables. Those Variables can be used in the tag described above

cart:no_items

Check if there are no_items

{if cart:no_items}...{/if}

cart:items

Loop over the items in the cart

{cart:items}
    {cart:name}
    {cart:price}
    {cart:price:formatted}
    {cart:old_price} // when dealing with a sale price, this is the original_price
    {cart:old_price:formatted} // when dealing with a sale price, this is the original_price
    {cart:price_plus_tax}
    {cart:price_plus_tax:formatted}
    {cart:old_price_plus_tax} // when dealing with a sale price, this is the original_price
    {cart:old_price_plus_tax:formatted} // when dealing with a sale price, this is the original_price
    {cart:qty}
    {cart:sku}
    {cart:entry_id}
    {cart:disable_shipping}
    {cart:price_total}
    {cart:price_total:formatted}
    {cart:old_price_total} // when dealing with a sale price, this is the original_price
    {cart:old_price_total:formatted} // when dealing with a sale price, this is the original_price
    {cart:price_total_plus_tax}
    {cart:price_total_plus_tax:formatted}
    {cart:old_price_total_plus_tax} // when dealing with a sale price, this is the original_price
    {cart:old_price_total_plus_tax:formatted} // when dealing with a sale price, this is the original_price
    {cart:custom_fields}
        {cart:custom_fields:label}
        {cart:custom_fields:value}
        {cart:custom_fields:is_modifier}
        {cart:custom_fields:modifier:price}
        {cart:custom_fields:modifier:price:formatted}
        {cart:custom_fields:modifier:price_plus_tax}
        {cart:custom_fields:modifier:price_plus_tax:formatted}
    {/cart:custom_fields}
    {cart:on_sale} // bool if the product is on sale
    {cart:note}
    {cart:parent_order_item_id}
{/cart:items}

cart:total_items

The total number of different products in the cart

{cart:total_items}

cart:total_items_qty

The total qty of all items in the cart

{cart:total_items_qty}

cart:subtotal_before_discount

This is the subtotal before any discount is applied.

{cart:subtotal_before_discount}
{cart:subtotal_before_discount:formatted}

cart:subtotal_before_discount_plus_tax

This is the subtotal before any discount is applied.

{cart:subtotal_before_discount_plus_tax}
{cart:subtotal_before_discount_plus_tax:formatted}

cart:subtotal

{cart:subtotal}
{cart:subtotal:formatted}

cart:subtotal_plus_tax

{cart:subtotal_plus_tax}
{cart:subtotal_plus_tax:formatted}

cart:discount

To use the coupon code, simply add the field <input type="text" name="coupon_code" value="{cart:coupon_code}"/>. (see the examples for details)

{cart:discount}
{cart:discount:formatted}

cart:total

{cart:total}
{cart:total:formatted}

cart:total_plus_tax

{cart:total_plus_tax}
{cart:total_plus_tax:formatted}

cart:tax

{cart:tax}
{cart:tax:formatted}

cart:tax_details

The Tax Details tag pair can give you a summary of the TAX. It holds multiple entries when you have multiple tax rates applied to the cart.

Available from v3.6.0

{cart:tax_details}
    {cart:tax_details:info} // if you have installed the Tax Module, the info field of the applied rule is shown here
    {cart:tax_details:rate}
    {cart:tax_details:amount}
    {cart:tax_details:amount:formatted}
{/cart:tax_details}

cart:shipping

{cart:shipping}
{cart:shipping:formatted}

cart:shipping_plus_tax

{cart:shipping_plus_tax}
{cart:shipping_plus_tax:formatted}

cart:has_free_shipping

Indicate if the cart has free shipping applied by any discount/free shipping rule

{cart:has_free_shipping}

cart:entry_ids

Hold all entry_ids as a pipeline delimited string

{cart:entry_ids}

cart:is_reverse_charge_eu

This flag indicate if we deal with a customer that has no TAX calculated

Note: this will only be updated if you have installed the TAX module. See (https://addons.reinos.nl/store-tax)[https://addons.reinos.nl/store-tax]

{cart:is_reverse_charge_eu}

cart:shipping_method

Return the method for shipping. Please note this is default to native in case you just use the Store module. If you are using the Reinos Store Shipping Module, it will be filled with the method that the customer selected.

Available from v3.7.0

Example

{exp:reinos_store:cart prefix="cart:" can_update="yes" return_url="store/cart"}
  <h1 class="font-bold mt-5 text-2xl">Your cart</h1>
  {if cart:no_items}
      <p>No cart items</p>
  {if:else}
    <p class="mb-10 text-italic">({cart:total_items} products in cart and {cart:total_items_qty} items in cart)</p>
    <table class="w-full table-auto mt-4 mb-4">
        <thead class="border-b-2">
        <tr>
            <th align="left">Name</th>
            <th align="left">Qty</th>
            <th align="left">Price</th>
            <th align="left">Subtotal</th>
            <th />
        </tr>
        </thead>
        <tbody>
        {cart:items}
            {exp:channel:entries entry_id="{cart:entry_id}" dynamic="no"}
                <tr class="border-b">
                    <td>
                      <div class="py-3">
                          <a href="{page_uri}">{title}</a>
                          {if cart:sku != ''}<small>sku: {cart:sku}</small>{/if}
                           {cart:custom_fields}
                                {if cart:custom_fields:is_modifier}
                                    <br><strong>Modifier: {cart:custom_fields:label}:</strong> {cart:custom_fields:value} (+{cart:custom_fields:modifier:price:formatted})
                                {if:else}
                                    <br><strong>{cart:custom_fields:label}:</strong> {cart:custom_fields:value}                       
                                {/if}
                            {/cart:custom_fields}
                      </div>
                    </td>
                    <td><input class="border p-1 rounded" type="number" value="{cart:qty}" name="qty[{cart:id}]"></td>
                    <td>
                        {cart:price_plus_tax:formatted}
                        {if cart:on_sale}&nbsp;<strike>{cart:old_price_plus_tax:formatted}</strike>{/if}
                    </td>
                    <td>
                        {cart:price_total_plus_tax:formatted}
                        {if cart:on_sale}&nbsp;<strike>{cart:old_price_total_plus_tax:formatted}</strike>{/if}
                    </td>
                    <td align="right">
                        {exp:reinos_store:delete_cart_item cart_item_id="{cart:id}" return_url="/store"}
                            <a class="button" href="{remove_cart_item_url}">Remove</a>
                        {/exp:reinos_store:delete_cart_item}
                    </td>
                </tr>
            {/exp:channel:entries}
        {/cart:items}
        </tbody>
      </table>
      
      <div class="w-1/2 flex flex-col ml-auto">
        <h3 class="text-lg font-medium mt-5">Coupon code</h3>
        <div class="flex gap-x-1 mb-5">
          <input class="w-full border p-1 rounded" type="text" name="coupon_code" value="{cart:coupon_code}"/>
          <input type="submit" name="update" value="Apply" class="button"/>
        </div>

        <table>
          <tbody>
          <tr>
              <td align="right"><strong>Subtotal</strong></td>
              <td align="right">{cart:subtotal_plus_tax:formatted}</td>
          </tr>
          {if cart:discount > 0}
              <tr>
                  <td align="right"><strong>Discount</strong></td>
                  <td align="right">{cart:discount:formatted}</td>
              </tr>
          {/if}
          {if cart:tax > 0}
          <tr>
              <td align="right"><strong>TAX</strong></td>
              <td align="right">{cart:tax:formatted}</td>
          </tr>
          {/if}
          {if cart:shipping_plus_tax > 0}
              <tr>
                  <td align="right"><strong>Shipping</strong></td>
                  <td align="right">{cart:shipping_plus_tax:formatted}</td>
              </tr>
          {/if}
          <tr>
              <td align="right"><strong>Total excl</strong></td>
              <td align="right">{cart:total:formatted}</td>
          </tr>
          <tr>
              <td align="right"><strong>Total</strong></td>
              <td align="right">{cart:total_plus_tax:formatted}</td>
          </tr>
          </tbody>
        </table>
      </div>
      
      <input type="submit" name="update" value="Update" class="button"/>
      <input type="submit" name="clear" value="Clear cart" class="button"/>
      <a class="button" href="/index.php/store/checkout">Checkout</a>
  {/if}
{/exp:reinos_store:cart}