Blocktopmenu - как убрать ссылку?

Автор catbird, 21 апреля 2017, 21:20:17

« назад - далее »

catbird

Здравствуйте!

На пункте меню "Главная" (в данный момент "Категории", переименовал) стоит ссылка на главную страницу , как ее удалить? Спасибо!
[/url]

Миколас

Зайди в настройки модуля и удали ссылку.

catbird

Мне нужно, чтобы сама кнопка "категории" с выпадающим списком осталась

catbird

Где находится код, который генерирует этот пункт меню?

catbird

Я так понимаю генерируется где то тут (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;

Adik

В blocktopmenu.php метод generateCategoriesMenu в нем создаются ссылки.

catbird

$html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>';


вот тут я так понимаю надо поменять что то? Как оставить ссылки во всех остальных пунктах меню, но удалить у первого пункта?

coder

if($id != 'id категории, которую нужно исключить')<a...>
Нужно добавить исключение для категории c id XXX.

catbird

Спасибо! Можете пожалуйста написать, куда конкретно вставить данный код, чтобы не ошибиться. Предположим у категории ID 1 - это главная категория, в которой все остальные. Спасибо!