problem mit hauptnavi quellcode 2.ebene

Gesperrt
micha667
Beiträge: 143
Registriert: Di 4. Mai 2004, 11:54
Kontaktdaten:

problem mit hauptnavi quellcode 2.ebene

Beitrag von micha667 »

Folgendes Navi-Problem mit dem Standardmodul:
Ich mache für die 2. Ebene eines Menus immer ein neues <div> auf (siehe code). normalerweise lese ich aus der zeile:
if (is_array($data['sub'])) {
echo '<div id="menuSub">';

Code: Alles auswählen

/* 2. Navigation level */
	    if (is_array($data['sub'])) {
echo '<div id="menuSub">';
	        foreach ($data['sub'] as $key => $data) {
				if (checkCatPermission($data['idcatlang'],$data['public'])) {
		            $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/navsecond_on.html');
					}elseif(is_array($data['sub'])){
				        $tpl->generate('templates/navsecond_open.html');
		            } else {
		                $tpl->generate('templates/navsecond_off.html');
		            }

				    /* 3. Navigation level */
dass der code für das <div> nur geschrieben wird, wenn der entsprechende Menupunkt der 1. Ebene Untermenupunkte hat. Tatsächlich bekomme ich den Code für das <div> aber *immer* in den Quelltext geschrieben. Bei einem #menuSub mit etwas aufwändigerem CSS (Hintergrundbild, Abstände etc.) bekomme ich so immer unschöne Effekte unterhalb eines 1. Menupunktes ohne Submenupunkte. (bei einfachen <div>´s stört es im Quelltext nicht weiter)
Wie bekomme ich es hin, daß der Code nur geschrieben wird, wenn ein Menupunkt auch Untermenupunkte (also eine 2. Ebene) hat.

besten dank vorab
micha
micha667
Beiträge: 143
Registriert: Di 4. Mai 2004, 11:54
Kontaktdaten:

Beitrag von micha667 »

ok, bin selbst draufgekommen.
mein gedanklicher fehler war:

Code: Alles auswählen

if (is_array($data['sub'])) 
heißt nicht, dass `ne 2. ebene vorhanden ist, sondern die abarbeitung sich gerade darin befindet. nach einbau einer abfrage mit count() klappt es dann.

Code: Alles auswählen

/* 2. Navigation level */
	    if (is_array($data['sub'])) 
          {
            if (count($data['sub']) >0 ) { 
            // submenupunkte vorhanden
            echo '<div id="menuSub">'; 
            $submenu = 1;
            }
und unten bei bedarf das <div> wieder schließen...

Code: Alles auswählen

if ($submenu == 1) {echo '</div>';}
	    } // end if

    } // end if
} // end foreach

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo $html;
?>
vielleicht kann es wer brauchen...
Gesperrt