Спасибо большое за ответ.
Я сомневался, что CSS сможет решить мои текущие задачи.
Поэтому я только что закончил писать код, обходящийся без модуля main menu.
У меня интернет-магазин, поэтому мне нужно было избавиться от всякой фигни и сделать умную схему.
3 часа разбирался что куда и в итоге работает как часы. Я ещё не проверял на возможные ошибки. Это всё поправимо. Главное, что есть основа.
А main menu в топку. Этот код вставляю прямо в шаблон, где обычно вылезает main menu )
Если интересно:
<?php
function Art_lern_from_where_this_item($ID_CATEGORY_THIS_PAGE){
// Возвращает - строку ID всех категорий по возрастанию. Разделяются знаком | для дальнешего преобразования в массив.
// Принимает ID текущей категории ($_GET["category_id"]).
global $database;
$sql = 'SELECT * FROM #__vm_category_xref WHERE category_child_id="'.$ID_CATEGORY_THIS_PAGE.'" limit 1';
$database->setQuery( $sql );
if (!$database->query()) {
echo $database->stderr();
return false;
}
if ($database->getNumRows()>0){
$rows = $database->loadObjectList();
foreach ( $rows as $row ) {
//echo "<p>$row->category_parent_id: <span style='color: red;'>$row->category_child_id</span></p>\n";
if ($row->category_parent_id>2){
$row->category_parent_id;
return Art_lern_from_where_this_item($row->category_parent_id)."|".$row->category_child_id;
}
//return $ID_CATEGORY_THIS_PAGE;
}
}
return $ID_CATEGORY_THIS_PAGE;
}
$my_root = Art_lern_from_where_this_item($_GET["category_id"]);
function Art_get_letter_item($id){
// Возвращает Имя категории.
// Принимает Id категории
global $database;
$sql = 'SELECT * FROM #__vm_category WHERE category_id="'.$id.'"';
$database->setQuery( $sql );
$rows = $database->loadObjectList();
foreach ( $rows as $row ) {
return $row->category_name;
}
}
function Art_get_next_item($parent_id, $tree_level, $iterator=0, $page_now="", $my_root, $from_parent=0){
// Главная функция.
// Выводит Дерево. Довольно сложно получилось. Лень писать комментарии. Если нужно потом объясни что да как.
// Принимает ID родителя, с которого начинает работу (в данном случае у меня Главная страница - 0. Далее идёт 2, - это Каталог категории, поэтому я его указал чтобы именно с него начинось меню), второй параметр - это на сколько делать padding-left, третий параметр - Iterator. Используется для выяснения глубины дерева во время рекурсии). $page_now не пригодился, можно убрать), $my_root - сюда приходит результат работы функции Art_lern_from_where_this_item, что выше. $from_parent вроде тоже не пригодился.
global $database;
$new_root = explode ("|",$my_root);
foreach ($new_root as $key=>$value){
$key++;
$root[$key] = $value;
}
$iterator++;
$sql = 'SELECT * FROM #__vm_category_xref WHERE category_parent_id="'.$parent_id.'"';
$database->setQuery( $sql );
if (!$database->query()) {
echo $database->stderr();
return false;
}
if ($database->getNumRows()>0){
$rows = $database->loadObjectList();
foreach ( $rows as $row ) {
if ($iterator==1) {$prefix = "<img src='

' /> "; $font_size = "13px";}
elseif ($iterator==2) {$prefix = "– "; $font_size = "12px";}
elseif ($iterator==3) {$prefix = "· "; $font_size = "11px";}
else {$prefix = ""; $font_size = "10px";}
if ($root[$iterator]==$row->category_child_id){
if ($iterator==1) $parent_style="font-weight: bold;";
elseif ($iterator==2) $parent_style="font-weight: bold;";
}
else $parent_style = "";
if ($iterator==count($root) and $root[$iterator]==$row->category_child_id)
echo "<tr><td style='padding-left: ".$tree_level."px;'>$prefix
<b>".Art_get_letter_item($row->category_child_id)."</b>
</td></tr>";
else
echo "<tr><td style='padding-left: ".$tree_level."px;'>$prefix
<a style='$parent_style font-size: $font_size' href='
http://yoursite.ru/index.php?option=com_virtuemart&page=shop.browse&category_id=$row->category_child_id&Itemid=53'>".Art_get_letter_item($row->category_child_id)."</a>
</td></tr>";
if ($root[$iterator]==$row->category_child_id){
Art_get_next_item($row->category_child_id, $tree_level+10, $iterator, $page_now, $my_root, 1);
}
}
}
else $tree_level=0;
}
?>
<table border="0" width="100%" cellpadding="5">
<?Art_get_next_item(2, 0, 0, $_GET["catrgory_id"], $my_root);?>
</table>
Я не супер программист, так что код наверно корявый. Если что задавайте вопросы.
И конечно в довершении скрин. Так выглядит у меня


[вложение удалено Администратором]