mechu Posted June 27, 2016 Share Posted June 27, 2016 (edited) Witam. Chciałbym zmienić wyświetlanie kategorii na górnej belce, tak, żeby wyświetlało tylko podkategorię bez kolejnych jej poziomów, oraz chciałbym, żeby na stronie kategorii wyświetlane były nie tylko produkty z tej kategorii, ale również z wszystkich podkategorii do niej należących. Jak to zrobić będę wiedział, tylko nie łapię się jeszcze w strukturze plików, więc jakby mi ktoś mógł podpowiedzieć gdzie znajdę zapytania do bazy danych, które wyciągają te informacje, to byłbym wdzięczny Pozdrawiam Michał. Edited June 27, 2016 by mechu (see edit history) Link to comment Share on other sites More sharing options...
endriu107 Posted June 27, 2016 Share Posted June 27, 2016 Górna belka to moduł blocktopmenu czyli szukasz w modules/blocktopmenu, natomiast produkty z podkategorii można w panelu przypisać do różnych kategorii i wtedy będą sie również w nich wyświetlać, ewentualnie zobacz sobie do pliku classes/category.php Link to comment Share on other sites More sharing options...
mechu Posted June 28, 2016 Author Share Posted June 28, 2016 Ok, belkę ogarnąłem, jakby kogoś interesowało to w blocktopmenu.php trzeba przerobić mtodę generateCategoriesMenu protected function generateCategoriesMenu($categories, $is_children = 0, $third = 0) { $html = ''; foreach ($categories as $key => $category) { if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = Tools::HtmlEntitiesUTF8($cat->getLink()); } else { $link = $this->context->link->getPageLink('index'); } /* Whenever a category is not active we shouldnt display it to customer */ if ((bool)$category['active'] === false) { continue; } $html .= '<li'.(($this->page_name == 'category' && (int)Tools::getValue('id_category') == (int)$category['id_category']) ? ' class="sfHoverForce"' : '').'>'; $html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>'; if (isset($category['children']) && !empty($category['children'])) { $html .= '<ul>'; if (!$third) $html .= $this->generateCategoriesMenu($category['children'], 1, 1); if ((int)$category['level_depth'] > 1 && !$is_children) { $files = scandir(_PS_CAT_IMG_DIR_); if (count(preg_grep('/^'.$category['id_category'].'-([0-9])?_thumb.jpg/i', $files)) > 0) { $html .= '<li class="category-thumbnail">'; foreach ($files as $file) { if (preg_match('/^'.$category['id_category'].'-([0-9])?_thumb.jpg/i', $file) === 1) { $html .= '<div><img src="'.$this->context->link->getMediaLink(_THEME_CAT_DIR_.$file) .'" alt="'.Tools::SafeOutput($category['name']).'" title="' .Tools::SafeOutput($category['name']).'" class="imgm" /></div>'; } } $html .= '</li>'; } } $html .= '</ul>'; } $html .= '</li>'; } return $html; } Po tej zmianie po najechaniu na kategorię na belce wyświetlają się tylko podkategorie należące do tej kategorii (bez podkategorii należących do podkategorii itd.) U mnie kategorie są tak rozbudowane, że po najechaniu na kategorię rozwijała się lista na ładnych pięć stron Z kategoriami to znalazłem w classes/Category.php metodę getProducts, ale zamiast ją zmieniać chciałbym w pliku gdzie jest ona wywoływana dodać po prostu kolejne jej wywołania podając id podkategorii należących do kategorii z której są wyświetlane produkty, tylko nie wiem gdzie szukać. I przy okazji chciałem zmodyfikować tą metodę, tak aby pobierała jedynie produkty, które są na stanie dodając do zapytania linijkę: WHERE product_shop.`id_shop` = '.(int)$context->shop->id.' AND cp.`id_category` = '.(int)$this->id .($active ? ' AND product_shop.`active` = 1' : '') .($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '') .($id_supplier ? ' AND p.id_supplier = '.(int)$id_supplier : ''). ' AND p.`quantity` > 0'; ale nie przynosi to rezultatów. Link to comment Share on other sites More sharing options...
endriu107 Posted June 28, 2016 Share Posted June 28, 2016 Kontrolerów nie edytuj bezpośrednio tylko rób to za pomocą override i po każdej zmianie w kontrolerach usuń plik class_index.php z folderu cache. Link to comment Share on other sites More sharing options...
mechu Posted June 28, 2016 Author Share Posted June 28, 2016 Ok, dzięki za radę, ale co jest źle z warunkiem p.`quantity` > 0';, że nie działa? I gdzie znajdę plik, w którym jest wywoływana ta metoda i generowane są produkty dla danej kategori? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now