Jump to content
  • 0

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


Speszi

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.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

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)
Link to comment
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.

Link to comment
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 :)

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...