Автор Тема: Blocktopmenu - как убрать ссылку?  (Прочитано 713 раз)

21 Апрель 2017, 21:20:17
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!

На пункте меню "Главная" (в данный момент "Категории", переименовал) стоит ссылка на главную страницу , как ее удалить? Спасибо!
[/url]
22 Апрель 2017, 10:57:13
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Зайди в настройки модуля и удали ссылку.
24 Апрель 2017, 16:12:12
Ответ #2
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Мне нужно, чтобы сама кнопка "категории" с выпадающим списком осталась
24 Апрель 2017, 16:21:44
Ответ #3
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Где находится код, который генерирует этот пункт меню?
24 Апрель 2017, 16:59:31
Ответ #4
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я так понимаю генерируется где то тут (blocktopmenu.php), но как убрать ссылку только у первого пункта и куда смотреть?

protected function makeMenu()
    {
        $menu_items = $this->getMenuItems();
        $id_lang = (int)$this->context->language->id;
        $id_shop = (int)Shop::getContextShopID();

        foreach ($menu_items as $item) {
            if (!$item) {
                continue;
            }

            preg_match($this->pattern, $item, $value);
            $id = (int)substr($item, strlen($value[1]), strlen($item));

            switch (substr($item, 0, strlen($value[1]))) {
                case 'CAT':
                    $this->_menu .= $this->generateCategoriesMenu(Category::getNestedCategories($id, $id_lang, false, $this->user_groups));
                    break;

                case 'PRD':
                    $selected = ($this->page_name == 'product' && (Tools::getValue('id_product') == $id)) ? ' class="sfHover"' : '';
                    $product = new Product((int)$id, true, (int)$id_lang);
                    if (!is_null($product->id)) {
                        $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($product->getLink()).'" title="'.$product->name.'">'.$product->name.'</a></li>'.PHP_EOL;
                    }
                    break;

                case 'CMS':
                    $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : '';
                    $cms = CMS::getLinks((int)$id_lang, array($id));
                    if (count($cms)) {
                        $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'" title="'.Tools::safeOutput($cms[0]['meta_title']).'">'.Tools::safeOutput($cms[0]['meta_title']).'</a></li>'.PHP_EOL;
                    }
                    break;

                case 'CMS_CAT':
                    $category = new CMSCategory((int)$id, (int)$id_lang);
                    if (count($category)) {
                        $this->_menu .= '<li><a href="'.Tools::HtmlEntitiesUTF8($category->getLink()).'" title="'.$category->name.'">'.$category->name.'</a>';
                        $this->getCMSMenuItems($category->id);
                        $this->_menu .= '</li>'.PHP_EOL;
                    }
                    break;
24 Апрель 2017, 17:47:50
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В blocktopmenu.php метод generateCategoriesMenu в нем создаются ссылки.
24 Апрель 2017, 21:08:29
Ответ #6
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>';

вот тут я так понимаю надо поменять что то? Как оставить ссылки во всех остальных пунктах меню, но удалить у первого пункта?
25 Апрель 2017, 09:15:00
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
if($id != 'id категории, которую нужно исключить')<a...>Нужно добавить исключение для категории c id XXX.
25 Апрель 2017, 17:29:02
Ответ #8
  • Пользователь
  • **
  • Сообщений: 50
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо! Можете пожалуйста написать, куда конкретно вставить данный код, чтобы не ошибиться. Предположим у категории ID 1 - это главная категория, в которой все остальные. Спасибо!