К сожалению, кроме как написать в шаблоне компонента или лучше даже в резалт_модифайере меню условие определения по гет-параметрам, и переопределить, какой активен.
Просмотрел класс меню, он такие гет-параметры как у вас в принципе отбрасывает, если нет значения.
А проверка тот ли это пункт идет циклом. Если хоть один из пунктов оказался селектед, то цикл обрывается.
Код |
---|
foreach($all_links as $tested_link)
{
if($tested_link == '')
continue;
$SELECTED = self::IsItemSelected($tested_link, $cur_page, $cur_page_no_index);
if($SELECTED)
break;
}
|
в методе, IsItemSelected(), условием чтобы пункт оказался SELECTED, является его равенство на данные функций,
Код |
---|
$cur_page = $APPLICATION->GetCurPage(true);
$cur_page_no_index = $APPLICATION->GetCurPage(false); |
вот таким образом:
Код |
---|
if(($pos = strpos($tested_link, "?")) !== false)
{
if(($s = substr($tested_link, 0, $pos)) == $cur_page || $s == $cur_page_no_index)
{ код отдающий селектед или нет
|
То есть сначала, есть гет-параметры или нет, проверяется, а потом, сравнивается, по данным из функции GetCurPage(). А далее, параметры распарсиваются, и единственный способ не оказаться selected это
Код |
---|
$globvarvalue = (isset($GLOBALS[$varname])? $GLOBALS[$varname] : "");
if($globvarvalue != $varvalue)
{
$bOK = false;
break;
}
|
Где $varname = это имя гет-переменной. То есть сличения не происходит по таким параметрам. И тот пункт, который первым попадает в цикл с одинаковым адресом, различаясь лишь гет-параметрами, тот и становится SELECTED.
Сам не знаю, зачем так заморочился, но стало интересно просто.