peenzano Posted November 17, 2021 Share Posted November 17, 2021 Cześć, Próbuje zbudować Linki górnego menu z kategoriami, ale nie mogę uzyskać efektu, który chce. Aktualnie, po najechaniu np. na Farby, wyświetlają mi się wszystkie poziomy/podkategorie. Chciałbym aby wyświetlały się tylko podkategorie jeden poziom niżej, nie wszystkie poziomy. Co ciekawe, tak się dzieje np. w menu po lewej stronie. Gdzie szukać problemu/rozwiązania? Link to comment Share on other sites More sharing options...
0 ComGrafPL Posted November 22, 2021 Share Posted November 22, 2021 W zależności czy masz menu z modułu zewnętrznego czy nie. Plik w ps_mainmenu/ps_mainmenu.php. Znajdź funkcje generateCategoriesMenu do dodaj kod: } elseif ($thiscategory->level_depth == 5) { $maxdepth = 2; } Maxdeph możesz ustawić na 1 lub 2 i po wyczyszczeniu cache powinno być ok. Link to comment Share on other sites More sharing options...
0 peenzano Posted November 22, 2021 Author Share Posted November 22, 2021 1 hour ago, ComGrafPL said: W zależności czy masz menu z modułu zewnętrznego czy nie. Plik w ps_mainmenu/ps_mainmenu.php. Znajdź funkcje generateCategoriesMenu do dodaj kod: } elseif ($thiscategory->level_depth == 5) { $maxdepth = 2; } Maxdeph możesz ustawić na 1 lub 2 i po wyczyszczeniu cache powinno być ok. Dzięki, zerknąłem, ale konstrukcja tej funkcji wygląda na inną. Masz pomysł jak to wyedytować? protected function generateCategoriesMenu($categories, $is_children = 0) { $nodes = []; foreach ($categories as $key => $category) { $node = $this->makeNode([]); if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = $cat->getLink(); // Check if customer is set and check access if (Validate::isLoadedObject($this->context->customer) && !$cat->checkAccess($this->context->customer->id)) { continue; } } else { $link = $this->context->link->getPageLink('index'); } .... Link to comment Share on other sites More sharing options...
0 ComGrafPL Posted November 22, 2021 Share Posted November 22, 2021 Nie chodzi o edycję, ale o dodanie kodu: protected function generateCategoriesMenu($categories, $is_children = 0) { $nodes = []; foreach ($categories as $key => $category) { $node = $this->makeNode([]); if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = $cat->getLink(); // Check if customer is set and check access if (Validate::isLoadedObject($this->context->customer) && !$cat->checkAccess($this->context->customer->id)) { continue; } } else { $link = $this->context->link->getPageLink('index'); } } elseif ($thiscategory->level_depth == 5) { $maxdepth = 2; } Link to comment Share on other sites More sharing options...
0 peenzano Posted November 22, 2021 Author Share Posted November 22, 2021 Ta funkcja jest trochę dłuższa (poniżej). Do którego if-a to dorzucić? protected function generateCategoriesMenu($categories, $is_children = 0) { $nodes = []; foreach ($categories as $key => $category) { $node = $this->makeNode([]); if ($category['level_depth'] > 1) { $cat = new Category($category['id_category']); $link = $cat->getLink(); // Check if customer is set and check access if (Validate::isLoadedObject($this->context->customer) && !$cat->checkAccess($this->context->customer->id)) { continue; } } else { $link = $this->context->link->getPageLink('index'); } $node['url'] = $link; $node['type'] = 'category'; $node['page_identifier'] = 'category-' . $category['id_category']; /* Whenever a category is not active we shouldnt display it to customer */ if ((bool) $category['active'] === false) { continue; } $current = $this->page_name == 'category' && (int) Tools::getValue('id_category') == (int) $category['id_category']; $node['current'] = $current; $node['label'] = $category['name']; $node['image_urls'] = []; if (isset($category['children']) && !empty($category['children'])) { $node['children'] = $this->generateCategoriesMenu($category['children'], 1); } if ($this->imageFiles === null) { $this->imageFiles = scandir(_PS_CAT_IMG_DIR_); } if (count(preg_grep('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $this->imageFiles)) > 0) { foreach ($this->imageFiles as $file) { if (preg_match('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $file) === 1) { $image_url = $this->context->link->getMediaLink(_THEME_CAT_DIR_ . $file); $node['image_urls'][] = $image_url; } } } $nodes[] = $node; } return $nodes; } Link to comment Share on other sites More sharing options...
Question
peenzano
Cześć,
Próbuje zbudować Linki górnego menu z kategoriami, ale nie mogę uzyskać efektu, który chce.
Aktualnie, po najechaniu np. na Farby, wyświetlają mi się wszystkie poziomy/podkategorie.
Chciałbym aby wyświetlały się tylko podkategorie jeden poziom niżej, nie wszystkie poziomy.
Co ciekawe, tak się dzieje np. w menu po lewej stronie.
Gdzie szukać problemu/rozwiązania?
Link to comment
Share on other sites
4 answers to this question
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