Esconder subcategorias que não possuem produtos



  • Bom dia pessoal

    como podem ver na imagem tenho cadastrado varias subcategorias no meu site e muitas delas ainda não possuem produto nelas. gostaria de colocar uma validação para ela não aparecer caso não tenha produto relacionado.

    0_1547655071861_xtech.png

    identifiquei na pagina "main_menu.html" a linha que monta as subcategorias:
    <li>
    <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
    {{ child.category.name }}
    </a>
    </li>

    mas preciso saber como consigo saber quantas quantidades de produtos tem nessa subcategoria.

    minha ideia seria:

    <li>
    {% if "quantidades de produtos salvo nessa subcategoria" < 0 %}
    <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
    {{ child.category.name }}
    </a>
    {% endif %}
    </li>


  • Dev

    Olá @trvalle, então vou testar um código para ver se é possível fazer nesta questão dos menus, quando terminar os testes aviso se é possível.


  • Dev

    @trvalle segue o código alterado com esta funcionalidade, basta vc trocar todo o código do arquivo main_menu.html e colar o código abaixo:
    OBS: A funcionalidade é basicamente não add o menu com uma lista "0" de produtos.

    <nav class="navbar navbar-default" role="navigation">
        <ul class="nav navbar-nav">
        {% for page in get_children_of_page('topo-esquerda') %}
            <li>
                <a href="{{ page.url is empty ? site_url(page.slug) : page.url }}" {{ page.new_window ? 'target="_blank"':''}}>
                    <h2>{{ page.title }}</h2>
                </a>
            </li>
        {% endfor %}
        
        {% for cat in categories %}
            {% if cat.category.slug != 'home' %}
                {% if cat.children|count > 0 and template_settings('select:menu_dropdown') > 0 %}
                    <li class="dropdown" onmouseover="$(this).addClass('open');" onmouseout="$(this).removeClass('open');">
                        <a href="{{ site_url(cat.category.slug) }}">
                            <h2>{{ cat.category.name }}</h2>
                            <b class="caret"></b>
                        </a>
                        <ul class="dropdown-menu">
                            {% set limiter = 0 %}
                            {% for child in cat.children %}
                                {% if child.children|count > 0 and template_settings('select:menu_dropdown') == 2 and get_products_by_category_slug(child.category.slug)|count != 0 %}
                                    <li class="dropdown" onmouseover="$(this).addClass('open');" onmouseout="$(this).removeClass('open');">
                                        
                                        <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                            {{ child.category.name }}
                                            <b class="sub-caret"></b>
                                        </a>
                            
                                        <ul class="dropdown-submenu">
                                            {% for newChild in child.children %}
                                                <li>
                                                    <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug ~'/'~ newChild.category.slug) }}">
                                                        {{ newChild.category.name }}
                                                    </a>
                                                </li>
                                            {% endfor %}
                                        </ul>
                                    </li>
                                {% elseif template_settings('text:quantity_dropdown') > 2 and get_products_by_category_slug(child.category.slug)|count != 0 %}
                                    {% set limiter = limiter + 1 %}
                                    {% if limiter == 1 %}
                                        <li class="block-list-limiter">
                                            <ul class="list-limiter">
                                    {% endif %}
                                    
                                    <li>
                                        <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                            {{ child.category.name }}
                                        </a>
                                    </li>
                                    
                                    {% if limiter == template_settings('text:quantity_dropdown') or  cat.children|length == loop.index %}
                                            {% set limiter = 0 %}
                                            </ul>
                                        </li>
                                    {% endif %}
                                                                        
                                {% else %}
                                
                                    {% if get_products_by_category_slug(child.category.slug)|count != 0 %}
                                        <li>
                                            <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                                {{ child.category.name }}
                                            </a>
                                        </li>
                                    {% endif %}
                                
                                {% endif %}
                            {% endfor %}
                        </ul>
                    </li>
                {% else %}
                    <li>
                        <a href="{{ site_url(cat.category.slug) }}">
                            <h2>{{ cat.category.name }}</h2>
                        </a>
                    </li>
                {% endif %}
            {% endif %}
        {% endfor %}
        {% for page in get_children_of_page('topo-direita') %}
            <li>
                <a href="{{ page.url is empty ? site_url(page.slug) : page.url }}" {{ page.new_window ? 'target="_blank"':''}}>
                    <h2>{{ page.title }}</h2>
                </a>
            </li>
        {% endfor %}
        </ul>
    </nav>
    
    {% if template_settings('text:quantity_dropdown') > 0 and template_settings('select:menu_dropdown') < 2  %}
    <script>
        $(document).ready(function(){
            $('.dropdown-menu').each(function(){
                var colunas = $(this).find('.block-list-limiter').length;
                $(this).css('width', (colunas*{{template_settings('text:width_dropdown')}})+'px');
            }); 
            $('.block-list-limiter').css('width','{{template_settings('text:width_dropdown')}}px');
        });
    </script>
    {% endif %}
    


  • Valeu @charles funcionou.
    para o mobile, posso usar esse mesmo código?


  • Dev

    @trvalle, não funciona, porque são códigos diferentes, eu vou adaptar o código do desktop para o mobile e posto aqui.



  • Obrigado @charles fico no aguardo


  • Dev

    Olá @trvalle, segue o código para o mobile para ocultar categorias que não possuem produtos:

    1 - Print mostrando como deve add o código:

    0_1549310501327_45881d20-3534-4f40-bef7-e13704549b80-image.png

    2 - Cole o código no novo arquivo criado:

    <div class="main-menu mean-container">
        <div class="mean-bar" >
            <a href="#nav" class="meanmenu-reveal">Show Navigation</a>
    
            <a href="#nav" class="meanmenu-revseal">
                <div class="topgs" style="float: left">Menu</div>
            </a>
    
            <a class="to-right" href="{{ site_url('cart/view_cart') }}">
                <i class="fa fa-fw fa-shopping-cart"></i>
                <small class="badge">{{ items_in_cart() }}</small>
            </a>
    
            {% if logged_in %}
            <a class="to-right" href="{{ site_url('secure/logout') }}">
                <i class="fa f-fw fa-sign-out"></i>
            </a>
            {% endif %}
    
            <a class="to-right" href="{{ site_url('secure/my_account') }}">
                <i class="fa fa-fw fa-user"></i>
            </a>
    
            <nav class="mean-nav"></nav>
        </div>
    </div>
    
    <header>
        <nav style="display: none;">
            <ul>
                {% for page in get_children_of_page('topo-esquerda') %}
                <li>
                    <a href="{{ page.url is empty ? site_url(page.slug) : page.url }}" {{ page.new_window ? 'target="_blank"':''}}>
                        {{ page.title }}
                    </a>
                </li>
                {% endfor %}
    
                {% for cat in categories %}
                    {% if cat.category.slug != 'home' %}
                        {% if cat.children|count > 0  %}
                            <li>
                                <a href="{{ site_url(cat.category.slug) }}">
                                    {{ cat.category.name }}
                                </a>
    
                                <ul>
                                    {% set limiter = 0 %}
                                    {% for child in cat.children %}
                                        {% if child.children|count > 0 and get_products_by_category_slug(child.category.slug)|count != 0%}
                                            <li>
                                                <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                                    {{ child.category.name }}
                                                </a>
                                                <ul>
                                                {% for newChild in child.children %}
                                                    <li>
                                                        <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug ~'/'~ newChild.category.slug) }}">
                                                            {{ newChild.category.name }}
                                                        </a>
                                                    </li>
                                                {% endfor %}
                                                </ul>
                                            </li>
                                        {% elseif template_settings('text:quantity_dropdown') > 2 and get_products_by_category_slug(child.category.slug)|count != 0 %}
                                            {% set limiter = limiter + 1 %}
                                            <li>
                                                <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                                    {{ child.category.name }}
                                                </a>
                                            </li>
    
                                            {% if limiter ==  cat.children|length == loop.index %}
                                                {% set limiter = 0 %}
                                            {% endif %}
                                        {% elseif get_products_by_category_slug(child.category.slug)|count != 0  %}
                                            <li>
                                                <a href="{{ site_url(cat.category.slug ~ '/' ~ child.category.slug) }}">
                                                    {{ child.category.name }}
                                                </a>
                                            </li>
                                        {% endif %}
                                    {% endfor %}
                                </ul>
                            </li>
                        {% else %}
                            <li>
                                <a href="{{ site_url(cat.category.slug) }}">
                                    {{ cat.category.name }}
                                </a>
                            </li>
                        {% endif %}
                    {% endif %}
                {% endfor %}
    
                {% for page in get_children_of_page('topo-direita') %}
                    <li>
                        <a href="{{ page.url is empty ? site_url(page.slug) : page.url }}" {{ page.new_window ? 'target="_blank"':''}}>
                            {{ page.title }}
                        </a>
                    </li>
                {% endfor %}
            </ul>
        </nav>
    </header>