Seite 1 von 1

Problem mit den Hauptpunkten bei der vpNavigation

Verfasst: Fr 12. Okt 2007, 10:25
von timgroth
Hallo Community!

Ich versuche gerade das Modul vpNavigation von Ingo van Peeren
anzupassen, leider komme ich an einer Stelle jedoch nicht weiter.

Ich habe es geschaft, dass die Hauptkategorien schon korrekt ausgegeben werden und wenn sich dort unter auch noch Kategorien befinden, werden diese auch schon korrekt dort unter ausgegeben.
Es gibt allerdings auch Hauptkategorien, die keine Unterkategorien besitzen. Diese werden dann leider genauso formatiert ausgegeben wie die Unterkategorien, da dass Script nur prüft, ob es sich um eine Kategorie mit Unterkategorien handelt.

Bild


Das ganze Konstrukt sollte nachher so aussehen:

Code: Alles auswählen

<dl>
 <dt id="patienteninformationen"><a href="#" class="hp">Patienteninformationen</a></dt>
 <dd>
  <ul>
   <li><a href="#">Aufbau des Hüftgelenks</a></li>
   <li><a href="#">Erkrankung des Hüftgelenks</a></li>
   <li><a href="#">Das künstliche Hüftgelenk</a></li>
   <li><a href="#">System der Femurkopfschale</a></li>
   <li><a href="#">Patienten für Implantat</a></li>
   <li><a href="#">Vorbereitung zur Operation</a></li>
   <li><a href="#">Ablauf der Operation</a></li>
   <li><a href="#">Zurück Zuhause</a></li>
   <li><a href="#">Der Endoprothesenpass</a></li>
  </ul>
 </dd>
 <dt id="patientenstimmen"><a href="#" class="hp">Patientenstimmen</a></dt>
 <dt id="krankenhaeuser"><a href="#" class="hp">Krankenhäuser</a></dt>
 <dt id="hersteller"><a href="#" class="hp">Hersteller</a></dt>
 <dt id="infomaterial"><a href="#" class="hp">Infomaterial</a></dt>
 <dt id="kontakt"><a href="#" class="hp">Kontakt</a></dt>
 <dt id="impressum"><a href="#" class="hp">Impressum</a></dt>
</dl>

Und so sieht es leider aktuell aus :cry:

Code: Alles auswählen

<dl>
 <dt id="patienteninformationen"><a href="front_content.php?idcat=2" class="hp">Patienteninformationen</a></dt>
  <dd>
   <ul>
    <li><a href="front_content.php?idcat=9">Aufbau des Hüftgelenks</a></li>
	<li><a href="front_content.php?idcat=10">Erkrankung des Hüftgelenks</a></li>
	<li><a href="front_content.php?idcat=11">Das künstliche Hüftgelenk</a></li>
	<li><a href="front_content.php?idcat=12">System der Femurkopfschale Onlay</a></li>
	<li><a href="front_content.php?idcat=13">Patienten für ein Onlay Implantat</a></li>
	<li><a href="front_content.php?idcat=14">Vorbereitung zur Operation</a></li>
	<li><a href="front_content.php?idcat=15">Ablauf der Operation</a></li>
	<li><a href="front_content.php?idcat=16">Zurück Zuhause</a></li>
	<li><a href="front_content.php?idcat=17">Der Endoprothesenpass</a></li>
   </ul>
  </dd>
  <li><a href="front_content.php?idcat=3">Patientenstimmen</a></li>
  <dt id="krankenhäuser"><a href="front_content.php?idcat=4" class="hp">Krankenhäuser</a></dt>
   <dd>
    <ul>
	 <li><a href="front_content.php?idcat=18">Kiel</a></li>
     <li><a href="front_content.php?idcat=19">Münster</a></li>
	 <li><a href="front_content.php?idcat=20">Berlin</a></li>
	</ul>
   </dd>
   <li><a href="front_content.php?idcat=5">Herstellerinformationen</a></li>
   <li><a href="front_content.php?idcat=6">Informationsmaterial</a></li>
   <li><a href="front_content.php?idcat=7">Kontakt</a></li>
   <li><a href="front_content.php?idcat=8">Impressum</a></li>


Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :	    vpNavigation 0.2
* Author      :     Ingo van Peeren
* Copyright   :     Ingo van Peeren (ingo@van-peeren.de)
* Created     :     30-03-2005
* Modified    :     16-07-2005
************************************************/

$hauptkategorie = "CMS_VALUE[0]";

