Hauptnavi 4.4 in zwei Module

Gesperrt
4423
Beiträge: 133
Registriert: Mi 3. Sep 2003, 10:46
Kontaktdaten:

Hauptnavi 4.4 in zwei Module

Beitrag von 4423 » Do 12. Feb 2004, 17:48

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
-------------------------------------------------------

http://www.pinger-eden.de

4423
Beiträge: 133
Registriert: Mi 3. Sep 2003, 10:46
Kontaktdaten:

Beitrag von 4423 » Do 12. Feb 2004, 20:50

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 :D

Darauf erstmal ein lecker Hefeweizen.

PROUST!!

jens
-------------------------------------------------------

http://www.pinger-eden.de

Gesperrt