MouseOver Navigation

Gesperrt
macsaver_hd
Beiträge: 6
Registriert: Di 5. Aug 2003, 11:47
Kontaktdaten:

MouseOver Navigation

Beitrag von macsaver_hd »

Hallo Aussenwelt,

weiss gar nicht ob ich im richtigen Forumszweig bin - folgendes Problem: Habe eine Zusatznavigation, die bei Auswahl eines Links in der Hauptnavigation erscheint (funktioniert) Diese Navigation wird bei Mouseover andersfarbig hinterlegt (hab ich über ein Array und idcat in einem Modul hingewurschtelt). Nun meine Frage: Setze ich überhaupt richtig im Modul an oder muss ich an einer anderen Stelle ansetzen, da bei Click auf den Link der geänderte Zellhintergrund erhalten bleiben soll!

Vielen Dank im Voraus

macsaver

Code der Ausgabe des Moduls:
<?php

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

$catStart = "CMS_VALUE[0]";

if ($catStart != "") {
$catIds = conDeeperCategoriesArray($catStart);

echo '<table cellpadding="0" cellspacing="0" border="0">';
// echo '<tr><img src="images/spacer.gif" width="10" height="10"></tr>';

/* Create Frame Color Array */
$color = array(1 => "'#DEC185'", 2 => "'#A9C8E7'", 3 => "'#C49F78'", 4 => "'#9BA2BC'", 5 => "'#B48782'", 6 => "'#DEC185'", 7 => "'#A9C8E7'", 8 => "'#C49F78'", 9 => "'#9BA2BC'", 10 => "'#B48782'");

$bg_color = "bgColor='#516476'";

/* Create IDcat Color Array
foreach($catIds as $key=>$val) {
$cell_color=
}
*/

if ( is_array($catIds) ) {

foreach($catIds as $key=>$val) {
// Ersten Eintrag ueberspringen, weil das der Menupunkt selbst ist
// und nicht angezeigt werden soll.
if ($key != 0) {

$sql = "SELECT CAT.idcat AS idcat, name FROM ".
$cfg["tab"]["cat"]." AS CAT, ".
$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'";

$db->query($sql);

$cell_color = $color[$key];

while ( $db->next_record() ) {
echo '<td class="hilfsnavi" height="30" style="padding-left:20px;" onMouseOver="bgColor='.$cell_color.'" onMouseOut='.$bg_color.'>
<a href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>
<tr><td height="1" style="padding-left:0px; padding-right:0px;"><img src="images/linie_waag_206.gif" width="206" height="1"></td></tr></td>';
} // end while
} // if
} // end foreach
} // end if (is_array)

echo '</table>';

}
?>[/b]
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

naja, wenn du klickst, dann wird die seite neu geladen. du kannst ja einfach im aufbau der navi prüfen, ob die aktuelle idcat mit der aus der DB übereinstimmt, und dann einfach den hintergrund anders setzen.

dein JS wird ja bei jedem seitenaufruf neu initialisiert, ergo auch keine markierung mehr vorhanden,
macsaver_hd
Beiträge: 6
Registriert: Di 5. Aug 2003, 11:47
Kontaktdaten:

Beitrag von macsaver_hd »

So weit umgesetzt und funktioniert - aber jetzt ergibt sich ein neues Problem das nicht über idcat gelöst werden kann.
Habe bei manchen Punkten im Hauptmenü ein Zusatmenü - kein Submenu - nun soll die farbige Hinterlegung im Hauptmenu erhalten bleiben. Da sich meine idcat ändert, wenn ich den nächsten Link anklicke geht somit auch wieder meine Zellhinterlegung flöten :-(

Any Idea?
PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay »

Setze folgendes am Anfang deines Moduls ein:

Code: Alles auswählen

// Liest von der aktuellen Kategorie die übergeordneten Ebenen ein
$ebene=array();
$cat=$idcat;
do {
$query='SELECT parentid,idcat FROM '.$cfg["tab"]["cat"].' WHERE idcat='.$cat.';';
$db->query($query);
$db->next_record();
$cat=$db->f('parentid');
$ebene[]=(int)$db->f('idcat');
} while ($cat!=0);
$ebene=array_reverse($ebene);
// END
Anschliessend kannst du mit $ebene auf die Idcat bestimmter Navigationsebenen zugreifen, $ebene[0] wäre etwa die Idcat des Baumes der Hauptnavigation (Normalerweise 2), mit $ebene[1] könntest du dann üperprüfen, welche idcat in z.B. der Hautpnavigation aktiviert wird, usw...
Gesperrt