$navitems = array();

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

        if (!is_object($db)) {
            $db = new DB_Contenido;
        } 
        $sql = "SELECT
                     A.idcat,
                     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
                     B.parentid  = '$cat'
                  ORDER BY
                     A.idtree";

         $db->query($sql);

         while ( $db->next_record() ) {
            $aktiv = "";
            $sub_feld = nav_feld($db->f("idcat"));
            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 = "  ")
{
global $first;

if(is_array($array["feld"]))
	{
	if($first)
		{
		echo "<dl>";
		$first = 0;
		}
	}

foreach($array["feld"] as $menupunkt)
	{
	if(is_array($menupunkt["sub"]["feld"]))
		{
		echo "<dt id=\"" . strtolower($menupunkt["name"]) . "\"><a href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\" class=\"hp\">" . $menupunkt["name"] . "</a></dt>";
		echo "<dd><ul>";
		liste($menupunkt["sub"], $indent."    ");
		echo "</ul></dd>";
		}
	else
		{
		echo "<li><a href=\"front_content.php?idcat=" . $menupunkt["idcat"] . "\">" . $menupunkt["name"] . "</a></li>";
		}
	}


/* Create Navigation Array */
$navitems = nav_feld($hauptkategorie); 

$first = 1;

liste($navitems);

?>
Schon einmal herzlichen Dank für Eure Hilfe!

Beste Grüße,
Tim

Verfasst: Fr 12. Okt 2007, 14:30
von wosch
Warum nimmst du dafür die vpNavigation?

Diese Navi ist für Menüs mit Ausklapp-Menüs (zusammen mit einem Java-Script)

Das was du willst macht die normale Navi die beim Beispielmandanten dabei ist auch, und das ohne frimeln im Modul, rein über Modul-Templates bzw. CSS.

Standard-Navi bis Contenido-Version 4.6.15 - über Tabellen mit Modul-Templates (und ggf. CSS)
Standard-Navi ab Contenido-Version 4.6.22 - als geordnete Liste, gesteuert rein über CSS

PS: Wenn du schon die vpNavigation nehmen willst, nimm die Original-Version, bau den Java-Script-Teil nicht ein, schau dir die dort geposteten CSS an, schmeiß das von Java aus dem CSS raus, und paß im CSS die Ausgabe an.
Dann hast du das gleiche Ergebnis als ob du im Modul rummachst.

Verfasst: Mo 15. Okt 2007, 11:15
von timgroth
Danke schon einmal für ie Antwort.

Allerdings läuft bei meinem Menü ebenfalls ein Javascript dahinter,
welches nur die Hauptpunkte offen lässt und beim Anklicken erst die
Unterpunkte öffnet. Daher brauche ich exakt diesen Aufbau...

Sonnige Grüße

Verfasst: Mo 15. Okt 2007, 11:35
von Dodger77
Die Abfrage:

Code: Alles auswählen

   if(is_array($menupunkt["sub"]["feld"])) 
ist für deine Wunschausgabe nicht zielführend, da du damit jeden Menüpunkt bestimmst, der Unterkategorien hat. Wahrscheinlich wolltest du jedoch nur die der 1. Ebene bestimmen. Das müsstest du dann noch anpassen.

Dein gewünschtes Aussehen hättest du allerdings auch problemlos mit den Originalmodul hinbekommen können.

Verfasst: Mo 15. Okt 2007, 14:39
von timgroth
Hallo Ingo,

leider lässt es sich in der Form, wie ich es benötige, mit dem Original-Navigationsmodul nicht bewerkstelligen, da hier die Punkte in der 2. Ebene ja erst angezeigt werden, sobald ich einen Menüpunkt der 1. Ebene anklicke.

Bei der Navigation, wie ich sie einsetzen möchte, müssen die Punkte der 2. Ebene auch schon angezeigt werden - denn diese werden via eines Javascripts einfach ausgeblendet und dann beim Klick auf einen der Menüpunkte der 1. Ebene angezeigt.

Zur Verdeutlichtung noch einmal das auf jQuery basierende Javascript:

Code: Alles auswählen

$(document).ready(function()
	{
	$("dd").hide();
	$("dt a").click(function()
		{
		$("dt a").removeClass("aktiv");
		$("dd:visible").slideUp("fast");
		$(this).parent().next().slideDown();
		$(this).addClass("aktiv");
		});
	});

Mit deinem Script bin ich der Sache ja schon recht nahe.
Es wäre nett, wenn Du mir vielleich zeigen könntest, wie ich die gewünschte Ausgabe hinbekommen kann.

Tausend Dank und sonnige Grüße!

Verfasst: Mo 15. Okt 2007, 14:41
von Dodger77
Mit Originalmodul meinte ich vpNavigation, halt ohne deine Änderungen. Mit jquery lässt sich dann auch recht einfach nur auf die Menüpunkte erster Ebene zugreifen, wenn man das will. Ansatz dazu hier:

http://docs.jquery.com/Selectors/child#parentchild