Jump to content
  • 0
Speszi

Ilość produktów w drzewie kategorii (menu) dla Prestashop 1.7

Question

Witam.

Proszę o info jak można zmodyfikować kod aby wyświetlał ilość produktów w kategoriach w drzewie kategori (menu po lewej stronie).

Próbowałem sposobów opisanych dla Prestashop 1.6 ale niestety nie działa.

W pliku ps_categorytree.php w tagu

public function getTree($resultParents, $resultIds, $maxDepth, $id_category = null, $currentDepth = 0)

Zmodyfikowałem kod w następujący sposób:

$sql = 'SELECT * FROM ps_category_product cp
        WHERE cp.id_category = '.$id_category;
        $result = Db::getInstance()->executeS($sql);    
        $productsCount = (int)Db::getInstance()->getValue('SELECT COUNT(*) FROM ps_category_product AS cp INNER JOIN ps_product_shop AS ps ON cp.id_product = ps.id_product WHERE cp.id_category = '. $id_category.' AND ps.active=1 AND ps.id_shop='.$this->context->shop->id);
        $return = array(
            'id' => $id_category,
            'link' => $link,
            'name' => $name,
            'desc'=> $desc,
            'products' => count($result),
            'children' => $children,
            'productsCount'=>$productsCount
        );

Następnie w pliku category-tree-brench.tpl zmodyfikowałem linie w następujący sposób:

title="{$node.desc|strip_tags|trim|truncate:255:'...'|escape:'html':'UTF-8'}">{$node.name|escape:'html':'UTF-8'} ({$node.productsCount})</a>

Dodałem: ({$node.productsCount})

Niestety nawet po czyszczeniu pamięci podręcznej nie wczytuje wartości.

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0
Posted (edited)

Wystarczylo tylko w kontrolerze dodać do zapytania bazy ....AND ps.active=1 AND ps.id_shop='.$this->context->shop->id LIMIT 10

Albo dodac limit bezpośrednio do zapytania foreach. Ale to szybsze jednak bardziej bezsensownne rozwiązanie,  bo po co ma czytać wszystko z bazy żeby później selekcjonowac. Używając pierwszego rozwiązania będzie to bardziej poprawne optymalizacyjnie

Edited by design4VIP (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Niestety po dodaniu wartosci LIMIT 10 strona główna przestaje wyświetlać menu.

Skróciłem kod modyfikacji do poniższej postaci:

 $productsCount = (int)Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'category_product AS cp INNER JOIN '._DB_PREFIX_.'product_shop AS ps ON cp.id_product = ps.id_product WHERE cp.id_category = '. $id_category.' AND ps.active=1 AND ps.id_shop='.(int)$this->context->shop->id);

$return = array(
            'id' => $id_category,
            'link' => $link,
            'name' => $name,
            'desc'=> $desc,
            'products' => count($result),
            'children' => $children,
            'productsCount'=>$productsCount
        );

ale nadal żadnego rezultatu choć po tym kodzie widać że strona w zależności od ilości produktów na stronie dłużej zaczeła czytać zawartość więc hook jest raczej dobry a pozostaje prawidłowość samego zapytania.

Czy ktoś może spróbować u siebie czy to działa bo u mnie niestety nie.

Share this post


Link to post
Share on other sites
  • 0

To jak poprawnie dodasz do zapytania LIMIT 10 to też zadziała. Ja dodałem dopisek obrazowo a nie jako gotowca. Nie zapomnij, że w zapytaniu masz struktury zapytania pomieszanie ze zmiennymi PHP.... Tu średni, tam kropka... Kombinuj, kombinuj... 

  • Thanks 1

Share this post


Link to post
Share on other sites
  • 0

Pokombinowałem począwszy od phpMyAdmin i w efekcie zadziałało :) Także bardzo dziękuje za pomoc.

Brakło mi jedynie opcji na zmiane kwerendy tak aby zliczała podkategorie dla kategorii głównej

Przykładowo mam kategorie zabawki a w niej 2 podkategorie tj. rowerki i sanki. Jak mam produkty które są przypisane tylko do kategori rowerki a nie są przypisane również do kategorii nadrzędnej czyli zabawki to licznik nie zlicza tych produktów. W moim  wypadku mam wszystkie produkty przypisane do jednej kategroii i moje drzewo kategorii jak jest zwinięte to nie pokazuje licznika produktów z podkategorii bo nie są w niej przypisane. Jest to zrozumiałe bo kwerenda zwraca ilość produktów przypisanych do danej kategorii a tu w tabeli nie mam kategorii zabawki.

Zastanawiam się tylko czy można to jakość obejść i doszedłem do wniosku że trochę to bardziej pogmatwane niż tylko SELECT COUNT :)

Share this post


Link to post
Share on other sites
  • 0

LEFT JOIN..... 

Nie pamiętam teraz dokładnie ale jest też reguła na zliczanie bez powtórzeń. Musisz prześledzić jakieś tutki. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More