Jump to content
  • 0

Drzewko kategorii - Rozwinięcie do poziomu aktywnej kategorii


michal_c

Question

Witajcie,

Mam problem z ustawieniem docelowego wyświetlania drzewka kategorii.

Zależy mi na tym, żeby menu boczne (drzewko kategorii) rozwijało się do poziomu aktywnej kategorii.

Czyli po przechodzeniu w głąb drzewka, żeby zostawały rozwinięte interesujące nas podkategorie (tu np. z Blatami, szafami itp).

 

image.png.2c1e096f68e241db4ae2d4ca3862fe44.png

 

Ustawiłem już tworzenie odpowiedniej klasy dla aktywnej kategorii (podświetla się na inny kolor). Jednak nie mogę poradzić sobie z powyższym problemem. 

Wiem, że w starszych wersjach presty można było wyłączyć "Dynamicznie" w ustawieniach modułu i temat był załatwiony. Jednak w 1.7 nie widzę takiej opcji. 

Pomocy :)

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 1

To już edycja pliku tpl modułu.

Moduł ps_categorytree w wybranym szablonie. Otwieramy ps_categorytree.tpl.

Tam należy dodać jakiś wyjątek sprawdzający, jest kilka możliwości ale tak na szybko to można sprawdzać przecież obecny link gdzie jesteśmy z tym w drzewku i jeżeli jest taki sam to dodawać do collapse wartość in.

{if $node.link == $urls.current_url} in{/if}

a finalnie byłoby to co niżej no chyba że twój moduł jest inaczej przebudowany:

{function name="categories" nodes=[] depth=0}
  {strip}
    {if $nodes|count}
      <ul class="category-sub-menu">
        {foreach from=$nodes item=node}
          <li data-depth="{$depth}">
            {if $depth===0}
              <a href="{$node.link}">{$node.name}</a>
              {if $node.children}
                <div class="navbar-toggler collapse-icons" data-toggle="collapse" data-target="#exCollapsingNavbar{$node.id}">
                  <i class="material-icons add">&#xE145;</i>
                  <i class="material-icons remove">&#xE15B;</i>
                </div>
                <div class="collapse{if $node.link == $urls.current_url} in{/if}" id="exCollapsingNavbar{$node.id}">
                  {categories nodes=$node.children depth=$depth+1}
                </div>
              {/if}
            {else}
              <a class="category-sub-link" href="{$node.link}">{$node.name}</a>
              {if $node.children}
                <span class="arrows" data-toggle="collapse" data-target="#exCollapsingNavbar{$node.id}">
                  <i class="material-icons arrow-right">&#xE315;</i>
                  <i class="material-icons arrow-down">&#xE313;</i>
                </span>
                <div class="collapse" id="exCollapsingNavbar{$node.id}">
                  {categories nodes=$node.children depth=$depth+1}
                </div>
              {/if}
            {/if}
          </li>
        {/foreach}
      </ul>
    {/if}
  {/strip}
{/function}

 

DEMO:

rozwijane-kategorie.jpg.d4ee6052af82557a7f0d3c5b7cc23372.jpg

 

PS. W ustawieniach modułu musi być zaznaczona opcja aby pokazywało wszystkie kategorie.

Można jeszcze coś dodać aby podkategorie podkategorii były rozwinięte ale to można podziałać we własnym zakresie. Tak samo jak mój przykład można wybrać inne warunki do porównania.

 

PS2. Zerknij jeszcze na ikonkę plusika - trzeba ją zmodyfikować.

Edited by krzysiek_web
PS2 info (see edit history)
Link to comment
Share on other sites

  • 0

Jasne, wtedy przechodzi "Głębiej".

image.png.15b936b0a5843edd27092aa8fa8a7bf1.png

 

Problem w tym, że zależy mi na tym, żeby cały czas były widoczne pogrubione kategorie z wcześniejszego screena.

Podsumowując, drzewko na każdej stronie powinno wyglądać tak samo, a jedyne różnice to pod pogrubioną nazwą kategorii rozwinięta lista podkategorii z podświetloną wybraną.

Czyli np. tak:

image.png.3823821fb5bf2a391b58f6e57f4a5981.pngimage.png.bb9a425f25b0ad78ea8ff04b995a231f.png

Podświetlenie aktywnej kategorii już mam załatwione.

Jedyny problem to to, że po wybraniu podkategorii - na nowej stronie otwiera się "zamknięte" drzewko.

image.png

image.png

Link to comment
Share on other sites

  • 0
20 hours ago, krzysiek_web said:

PS. W ustawieniach modułu musi być zaznaczona opcja aby pokazywało wszystkie kategorie.

 

Dobrze myślę, że powinno być zaznaczone: Kategoria główna - Kategoria główna    ?

 

Na razie jeszcze nie działa (poszukam i może znajdę powód).

Moduł miał standardowy kod, poza kwestią podświetlania aktywnej kategorii (31 wiersz):

       <li data-depth="{$depth}" class="{if isset($category) && is_array($category) && isset($category.id) && $category.id==$node.id}active_category{/if}">

 

Wielkie dzięki za pomoc.

Link to comment
Share on other sites

  • 0

Ok, udało mi się dotrzeć do momentu, w którym wyświetla się tak jak chcemy w jednym przypadku (klasa jest podstawiana) - gdy wchodzimy w jedną z głównych kategorii.

 

Czyli przykładowo klikając w "Konfigurator mebli na wymiar" otwiera nam się ta kategoria z rozwiniętą listą (blaty itp).

Gdy wejdziemy w blaty, całość mamy znowu zwiniętą. Czyli wygląda na to, że podkategorie nie działają (jeśli dobrze rozumiem, dopiero głębiej nie powinny działać).

 

Zrzut ekranu 2023-01-20 162032.jpg

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...