0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 1665 Просмотров
*

bzz

  • Новичок
  • 4
  • 0 / 0
class ='active'
« : 03.04.2013, 13:28:32 »
Здравствуйте, помогите понять.

Делаю свой компонент, в меню компонента в административной части при выборе одного из пунктов активными становятся два. Все остальные пункты меню подсвечиваются корректно.

Почему Joomla! может делать так:

Код
	<div class="m">
<ul id="submenu">
<li>
<a href="index.php?option=com_ksr&amp;section=specialities">Специальности</a>
</li>
<li>
<a href="index.php?option=com_ksr&amp;section=subj">Дисциплины</a>
</li>
<li>
<a href="index.php?option=com_ksr&amp;section=sem">Семестр</a>
</li>
<li>
<a href="index.php?option=com_ksr&amp;section=teach">Преподаватели</a>
</li>
<li>
<a class="active" href="index.php?option=com_ksr&amp;section=ciwtopic">Темы работ</a>
</li>
<li>
<a class="active" href="index.php?option=com_ksr&amp;section=ciw">Перечень работ</a>
</li>
</ul>
<div class="clr"></div>
</div>

*

bzz

  • Новичок
  • 4
  • 0 / 0
Re: class ='active'
« Ответ #1 : 05.04.2013, 12:52:33 »
Решено! :D
Если  у кого-то похожая беда.
Проблема из-за совпадения  начала строк одной и второй ссылки.

<a class="active" href="index.php?option=com_ksr&amp;section=ciwtopic">Темы работ</a>
</li>
<li>
<a class="active" href="index.php?option=com_ksr&amp;section=ciw">Перечень работ</a>

решение: замена в базе опции admin_menu_link с option=com_ksr&section=ciwtopic на option=com_ksr&section=topic (и соответствующие правки по коду).

Дело в том, что class=active для пунктов подменю в админке  задается в соответствии с алгоритмом в файле /administrator/modules/mod_submenu/mod_submenu.php. Где код написан таким образом, что проверяется соответствие строки адреса запроса к серверу и адреса указанного в бд для пункта меню, при этом допускается совпадение подстроки, а не строгое совпадение строк. По функции strpos ищется позиция первого вхождения одной строки в другую:


if (trim($item->admin_menu_link))
         {
            // handling for active sub menu item
            $active = 0;
            if (strpos( @$_SERVER['QUERY_STRING'], $item->admin_menu_link ) !== false ) {
               $active = 1;
            }

            $key = $componentOption.'.'.$item->name;
            $subMenuItem[0]   = $lang->hasKey($key)? JText::_($key) : $item->name;
            $subMenuItem[1]   = 'index.php?'. $item->admin_menu_link;
            $subMenuItem[2]   = $active;

            $subMenuList[] = $subMenuItem;
         }
*

Fedor Vlasenko

  • Живу я здесь
  • 3821
  • 720 / 7
  • Все начинается с Value
*

bzz

  • Новичок
  • 4
  • 0 / 0
Re: class ='active'
« Ответ #3 : 05.04.2013, 13:25:23 »
 ^-^, точно, так гораздо быстрее
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Fatal error: Class 'JModelList'

Автор BogdanAMG

Ответов: 6
Просмотров: 698
Последний ответ 22.04.2016, 17:50:34
от BogdanAMG
Как удалить долбанный span class="article_separator

Автор amixxqwerty

Ответов: 13
Просмотров: 5328
Последний ответ 25.05.2015, 02:05:07
от beliyadm
Fatal error: Class 'JDocument' not found

Автор gabiboi

Ответов: 1
Просмотров: 902
Последний ответ 22.05.2015, 12:46:50
от gabiboi
Fatal error: Class 'JTableMenu' not found in /home/mixanasty/domains//public_html/admin

Автор webch

Ответов: 5
Просмотров: 2606
Последний ответ 11.05.2015, 13:25:05
от HellRabbid
500 - Unable to load renderer class

Автор theo_

Ответов: 4
Просмотров: 6577
Последний ответ 08.01.2015, 22:59:09
от s.elena133