Задание стиля для ячейки таблицы, содержащей активный пункт меню
|
|
|
|
Автор Роман А. Копаев aka ZooY
|
|
17.09.2006 г. |
|
В некоторых ситуациях, при оформлении меню возникает необходимость задания стиля не только для ссылки пункта меню, но и для ячейки таблицы, в которой эта ссылка расположена.
В обычном виде, в общем случае, вертикальное меню выглядит следующим образом: <table cellpadding="0" cellspacing="0" class="moduletable-mainmenu"> <tr> <td> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr align="left"><td><a href="..." class="mainlevel" >Пункт меню</a></td></tr> <tr align="left"><td><a href="..." class="mainlevel" id="active_menu" >Пункт меню</a></td></tr> <tr align="left"><td><a href="..." class="mainlevel" >Пункт меню</a></td></tr> </table> </td> </tr> </table> |
К сожалению, разработчики не придусмотрели возможность задания особого стиля для ячейки таблицы, содержащей активный пункт меню (т.е. для тега TD из строки <tr align="left"><td><a ...). Самостоятельно сделать это можно в файле modules/mod_mainmenu.php. Найдите функцию mosRecurseVIMenu, а в ней строку: | echo "\n".$indents[$n][1]; |
И замените ее на строку: | echo "\n".(in_array($row->id, $open) ? str_replace('<td>', '<td class="active_menubloсk">', $indents[$n][1]) : $indents[$n][1]); |
Это позволит добавить для ячейки, содержащей активный пункт меню, название класса и привести таблицу меню к следующему виду: <table cellpadding="0" cellspacing="0" class="moduletable-mainmenu"> <tr> <td> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr align="left"><td><a href="..." class="mainlevel" >Пункт меню</a></td></tr> <tr align="left"><td class="active_menubloсk"><a href="..." class="mainlevel" id="active_menu" >Пункт меню</a></td></tr> <tr align="left"><td><a href="..." class="mainlevel" >Пункт меню</a></td></tr> </table> </td> </tr> </table> | |