Ich habe eine Lösung, vielleicht nicht sehr elegant, aber es funktioniert:
Output-Modul der Hauptnavi an den entscheidenden Stellen geändert zu:
=====================================================
/* Start Output buffer */
ob_start();
echo '<table cellspacing="0" cellpadding="0" border="0">';
foreach ($navitems as $key => $data) {
/* 1. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navfirst_on.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
echo '</table>';
if (is_array($data['sub'])) {
echo '<div id="Layer1" style="position:absolute; left:406px; top:113px; width:209px; height:67px; z-index:1">
<table width="200" border="1">
<tr>';
foreach ($data['sub'] as $key => $data) {
/* 2. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navsecond_on.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
/* 3. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
} // end foreach
} // end if
} // end foreach
} // end if
echo '</tr></table></div>';
} // end foreach
=====================================================
Und noch die Templates im /cms/ ändern, z.B. nav_second_off.html:
<!-- BEGIN:BLOCK -->
<td>
<a target="{TARGET}" href="{HREF}">{NAME}</td>
<!-- END:BLOCK -->
=====================================================
So kann man die zweite Navigationsebene in einem CSS-Layer weit entfernt von der 1. Ebene plazieren. Mal sehen, ob das auch nach der "Reinzeichnung" so funktioniert, bei einem schnellen Test mit 3 Kategorien in der 2. Ebene hat es jedenfalls geklappt
Darauf erstmal ein lecker Hefeweizen.
PROUST!!
jens