Kann mir jemand helfen, das Original-Hauptnavi-Modul für 4.4 in zwei Module zu zerlegen, so dass die erste und zweite Ebene in zwei verschiedenen HTML-Layern untergebracht werden können.
Die Suchfunktion hat nur einen Ansatz für 4.3. ausgespuckt, die aber auch nicht wirklich zu funktionieren scheint.
Tausend Dank
jens
Hauptnavi 4.4 in zwei Module
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
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