DHTML-Navi auf Adobe Spry Basis

yui
Beiträge: 140
Registriert: Di 17. Jun 2003, 17:55
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von yui » Sa 9. Jan 2010, 18:00

Hallo,

ich finde, dieses Modul ist eine wunderbare Grundlage für DHTML-Navigationen, vielen Dank dafür. :)

Ich baue die Navigation von http://www.opera.com/ nach und bin auch soweit fertig. Nun möchte ich noch gerne, das die ausgewählte Hauptkategorie, dort Startseite, mit einer class="aktiv" versehen wird. Da meine PHP-Kenntnisse bescheiden sind habe ich keine Vorstellung davon, ob und wie das machbar ist. Weiss jemand von Euch Rat?

Hier ist noch einmal die Ausgabe:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     DHTML Navi auf Spry1.6.1.-Basis
* Author(s)   :     Ralf Fleischer
* WWW-Adress  :     http://www.xtended-cooperation.de
* Mail        :     info@xtended-cooperation.de
* Created     :     12-05-2008
* Modified    :     21-05-2008, Ralf Fleischer
* ************************************************/

// include Contenido_FrontendNavigation class
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');


$hauptkategorie = getEffectiveSetting('navigation', 'idcat-dhtml', 1);
$MaxLevel = getEffectiveSetting('navigation', 'idcat-dhtml-maxlevel', 10);

//$hauptkategorie = "CMS_VALUE[0]";

$navitems = array();

function nav_feld ($cat,$Level) {
global $client, $lang, $cfg, $idcat;

        if (!is_object($db)) {
            $db = new DB_Contenido;
        }
        $sql = "SELECT
                     A.idcat,
                     A.level,
                     B.parentid,
                     C.name
                   FROM
                     ".$cfg["tab"]["cat_tree"]." AS A,
                     ".$cfg["tab"]["cat"]." AS B,
                     ".$cfg["tab"]["cat_lang"]." AS C
                   WHERE
                     A.idcat     = B.idcat   AND
                     B.idcat     = C.idcat   AND
                     B.idclient  = '$client' AND
                     C.idlang    = '$lang'   AND
                     C.visible   = '1'       AND
                     A.level     <=  $Level  AND             
                     B.parentid  = '$cat'
                  ORDER BY
                     A.idtree";

         $db->query($sql);
         while ( $db->next_record() ) {
            
            $aktiv = "";
            $sub_feld = nav_feld($db->f("idcat"),$Level);
            if ($db->f("idcat") == $idcat) $aktiv = "active";
            elseif ($sub_feld["activepath"]) $aktiv = "activepath";
            $nav_feld[] = array("idcat"      => $db->f("idcat"),
                                "name"       => $db->f("name"),
                                "active"     => $aktiv,
                                "sub"        => $sub_feld);
            if ($aktiv != "") $activepath = $aktiv;
         }
         $rv = array("feld"          => $nav_feld,
                     "activepath"    => $activepath);
         return $rv;
}

     function liste ($array, $indent = "  ", $subcount = 0) {
            global $last,$first,$Level,$LevelMax;
            if (is_array($array["feld"])) {
                if ($first) {
                    echo $indent . "<ul class=\"menu\">\n";
                    $first = 0;
                }
                else echo $indent ."<ul class=\"sub\">\n";
                foreach ($array["feld"] as $menupunkt) {
                    if($subcount == 0) {
                        echo $indent . $indent . "<li class=\"level1-li\">\n";
                    } elseif($subcount == 1) {
                        echo $indent . $indent . "<li class=\"alone\">\n";
                    } else {
                        if($array["feld"][0] == $menupunkt) {
                            echo $indent . $indent . "<li class=\"first\">\n";
                        } elseif($array["feld"][count($array["feld"]) - 1] == $menupunkt) {
                            echo $indent . $indent . "<li class=\"last\">\n";
                        } else {
                            echo $indent . $indent . "<li class=\"middle\">\n";
                        }
                    }
                    if (is_array($menupunkt["sub"]["feld"])) {
                        echo $indent . $indent . $indent . "<a class=\"level1-a\" href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\">" . $menupunkt["name"] . "</a>\n";
                        echo $indent . $indent . $indent . "\n";
                        liste($menupunkt["sub"], $indent."    ", count($menupunkt["sub"]["feld"]));
                    }
                    else echo $indent . $indent . $indent . "<a href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\">" . $menupunkt["name"] . "</a>\n";
                    echo $indent . $indent . "</li>\n";
                }
                    echo $indent . "</ul>\n";
                if($subcount != 0) {
                    echo $indent . "\n";
                }
            }
        }

        /* Create Navigation Array */

        $navitems = nav_feld($hauptkategorie,$MaxLevel);
        $first = 1;
        $last = (count($navitems["feld"]))-1;
        echo "<div id=\"nav\">\n";
        liste($navitems);
        echo "</div>\n";
        ?>
