Search code examples
expressionengineexpresso-store

How to show a message if there are no products inside a category with exp:resso store plugin?


I'm using the latest version of EE2 and a plugin called Exp:resso store.

I have products assigned to a category and for the most part all of this is working fine. Below is my code:

<div class="col-md-7">
    {exp:channel:categories channel="products" style="linear"}
    <section class="section accordion repeater">
        <h3>
            {category_name}
            <div class="icon">
                <img src="/assets/local/img/plus-icon.jpg" alt="">
            </div>
        </h3>
        <div class="accordion-content">
            {exp:store:search orderby="title" sort="asc" category="{category_id}"}
                {exp:store:product entry_id="{entry_id}"}
                <p class="accordion-download">
                    <a href="#">{title} - {price}</a>
                    <span><a href="#"><img src="/assets/local/img/add-to-cart.jpg" alt="">Add to cart</a></span>
                </p>
                {/exp:store:product}                
            {/exp:store:search}                     
        </div>
    </section>
    {/exp:channel:categories}
</div>

I'm trying to find a way to show a No products exist message if the category doesn't have anything inside of it. I've tried using {count}, {total_results} & {total_rows} to check if there aren't any products. Problem is everything I try is obviously wrong because nothing gets output :/

Thanks in advance


Solution

  • The store search tag is a wrapper for the channel entries tag pair so you would need to use the {if no_results} tag pair.

    <div class="col-md-7">
        {exp:channel:categories channel="products" style="linear"}
        <section class="section accordion repeater">
            <h3>
                {category_name}
                <div class="icon">
                    <img src="/assets/local/img/plus-icon.jpg" alt="">
                </div>
            </h3>
            <div class="accordion-content">
                {exp:store:search orderby="title" sort="asc" category="{category_id}"}
                    {exp:store:product entry_id="{entry_id}"}
                    <p class="accordion-download">
                        <a href="#">{title} - {price}</a>
                        <span><a href="#"><img src="/assets/local/img/add-to-cart.jpg" alt="">Add to cart</a></span>
                    </p>
                    {/exp:store:product}
                    {if no_results}
                      There are no products
                    {/if}
                {/exp:store:search}                     
            </div>
        </section>
        {/exp:channel:categories}
    </div>
    

    Should also be mentioned if you are not creating a form for the to add the products to the cart you could use the {store_field_short_name:price} variable to reduce the number of queries on your page. Most store things such as sku, weight, measurements can all be access by using the field short name followed by :variable