Jump to content
  • 0

Presta 1.7.7.8 - Link górnego menu z kategoriami


peenzano

Question

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.

image.png.087cf0e3dcb6e5031a6058314d184d32.png

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

  • 0

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

  • 0
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

  • 0

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

  • 0

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

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