Автор Тема: Подсветка кнопок горизонтального меню  (Прочитано 368 раз)

26 Марта 2015, 13:34:22
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем проблема такая, на горизонтальном меню располагаются кнопки категорий и те, которые добавлены просто ссылкой (например у меня "контакты" и "блог"). Так вот, те, которые добавлены просто ссылкой при нажатии не выделяются красным в отличии от кнопок категорий. В чем проблема и как можно её устранить? Версия 1,6, тема стандартная.
Спасибо!
26 Марта 2015, 14:22:04
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13128
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно класс добавить к ссылке
class="sfHover"
26 Марта 2015, 14:40:53
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно класс добавить к ссылке
class="sfHover"
добавлять в каком файле?\modules\themeconfigurator\css\theme2.css ???
Или где?
26 Марта 2015, 14:47:04
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
У добавленных ссылок класс sfHover не присваивается в самом модуле. Модуль так сделан. Чтобы можно было выделять такие ссылки, нужно переделать этот модуль, в файле /modules/blocktopmenu/blocktopmenu.php в
case 'LNK':
...
дописать вывод класса selected , как в других вариантах меню.
26 Марта 2015, 16:05:03
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У добавленных ссылок класс sfHover не присваивается в самом модуле. Модуль так сделан. Чтобы можно было выделять такие ссылки, нужно переделать этот модуль, в файле /modules/blocktopmenu/blocktopmenu.php в
case 'LNK':
...
дописать вывод класса selected , как в других вариантах меню.

Спасибо за ответ! Пример кода не можете скинуть?
26 Марта 2015, 16:32:20
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1193
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
//название вашей страницы в body id="...."
if ($this->page_name == 'название вашей страницы')
        $selected = ' class="sfHover"';
else
        $selected = ' ';
$this->_menu .= '<li'.$selected.'>
26 Марта 2015, 17:12:15
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я наверное дико туплю, но ничего не получается((((
26 Марта 2015, 18:24:32
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
if ($this->page_name == 'contact')
$selected = ' class="sfHover"';
else
$selected = ' ';
Для страницы контактов работает, а для других нет.
26 Марта 2015, 18:36:31
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И да кстати в файле /modules/blocktopmenu/blocktopmenu.php нет строк if ($this->page_name == '.......')


26 Марта 2015, 19:15:38
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1193
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
И да кстати в файле /modules/blocktopmenu/blocktopmenu.php нет строк if ($this->page_name == '.......')
Это вы тудв должны добавить.
26 Марта 2015, 19:16:58
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1193
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
if ($this->page_name == 'contact')
$selected = ' class="sfHover"';
else
$selected = ' ';
Для страницы контактов работает, а для других нет.
Для других другие названия.
27 Марта 2015, 01:21:23
Ответ #11
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И да кстати в файле /modules/blocktopmenu/blocktopmenu.php нет строк if ($this->page_name == '.......')
Это вы тудв должны добавить.

спасибо большое за ответ! Подскажите пожалуйста еще.... Добавляем же код в файл blocktopmenu.php???
А куда именно?
И как правильно?
Я добавляю
// Contacts
if ($this->page_name == 'contacts')
        $selected = ' class="sfHover"';
else
        $selected = ' ';
$this->_menu .= '<li'.$selected.'>
но у меня ничего не происходит. Ну как, точнее происходит сайт не отображается
27 Марта 2015, 10:27:48
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И да кстати в файле /modules/blocktopmenu/blocktopmenu.php нет строк if ($this->page_name == '.......')
Это вы тудв должны добавить.

в какую строчку надо всё добавить?
27 Марта 2015, 10:54:27
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В функцию makeMenu, в
case 'LNK':пред
$this->_menu .= '<li'.$selected.'>
27 Марта 2015, 14:00:14
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 107
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В функцию makeMenu, в
case 'LNK':пред
$this->_menu .= '<li'.$selected.'>
case 'LNK':
$link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop);
if (count($link))
{
if (!isset($link[0]['label']) || ($link[0]['label'] == ''))
{
$default_language = Configuration::get('PS_LANG_DEFAULT');
$link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID());
}
$this->_menu .= '<li><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' onclick="return !window.open(this.href);"': '').' title="'.Tools::safeOutput($link[0]['label']).'">'.Tools::safeOutput($link[0]['label']).'</a></li>'.PHP_EOL;
}
break;


вставляю вместо
$this->_menu .= '<li>:$this->_menu .= '<li'.$selected.'>:
Ничего не происходит. Что я не так делаю?