Joomla 1.5.12 Всего один материал, разбираюсь с подменю: создал меню "Menu" и, скажем, подменю "SubMenu" с родительским элементом "Menu" и типом "Стандартный шаблон материала". все прекрасно, меню раскрывается. Хочу добится следующего: при клике на меню - переход на начало материала, при клике на подменю - переход на указанный якорь в материале. где можно указать якорь? Ссылку менять не дает. ссылка - вида "index.php?option=com_content&view=article&id=1", если в адресной строке добавляю #якорь - работает... попробовал прямо в БД добавить якорь к ссылке - так при клике добавляется еще и "&Itemid=номер_меню", так что даже такой извращенный способ не помог....
Либо ковырять mod_mainmenu, либо фигачить яваскрипт, который бы делал скролл до нужной отметки. Вариантов нет.
вот те на.... никак не ожидал такого поворота, думал, что-то пропустил... тогда попробую убрать из mainmenu добавление к ссыли окончания "&Itemid=..."
ммм... костыль конечно... но, т.к. я не пишу на php, может кто и красивше сделает. /www/modules/mod_mainmenu/helper.php: Код (PHP): $tmp->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$tmp->id : $tmp->link.'&Itemid='.$tmp->id; заменил на: Код (PHP): if ($router->getMode() == JROUTER_MODE_SEF) { $tmp->url ='index.php?Itemid='.$tmp->id; } else { if (substr_count($tmp->link,"#")==0) { $tmp->url =$tmp->link.'&Itemid='.$tmp->id; } else { $tmp->url =$tmp->link; } } строку разбил, чтобы мозг не вскипел, не обессудьте. добавил якоря напрямую в базе (prefix_menu->link), но можно и сменить тип меню на внешнюю ссылку, и добавить непосредственно в панели управления. P.S. Если кто-то все же знает человеческий способ, прошу отозваться.
блин, чет не меняется последний пост... изменил еще раз, вот вся конструкция: Код (PHP): switch ($tmp->type) { case 'separator' : return '<span class="separator">'.$image.$tmp->name.'</span>'; break; case 'url' : if ((strpos($tmp->link, 'index.php?') === 0) && (strpos($tmp->link, 'Itemid=') === false)) { if (substr_count($tmp->link,"#")==0) { $tmp->url = $tmp->link.'&Itemid='.$tmp->id; } else { $tmp->url = $tmp->link; } } else { $tmp->url = $tmp->link; } break; default : $router = JSite::getRouter(); // $tmp->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$tmp->id : $tmp->link.'&Itemid='.$tmp->id; if ($router->getMode() == JROUTER_MODE_SEF) { $tmp->url ='index.php?Itemid='.$tmp->id; } else { if (substr_count($tmp->link,"#")==0) { $tmp->url =$tmp->link.'&Itemid='.$tmp->id; } else { $tmp->url =$tmp->link; } } break; }