Jump to content

Не отображать подкатегории третьего уровня в меню


Recommended Posts

Создал каталог на стандартном шаблоне, получилась очень громоздкая структура. Вопрос в том, есть ли способ не отображать подкатегории третьего уровня в главном меню? 

 

Прилагаю скрин одной из категорий структуры: post-785158-0-19329300-1397739495_thumb.jpg

Share this post


Link to post
Share on other sites

  • 3 weeks later...

Человек спрашивал про главное горизонтальное меню,а вы отвечаете про блок категорий.Это разные вещи.Если в настройках этого блока максимальную глубину установить на скажем "2"-в главном горизонтальном меню ничего не изменится.Мне тоже очень хочется узнать ответ на вопрос Site-o-Tech. Может кто знает? Я для себя пока нашёл вот такое решение-http://prestashop.com/forums/topic/329397-как-в-главном-горизонтальном-меню-ограничить-в/ .Может пригодится.

Edited by Виталя (see edit history)

Share this post


Link to post
Share on other sites

Это все делается элементарно, подучите PHP...

 

 

В файле blocktopmenu внутри функции getCategory, вывод подуровней меню поместить в правило:

 

if($category->level_depth != 3)

{/if}

Share this post


Link to post
Share on other sites

  • 2 years later...

Kerm, мы оценили Вашу компетентность! )) Однако, кроме знания инструментального средства ещё требуется и понимание кода самого продукта.

Открыл для 1.6.1.11 файл

    /modules/blocktopmenu/blocktopmenu.php

Нашёл там только определение функции:

    protected function getCMSCategories($recursive = false, $parent = 1, $id_lang = false, $id_shop = false)

 

Правда, какую часть кода заключить в предложенный Вами оператор:

    if($category->level_depth != 3)
    . . .
    {/if}

так и не понял. Подскажите, плиз!

 

Кроме того, не лучше ли условие сделать такое:

    if($category->level_depth < 3)

?

 

 

Ещё один человек предлагал в этом же файле в определении функции

    protected function getCMSMenuItems($parent, $depth = 1, $id_lang = false)

в самом начале (строка 649 примерно)

поменять код

    if ($depth > 3)
    return;

на

    if ($depth > 0)

    return;

или

    if ($depth > 1)

    return;

смотря какой уровень вложенности нужно ограничить. Будет ли этот вариант работать? У меня что-то он не заработал...

Share this post


Link to post
Share on other sites

Kerm, мы оценили Вашу компетентность! )) Однако, кроме знания инструментального средства ещё требуется и понимание кода самого продукта.

Открыл для 1.6.1.11 файл

    /modules/blocktopmenu/blocktopmenu.php

Нашёл там только определение функции:

    protected function getCMSCategories($recursive = false, $parent = 1, $id_lang = false, $id_shop = false)

 

Правда, какую часть кода заключить в предложенный Вами оператор:

    if($category->level_depth != 3)

    . . .

    {/if}

так и не понял. Подскажите, плиз!

 

Кроме того, не лучше ли условие сделать такое:

    if($category->level_depth < 3)

?

 

 

Ещё один человек предлагал в этом же файле в определении функции

    protected function getCMSMenuItems($parent, $depth = 1, $id_lang = false)

в самом начале (строка 649 примерно)

поменять код

    if ($depth > 3)

    return;

на

    if ($depth > 0)

    return;

или

    if ($depth > 1)

    return;

смотря какой уровень вложенности нужно ограничить. Будет ли этот вариант работать? У меня что-то он не заработал...

 

 

Начну с того что если в названии функции есть аббревиатура CMS, эта функция относится к статическим страницам, которые можно создать в админке сайта и затем вывести ссылки на них в верхнем горизонтальном меню через эти функции. Функции отвечающие за вывод категорий называются по другому. 

Share this post


Link to post
Share on other sites

Вам нужна функция generateCategoriesMenu в файле blocktopmenu.php, я взял файл от версии престашопа 1.6.1.9, код в файлах других версий может сильно отличатся. В этой версии файла нужно уже использовать условие:

if ($category['level_depth'] > 3) {
      // Код отвечающий за вывод пунктов меню
}

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

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