Danke und schöne GRüsse
yui
Ich weiß, dass ich nichts weiß. Sokrates

iAlex
Beiträge: 51
Registriert: Sa 2. Okt 2004, 17:07
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von iAlex » Di 19. Jan 2010, 11:50

Ich wollte einfach nur mal DANKE sagen für das Modul! :D

Nachdem ich zig Sachen ausprobiert habe und 4 Std. in den Sand gesetzt habe, sieht die Navi jetzt so aus, wie ich es wollte (auch ohne SpryEffekte).

Nochmal: Ein herzliches Dankeschön!

EDIT sagt:
Ist es eigentlich auch möglich, die Unterkategorien erst beim Anklicken der Hauptkategorie anzeigen zu lassen?
Wie schon gesagt, benutze ich die SpryEffekte nicht.

LG
Alex

sherman
Beiträge: 40
Registriert: Mi 29. Nov 2006, 00:44
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von sherman » Mi 20. Jan 2010, 02:14

yodatortenboxer hat geschrieben:Hallo,
Wo mache ich bitte nun die Extraangaben zu wmode="transparent"?
Da seh ich hier momentan nur zwei Möglichkeiten:
1. Ein neues eigenes Modul mit deinen Wünschen umsetzen.
2. Das vorhandene Modul nutzen und dementsprechend anpassen.
Ich hab jetzt mal das SWF modul von idea-tec im output um <param name="wmode" value="transparent" /> ergaenzt, und jetzt funktioniert das ganze auch im IE.

Code: Alles auswählen

<?php
/**************************************************
* SWF mit relativen Pfaden (XML…) abspielen
*
* Author      :     Karsten Klopmann
* Copyright   :     idea-tec GmbH
* Created     :     07-03-2009
* Modified    :     06-10-2009 by MrCello
***************************************************/

$filmBreite= "CMS_VALUE[0]";
if (trim($filmBreite)<'1') { $filmBreite = 400; }
$filmHoehe= "CMS_VALUE[1]";
if (trim($filmHoehe)<'1') { $filmBreite = 250; }
$filmName= "CMS_VALUE[2]";
$filmName = str_replace(".swf","",trim($filmName));
$filmPath= "CMS_VALUE[3]";
if (trim($filmPath)=='') {
    $sPath= $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "swf/";
} else {
    $sPath= $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . trim($filmPath);
}
$filmDatei = $sPath.trim($filmName).".swf";
if (file_exists($filmDatei)) {
?>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="<?php echo $filmBreite; ?>" height="<?php echo $filmHoehe; ?>" id="<?php echo $filmName; ?>">
    <param name="base" value="." />
    <param name="quality" value="high" />
    <param name="movie" value="upload/<?php echo $filmPath; ?>/<?php echo $filmName; ?>.swf" />
    <param name="quality" value="high" />
<param name="wmode" value="transparent" />
    <param name="bgcolor" value="#fff" />
    <param name="allowFullScreen" value="true" />
    <embed src="upload/<?php echo $filmPath; ?>/<?php echo $filmName; ?>.swf" wmode="transparent" quality="high" bgcolor="#fff" width="<?php echo $filmBreite; ?>" height="<?php echo $filmHoehe; ?>" name="<?php echo $filmName; ?>" base="." allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
    </object>
<?php } else {} ?>

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von idea-tec » Mi 20. Jan 2010, 13:40

Danke ... das war seinerzeit mal schnell runtergenudelt und erhebt keinen anspruch auf fehlerfreiheit oder vollständigkeit ;-)
allerdings ist mir nicht ganz klar, was es in iesem forenbeitrag zu suchen hat, war das nicht in einem anderen?
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von marphin » Fr 5. Mär 2010, 12:32

Hallo, funzt super bei mir. Aber wie und wo kann ich in der css festlegen, dass der Navigationspunkt der gerade offenen Seite andersfarbig dargestellt wird z.B. so wie bei hover?

Gruß, Martin

thomasb
Beiträge: 8
Registriert: Do 11. Mär 2010, 14:34
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von thomasb » Mi 5. Mai 2010, 17:04

Geniales Modul.
Ist es auch möglich, dass die Untermenüs der Aktiven Kategorie schon angezeigt werden und nicht erst bei MouseOver?

thomasb
Beiträge: 8
Registriert: Do 11. Mär 2010, 14:34
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von thomasb » Mi 5. Mai 2010, 18:12

Lösung gefunden:
css um folgenden Code ergänzen

Code: Alles auswählen

ul.MenuBarVertical li.activepath ul
{
	left: 0;
	visibility:visible;
	z-index:1010;
	background:none;
}

mikesteiner99
Beiträge: 92
Registriert: Mi 12. Aug 2009, 11:01
Wohnort: Au, Zürich
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von mikesteiner99 » Fr 3. Dez 2010, 18:19

Super Modul!!! Weiss jemand, wie ich es hinkriege, dass der Hintergrund des aktiven Navigationspunktes die entsprechende Farbe beibehält?

Mirco NAJU
Beiträge: 77
Registriert: Sa 30. Mai 2009, 09:11
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von Mirco NAJU » Mo 17. Jan 2011, 19:43

Irgendwo bin ich jetzt blind oder nicht so ganz auf der höhe des codes.

http://www.nabu-darmstadt.de/cms/front_ ... p?idart=50 <-- der regenbogen oben soll als feste grafik den hintergrund der oberen liste darstelllen.
Alles was ich versucht habe klappt nit so ganz.

Geht das generell nicht, oder hab ich einen katastrophalen denkfehler?

mahu76
Beiträge: 41
Registriert: Mo 6. Jul 2009, 15:29
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis navigation springt im ie

Beitrag von mahu76 » Sa 12. Feb 2011, 12:29

hallo zusammen,

ich benutze auch das xtcSpryDHTMLNavi modul.
funktioniert auch alles besten im ie7, ie8 und firefox!

nur im ie6 habe ich noch kleine probleme!
die navigation springt hin und her wenn man mit der maus drüberfährt.
meine seite ist 950px breit und im css SpryMenuBarHorizontal.css habe ich bei width: auto; eingegeben.
habe auch schon beim ersten width 950px fest reingemacht. hat aber leider auch nix geholfen :-(

hier gehts zur seite
http://www.oberahr.de/cms/front_content.php

hat jemand ne idee warum die navi im ie6 springt/ruckelt ?? und was ich ändern muß das es funktioniert??

vg mahu76
Dateianhänge
navi.jpg
bei mausover verspringt die navi! :-(
(34.51 KiB) 454-mal heruntergeladen

Fips
Beiträge: 105
Registriert: Fr 20. Feb 2009, 09:55
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von Fips » Di 15. Feb 2011, 11:11

Hallo mahu76,
wir haben das Problem so gelöst, dass wir in jeder Hauptrubrik eine feste Breite im css definiert haben. Auf Grundlage der idcat kannst du auch per css definieren, ob die Untermenüs sich nach rechts oder links öffnen.

Fips

mahu76
Beiträge: 41
Registriert: Mo 6. Jul 2009, 15:29
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von mahu76 » Di 15. Feb 2011, 11:37

Fips hat geschrieben:Hallo mahu76,
wir haben das Problem so gelöst, dass wir in jeder Hauptrubrik eine feste Breite im css definiert haben. Auf Grundlage der idcat kannst du auch per css definieren, ob die Untermenüs sich nach rechts oder links öffnen.

Fips

hallo fips,

danke für deine info!

noch zur info es gibt keine untermenüs! nur eine navi zeile.
so hatte ich es auch schon, habe die breite durch anzahl von menüpunkten geteilt und diesen wert genommen....aber da die einzelenen wörter mal lang und mal kurz sind dann passts nicht und manchmal überlappts.

VG marco

20082009
Beiträge: 116
Registriert: So 5. Okt 2008, 09:58
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von 20082009 » Mo 28. Feb 2011, 09:59

Hallo,
ich benutze diese Modul sehr gerne. Funktioniert alles bestens.
Jetzt habe ich ein kleines Problem:
Da mein Header auf der Seite ziemlich hoch ist, und darunter die Navigation liegt, sieht der User nach anklicken der Navigation nicht, das sich was verändert hat auf der Seite, da eben der Header und die Navigation recht hoch sind. Hier müsste der User natürlich nach unten scrollen. Mein Gedanke: Kann ich im Modul beim klick auf den Menüpunkt einen Link zu einem festen ANKERPUNKT eintragen. Ich könnte dann diesen Ankerpunkt in den Artikel setzen und somit würde die Seite automatisch schon gescrollt.


Beste Grüße

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis

Beitrag von yodatortenboxer » Do 3. Mär 2011, 13:35

Hallo,
Mein Gedanke: Kann ich im Modul beim klick auf den Menüpunkt einen Link zu einem festen ANKERPUNKT eintragen.
Das hat eher was mit der Contenido-Grundlagenprogrammierung, als mit dem Modul zu tun. Der Ankername muss ja irgendwo erst einmal bei den Links eingetragen werden, damit der Link den Anker mit aufruft.
Die Links der Navigation legt man ja unter dem Punkt Kategorie im Backend an und diese werden dann in der Datenbank gespeichert.
Hier müsste man nun auch die Ankernamen zusätzlich hinterlegen, was soweit ich weis, von Contenido nicht gemacht wird.
Das Modul selbst liest nur die Daten aus der Datenbank aus und setzt diese in der DHTML-Version vom Aussehen her um.

Wenn es sich nur um einen Link handelt, könnte das Modul oder auch ein anderes Navigationmodul ein wenig anpassen.
Der Link müsste ja dann theoretisch so aussehen: <a href="seite.html#Ankername">Link</a>

Man könnte nun in einem Navigationsmodul, da die Namen und Links in einer Programmierschleife ausgelesen werden, mit einer Abfrage der gewünschten idcat ein #Ankername an den Link einfügen.

Gruß yodatortenboxer
Schöne Grüße von Usedom
Ralf

mahu76
Beiträge: 41
Registriert: Mo 6. Jul 2009, 15:29
Kontaktdaten:

Re: DHTML-Navi auf Adobe Spry Basis navigation springt im ie

Beitrag von mahu76 » Do 3. Mär 2011, 20:56

hat hierzu keiner ne lösung :-(

mahu76 hat geschrieben:hallo zusammen,

ich benutze auch das xtcSpryDHTMLNavi modul.
funktioniert auch alles besten im ie7, ie8 und firefox!

nur im ie6 habe ich noch kleine probleme!
die navigation springt hin und her wenn man mit der maus drüberfährt.
meine seite ist 950px breit und im css SpryMenuBarHorizontal.css habe ich bei width: auto; eingegeben.
habe auch schon beim ersten width 950px fest reingemacht. hat aber leider auch nix geholfen :-(

hier gehts zur seite
http://www.oberahr.de/cms/front_content.php

hat jemand ne idee warum die navi im ie6 springt/ruckelt ?? und was ich ändern muß das es funktioniert??

vg mahu76

Gesperrt