[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Navigation mit eingeblendeter Unternavi - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

Navigation mit eingeblendeter Unternavi

11. Apr 2005, 22:57

bin schon am verzweifeln...
möchte gerne die hauptnavigation mit den entsprechenden unternavigations-links sichtbar darstellen (ohne zuerst auf den hauptnavi-link zu klicken), also in der form:

menupunkt1
- unterpunkt11
- unterpunkt12
- unterpunkt13
menupunkt2
- unterpunkt21
- unterpunkt22
- etc.

dabei beginnt die hauptnavi erst bei cat1 (die oberste ebene beinhaltet sprachen-kategorien).
ich möchte aber auch, dass die im backend offline gestellten navi-links nicht sichtbar angezeigt werden.

der grund dieser navi ist, dass ich über php ein dropdownmenu zusammengebastelt hab. das scriptchen hab ich schon bereits. fehlt mir nur noch diese oben aufgeführte struktur.

diesen code hab ich aus dem forum:
-----------------------------------------------

Code: Alles auswählen

<table cellpadding=0 cellspacing=0 border=0 class=Menu> 
<tr> 
   <td><? 

// USER STATUS FUER PERSOENLICHE NAVI 
$utype_id = 1; 
if ($FORM[USR]) $utype_id = $FORM[USER]->getValue("singlestatus"); 


// PFAD AUSLESEN 
$cat_id = $this->getValue("category_id"); 
$path = explode("-",$this->getValue("path")); 
$showpath = "/ <a href=index.php?article_id=8 class=white>Home</a>"; 
$cat1 = current($path)+0; 
next($path); 
$cat2 = current($path)+0; 
next($path); 
$cat3 = current($path)+0; 


// 2. NAVI 

$NAV2 = ""; 
$cat_id = $cat3; 

@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category"; 
$NAV = $REX[RECAT][$cat_id]; 

for ($i=0;$i<count($NAV);$i++) 
{ 

 $id = current($NAV); 
 $aid = $REX[CAT][$id][article_id]; 
 $name = $REX[CAT][$id][name]; 

 if ($i==0) $NAV2 .= "<table cellpadding=0 cellspacing=0 border=0 id=SubMenu class=SubMenu>"; 

      //<table>  Nochmal Eingerueckt um bessere Uebersicht zu bekommen 



 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article"; 

 $type_id = $REX[ART][$aid][type_id]; 
 if ($aid == 1) $type_id = 1; // HOME PAGE AUSNAHME 
 $CST = true; 
 if ($type_id>$utype_id) $CST = false; 

 if ($cat3==$id and $REX[CAT][$id][status]==1 and $CST) 
 { 
    $NAV2 .= "<tr> 
         <td class=SubAktivIcon>$AktivIcon</td> 
         <td class=SubAktivButton>"."<a href=index.php?article_id=$aid>$name</a></td> 
      </tr>"; 

 }elseif ($REX[CAT][$id][status]==1 and $CST) 
 {     
     if ($name == "") 
     { 
       $NAV2 .= "<tr> 
         <td class=SubInaktivIcon></td> 
         <td class=SubInaktivButtonLeer>&nbsp;</td> 
      </tr>"; 
      
     }else 
     { 
       $NAV2 .= "<tr> 
         <td class=SubInaktivIcon>$InaktivIcon</td> 
         <td class=SubInaktivButton><a href=index.php?article_id=$aid>$name</a></td> 
      </tr>"; 

      } 

 } 
    
 if (($i+1)==count($NAV)) $NAV2 .= "</table>"; 

      //</table>  Nochmal Eingerueckt um bessere Uebersicht zu bekommen 

 next($NAV); 
} 


// 1. NAVI 

$NAV1 = ""; 
$cat_id = 1; 

@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category"; 
$NAV = $REX[RECAT][$cat_id]; 

for ($i=0;$i<count($NAV);$i++) 
{ 

 $id = current($NAV); 
 $aid = $REX[CAT][$id][article_id]; 
 $name = $REX[CAT][$id][name]; 

  
 if ($i==1) $NAV1 .= "<table cellpadding=0 cellspacing=0 border=0 id=MainMenu class=MainMenu>"; 

   //<table>  Nochmal Eingerueckt um bessere Uebersicht zu bekommen 


 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article"; 

 $type_id = $REX[ART][$aid][type_id]; 
 if ($aid == 1) $type_id = 1; // HOME PAGE AUSNAHME 
 $CST = true; 
 if ($type_id>$utype_id) $CST = false; 

 if ($cat3==$id and $REX[CAT][$id][status]==1 and $CST) 
 { 
    $NAV1 .= "<tr> 
      <td class=MainAktivIcon>$AktivIcon</td> 
      <td class=MainAktivButton>"."<a href=index.php?article_id=$aid>$name</a></td> 
   </tr>"; 

   if ($NAV2 != "") $NAV1 .= "<tr> 
      <td class=MainInaktivIcon></td> 
      <td>$NAV2</td> 
   </tr>"; 

 }elseif ($REX[CAT][$id][status]==1 and $CST) 
 { 
     if ($name == "") 
     { 
       $NAV1 .= "<tr> 
      <td></td> 
      <td class=MainInaktivButtonLeer>$NAV2</td> 
   </tr>"; 
      
     }else 
     { 
       $NAV1 .= "<tr> 
      <td class=MainInaktivIcon>$InaktivIcon</td> 
      <td class=MainInaktivButton><a href=index.php?article_id=$aid>$name</a></td> 
   </tr>"; 

      } 

 } 
    
 if (($i+1)==count($NAV)) $NAV1 .= "</table>"; 

   //</table>  Nochmal Eingerueckt um bessere Uebersicht zu bekommen 

 next($NAV); 
} 

echo $NAV1; 

?> 
   </td> 
</tr> 
</table>
---------------------------------------

nur eben, dass diese navi erst beim klick auf den hauptlink die unternavi anzeigt. kann das sichtbarmachen aller unternavi-links realisiert werden?

danke für eure hilfe. gruss
Zuletzt geändert von tom24 am 12. Apr 2005, 22:13, insgesamt 1-mal geändert.

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

12. Apr 2005, 09:46

Hej Tom,

diese Navigation hast du wahrscheinlich aus der Demo. Leider ist diese schlecht kommentiert bzw. ein durchsehen ist sehr schwierig. Vielleicht hilft dir das weiter:

Code: Alles auswählen

<?php
// EXPLODE PATH
$PATH = explode("-",$this->getValue("path"));


// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];



echo 
'<ul class="nav1st">';

/* START 1st level categories */
foreach (OOCategory::getRootCategories() as $lev1):
		
	if ($lev1->isOnline()):
	
	/* 1st level - active link */
	if ($lev1->getId() == $path1) {
		echo 
		'<li class="active">'.$lev1->getName();
	}
	/* 1st level - no active link */
	else {
		echo 
		'<li>'.$lev1->getName();
	}
	
	/* 1st level had categories? -> go on */
	$lev1Size = sizeof($lev1->getChildren());
	
	if($lev1Size != "0"):
		echo 
		'<ul class="nav2nd">';


		/* START 2nd level categories */
		foreach ($lev1->getChildren() as $lev2):
			
			if ($lev2->isOnline()):
	
			/* 2nd level - active link */
			if ($lev2->getId() == $path2) {
				echo 
				'<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
			}
			/* 2nd level - no active link */
			else {
				echo 
				'<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
			}
			
			/* 2nd level had categories? -> go on */
			$lev2Size = sizeof($lev2->getChildren());
						
			if($lev2Size != "0"):
				echo 
				'<ul class="nav3rd">';

				/* START 3rd level categories */
				foreach ($lev2->getChildren() as $lev3):
	
					if ($lev3->isOnline()):
	
					/* 3rd level - active link */
					if ($lev3->getId() == $path3) {
						echo '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
					}
					/* 3rd level - no active link */
					else {
						echo '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
					}
					
					endif;
				endforeach;
				/* END 3rd level categories */

				echo 
				'</ul>';
			endif;
			

			echo 
			'</li>';
			
			endif;
			
		endforeach;
		/* END 2nd level categories */
		
		
		echo '</ul>';
	endif;
	
	echo 
	'</li>';
	
	endif;
endforeach;
/* END 1st level categories */


echo 
'</ul>';
?>
Das basiert auf OOF. Der Nachteil ist, dass hier eine Datenbankabfrage erfolgt.

Wenn du nicht die erste Ebene haben möchtest solltest du diese Zeile

Code: Alles auswählen

	foreach (OOCategory::getRootCategories() as $lev1):
		
	if ($lev1->isOnline()):
in

Code: Alles auswählen

	foreach (OOCategory::getRootCategories() as $lev1):

	if ($lev1->isOnline() AND $lev1->getId() != 1):
ändern.

Viele Grüße Thomas

tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

12. Apr 2005, 22:15

super, danke thomas, hat mir sehr geholfen... scheint zu funktionieren.
muss noch ein paar anpassungen vornhemen... danch poste ich mal den link zur veranschaulichung.

gruss, tom24

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

13. Apr 2005, 08:21

tom24 hat geschrieben:super, danke thomas, hat mir sehr geholfen... scheint zu funktionieren.
muss noch ein paar anpassungen vornhemen... danch poste ich mal den link zur veranschaulichung.

gruss, tom24
Hey tom,

du hast den Link vergessen ;)

Gruß,
Markus

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

13. Apr 2005, 08:33

Hej kills

hat er nicht.
tom24 hat geschrieben: muss noch ein paar anpassungen vornhemen... danch poste ich mal den link zur veranschaulichung.
er will ja Anpassungen vornehemen und den link dann DANACH posten.

lg Thomas

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

13. Apr 2005, 11:08

tbaddade hat geschrieben:Hej kills

hat er nicht.
tom24 hat geschrieben: muss noch ein paar anpassungen vornhemen... danch poste ich mal den link zur veranschaulichung.
er will ja Anpassungen vornehemen und den link dann DANACH posten.

lg Thomas
Hey Thomas,

Grml... verlesen :roll: sorry,...

Gruß,
Markus

tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

13. Apr 2005, 18:56

soooo, habs nun geschafft die anpassungen für das dropdownmenu fertig zu stellen.

dank der navi von thomas und einbisschen css hab ich der navi ein neues "kleidchen" vepasst.

das ganze kann unter der folgenden url betrachtet werden:
http://www.matrixx.ch/cms/whales/

die site ist nicht fertig! lediglich bei den sprachen deutsch und englisch hab ich die navi angepasst. der inhalt ist auch nur zur füllung der seiten da, ohne optimierter formatierung.

die navi funktioniert unter den folgenden browsern:
- ie 6
- ns 7
- firefox

mich würde interessieren, wie es bei den anderen browsern aussieht, vorallem unter mac und linux.

falls interesse besteht kann ich den code mit css posten.

grüsse, tom24

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

13. Apr 2005, 19:06

Gefällt mir gut, schönes Ding,...

Gruß,
Markus

tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

13. Apr 2005, 19:17

jo, danke... mit css kann man doch einiges anstellen :D

milfi
Beiträge: 3
Registriert: 1. Jun 2005, 11:05

1. Jun 2005, 11:08

tom24 hat geschrieben:soooo, habs nun geschafft die anpassungen für das dropdownmenu fertig zu stellen.

dank der navi von thomas und einbisschen css hab ich der navi ein neues "kleidchen" vepasst.

das ganze kann unter der folgenden url betrachtet werden:
http://www.matrixx.ch/cms/whales/

die site ist nicht fertig! lediglich bei den sprachen deutsch und englisch hab ich die navi angepasst. der inhalt ist auch nur zur füllung der seiten da, ohne optimierter formatierung.

die navi funktioniert unter den folgenden browsern:
- ie 6
- ns 7
- firefox

mich würde interessieren, wie es bei den anderen browsern aussieht, vorallem unter mac und linux.

falls interesse besteht kann ich den code mit css posten.

grüsse, tom24
hey Tom schöne Arbeit mit der Navi...

könntest Du die Dateien mal posten...such nämlich schon lang ne horizontale Version der Navi in diesem Stil...

Gruss

Timo

tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

dropdown-navi

27. Jun 2005, 18:56

dropdown-navigation (template):

Code: Alles auswählen

<?php 
// EXPLODE PATH 
$PATH = explode("-",$this->getValue("path")); 

// GET CURRENTS 
$path1 = $PATH[1]; 
$path2 = $PATH[2]; 
$path3 = $PATH[3]; 

echo 
''; 

/* START IE BROWSER */
/* START 1st level categories */ 
foreach (OOCategory::getRootCategories() as $lev1): 
if ($lev1->isOnline() AND $lev1->getId() != 2 AND $lev1->getId() != 3 AND $lev1->getId() != 4): 
//   /* 1st level - active link */ 
//   
//   if ($lev1->getId() == $path1) { 
//      echo 
//      '<li class="active">'.$lev1->getName(); 
//   } 
//   /* 1st level - no active link */ 
//   else { 
//      echo 
//      '<li>'.$lev1->getName(); 
//   } 
   
   /* 1st level had categories? -> go on */ 
   $lev1Size = sizeof($lev1->getChildren()); 
   if($lev1Size != "0"): 
      echo 
	  '<div class="menu">'; 
      /* START 2nd level categories */ 
      foreach ($lev1->getChildren() as $lev2): 
         if ($lev2->isOnline()): 
    
         /* 2nd level - active link */ 
         if ($lev2->getId() == $path2) { 
            echo 
            '<a class="outer" href="'.$lev2->getUrl().'">'.$lev2->getName().''; 
         } 
         /* 2nd level - no active link */ 
         else { 
            echo 
            '<a class="outer" href="'.$lev2->getUrl().'">'.$lev2->getName().''; 
         } 
		 
         /* 2nd level had categories? -> go on */ 
         $lev2Size = sizeof($lev2->getChildren()); 
         if($lev2Size != "0"): 
            echo 
            '<table><tr><td>'; 

            /* START 3rd level categories */ 
            foreach ($lev2->getChildren() as $lev3): 
               if ($lev3->isOnline()): 
               /* 3rd level - active link */ 
               if ($lev3->getId() == $path3) { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               /* 3rd level - no active link */ 
               else { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               endif; 
            endforeach; 
			
            /* END 3rd level categories */ 
            echo 
            '</td></tr></table>'; 
         endif; 
         echo 
         '</a>'; 
         endif; 
      endforeach; 
	  
      /* END 2nd level categories */ 
      echo ''; 
   endif; 
   echo 
   '</div>'; 
   endif; 
endforeach; 

/* END 1st level categories */ 
/* END IE BROWSER */

/*************************************************************************************

/* START NO IE BROWSER */
/* START 1st level categories */ 
foreach (OOCategory::getRootCategories() as $lev1): 
if ($lev1->isOnline() AND $lev1->getId() != 2 AND $lev1->getId() != 3 AND $lev1->getId() != 4): 
//   /* 1st level - active link */ 
//   
//   if ($lev1->getId() == $path1) { 
//      echo 
//      '<li class="active">'.$lev1->getName(); 
//   } 
//   /* 1st level - no active link */ 
//   else { 
//      echo 
//      '<li>'.$lev1->getName(); 
//   } 
   
   /* 1st level had categories? -> go on */ 
   $lev1Size = sizeof($lev1->getChildren()); 
   if($lev1Size != "0"): 
      echo 
	  '<div id="noniemenu">'; 
      /* START 2nd level categories */ 
      foreach ($lev1->getChildren() as $lev2): 
         if ($lev2->isOnline()): 
    
         /* 2nd level - active link */ 
         if ($lev2->getId() == $path2) { 
            echo 
            '<div class="holder"><a class="noieouter" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a><br>'; 
         } 
         /* 2nd level - no active link */ 
         else { 
            echo 
            '<div class="holder"><a class="noieouter" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a><br>'; 
         } 
		 
         /* 2nd level had categories? -> go on */ 
         $lev2Size = sizeof($lev2->getChildren()); 
         if($lev2Size != "0"): 
            echo 
            ''; 
            /* START 3rd level categories */ 
            foreach ($lev2->getChildren() as $lev3): 
               if ($lev3->isOnline()): 
               /* 3rd level - active link */ 
               if ($lev3->getId() == $path3) { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               /* 3rd level - no active link */ 
               else { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               endif; 
            endforeach; 
			
            /* END 3rd level categories */ 
            echo 
            ''; 
         endif; 
         echo 
         '</div>'; 
         endif; 
      endforeach; 
	  
      /* END 2nd level categories */ 
      echo ''; 
   endif; 
   echo 
   '</div>'; 
   endif; 
endforeach; 

/* END 1st level categories */ 
/* END NO IE BROWSER */

echo 
''; 
?> 

css:

Code: Alles auswählen

<style type="text/css">
.menu { display:none; }
#noniemenu { position:absolute; z-index:1 }
.holder { color:#000; width:96px; height:18px; display:block; background:#dca; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; border-width : 1px 1px 1px 1px; border-style : solid solid solid solid; border-color : #696977 #696977 #696977 #696977; }
.holder:hover { height:auto; cursor:pointer;color:#fff; background:#181734; }
a.noieouter, a.noieouter:visited { color:#000; width:96px; height:18px; display:block; background:#dca; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; border-width : 1px 1px 1px 1px; border-style : none none solid none; border-color : #696977 #696977 #696977 #696977; }
a.noieouter:hover { color:#fff; background:#181734; overflow:visible; }
a.inner, a.inner:visited { display:block; width:95px; border-bottom:1px solid #696977; text-decoration:none; color:#000; background:#eee; }
a.inner:hover { background:#EAE2D2; }
</style>

<!--[if IE]>
   <style type="text/css">
   /*<![CDATA[*/ 
#noniemenu {display:none;}
.menu { display:block; position:absolute; z-index:1 }
a.outer, a.outer:visited { color:#000; width:95px; height:18px; display:block; background:#dca; border:1px solid #696977; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; }
a.outer:hover { color:#fff; background:#181734; overflow:visible; }
a.outer:hover table { display:block; background:#eee; border-collapse:collapse; }
a.inner, a.inner:visited { display:block; width:93px; height:18px; border-bottom:1px solid #696977; text-decoration:none; color:#000;font-family:tahoma, vardana, arial, sans-serif; font-size:10px; text-align:center; }
a.inner:hover { background:#EAE2D2; }
   /*]]>*/
   </style>
<![endif]-->
ps: es sind 2 css-schnipsel nötig; eines für den ie (mit einer extrawurst) und der andere für die übrigen browser.

viel spass, gruss

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

27. Jun 2005, 19:25

Habe das ganze mal schnell getestet.

Das sagt der ausgegeben Quellcode per STRG+U im FF:

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Redaxo Demo 2.1 - CSS</title>
<link rel=stylesheet type=text/css href=./files/navi-test.css>


</head>
<body>
</div></div></div></div></div></div></div></div></div></div></div></div></body>
</html>
lg Thomas

tom24
Beiträge: 41
Registriert: 17. Mär 2005, 20:26
Kontaktdaten: Website

dropdown menu

28. Jun 2005, 22:26

ich poste hier nochmals (vereinfacht) meinen code. einfachhaltshalber habe ich die anderen templates weggelassen. zu bemerken ist noch, dass das dropdown-menu erst von der 2. ebene angezeigt wird, da die erste ebene bei mir die sprachen sind (total 3 ebenen), also in der form:

de
- swg
  • über uns
  • ziele
  • vorstand
  • etc.
- mitgliedschaft
  • anmelden
  • spenden
  • forum
- exkursionen
  • walreisen
  • kanada
  • kapverden
  • etc.
- etc

en
- das selbe in englisch

fr
- das selbe in francais

it
- das selbe in italo


die anderen sprachenlinks (en, fr, it) werden durch den folgenden code deaktiviert:

Code: Alles auswählen

if ($lev1->isOnline() AND $lev1->getId() != 2 AND $lev1->getId() != 3 AND $lev1->getId() != 4): 

die 2. ebene kann jedoch gegen die erste ausgetauscht werden, gemäss des weiter oben von Thomas geposteten codes.


1. template (layout):

Code: Alles auswählen

<?
setlocale(LC_ALL,"de_DE");
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Whales</title>


<style type="text/css"> 
.menu { display:none; } 
#noniemenu { position:absolute; z-index:1 } 
.holder { color:#000; width:96px; height:18px; display:block; background:#dca; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; border-width : 1px 1px 1px 1px; border-style : solid solid solid solid; border-color : #696977 #696977 #696977 #696977; } 
.holder:hover { height:auto; cursor:pointer;color:#fff; background:#181734; } 
a.noieouter, a.noieouter:visited { color:#000; width:96px; height:18px; display:block; background:#dca; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; border-width : 1px 1px 1px 1px; border-style : none none solid none; border-color : #696977 #696977 #696977 #696977; } 
a.noieouter:hover { color:#fff; background:#181734; overflow:visible; } 
a.inner, a.inner:visited { display:block; width:95px; border-bottom:1px solid #696977; text-decoration:none; color:#000; background:#eee; } 
a.inner:hover { background:#EAE2D2; } 
</style> 

<!--[if IE]>
   <style type="text/css">
   /*<![CDATA[*/ 
#noniemenu {display:none;}
.menu { display:block; position:absolute; z-index:1 }
a.outer, a.outer:visited { color:#000; width:95px; height:18px; display:block; background:#dca; border:1px solid #696977; margin-right:1px; text-align:center; float:left; text-decoration:none; font-family:tahoma, vardana, arial, sans-serif; font-size:10px; line-height:18px; overflow:hidden; }
a.outer:hover { color:#fff; background:#181734; overflow:visible; }
a.outer:hover table { display:block; background:#eee; border-collapse:collapse; }
a.inner, a.inner:visited { display:block; width:93px; height:18px; border-bottom:1px solid #696977; text-decoration:none; color:#000;font-family:tahoma, vardana, arial, sans-serif; font-size:10px; text-align:center; }
a.inner:hover { background:#EAE2D2; }
   /*]]>*/
   </style>
<![endif]-->

</head>

<body>
<a name=top></a>

<div id="navi">
<?
// LOCAL NAVIGATION
include $REX[INCLUDE_PATH]."/generated/templates/4.template";
?>
</div>

<div id="content">
<?
echo $this->getArticle();
?>
</div>


</body>
</html>

4. tempale (local navi = dropdown-menu)

Code: Alles auswählen

<?php 
// EXPLODE PATH 
$PATH = explode("-",$this->getValue("path")); 

// GET CURRENTS 
$path1 = $PATH[1]; 
$path2 = $PATH[2]; 
$path3 = $PATH[3]; 

echo 
''; 

/* START IE BROWSER */
/* START 1st level categories */ 
foreach (OOCategory::getRootCategories() as $lev1): 
if ($lev1->isOnline() AND $lev1->getId() != 2 AND $lev1->getId() != 3 AND $lev1->getId() != 4): 
//   /* 1st level - active link */ 
//   
//   if ($lev1->getId() == $path1) { 
//      echo 
//      '<li class="active">'.$lev1->getName(); 
//   } 
//   /* 1st level - no active link */ 
//   else { 
//      echo 
//      '<li>'.$lev1->getName(); 
//   } 
   
   /* 1st level had categories? -> go on */ 
   $lev1Size = sizeof($lev1->getChildren()); 
   if($lev1Size != "0"): 
      echo 
	  '<div class="menu">'; 
      /* START 2nd level categories */ 
      foreach ($lev1->getChildren() as $lev2): 
         if ($lev2->isOnline()): 
    
         /* 2nd level - active link */ 
         if ($lev2->getId() == $path2) { 
            echo 
            '<a class="outer" href="'.$lev2->getUrl().'">'.$lev2->getName().''; 
         } 
         /* 2nd level - no active link */ 
         else { 
            echo 
            '<a class="outer" href="'.$lev2->getUrl().'">'.$lev2->getName().''; 
         } 
		 
         /* 2nd level had categories? -> go on */ 
         $lev2Size = sizeof($lev2->getChildren()); 
         if($lev2Size != "0"): 
            echo 
            '<table><tr><td>'; 

            /* START 3rd level categories */ 
            foreach ($lev2->getChildren() as $lev3): 
               if ($lev3->isOnline()): 
               /* 3rd level - active link */ 
               if ($lev3->getId() == $path3) { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               /* 3rd level - no active link */ 
               else { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               endif; 
            endforeach; 
			
            /* END 3rd level categories */ 
            echo 
            '</td></tr></table>'; 
         endif; 
         echo 
         '</a>'; 
         endif; 
      endforeach; 
	  
      /* END 2nd level categories */ 
      echo ''; 
   endif; 
   echo 
   '</div>'; 
   endif; 
endforeach; 

/* END 1st level categories */ 
/* END IE BROWSER */

/*************************************************************************************

/* START NO IE BROWSER */
/* START 1st level categories */ 
foreach (OOCategory::getRootCategories() as $lev1): 
       
if ($lev1->isOnline() AND $lev1->getId() != 2 AND $lev1->getId() != 3 AND $lev1->getId() != 4): 
    
   /* 1st level - active link */ 
   if ($lev1->getId() == $path1) { 
      echo 
      '<li class="active">'.$lev1->getName(); 
   } 
   /* 1st level - no active link */ 
   else { 
      echo 
      '<li>'.$lev1->getName(); 
   } 
    
   /* 1st level had categories? -> go on */ 
   $lev1Size = sizeof($lev1->getChildren()); 
    
   if($lev1Size != "0"): 
      echo 
      '<div id="noniemenu">'; 


      /* START 2nd level categories */ 
      foreach ($lev1->getChildren() as $lev2): 
          
         if ($lev2->isOnline()): 
    
         /* 2nd level - active link */ 
         if ($lev2->getId() == $path2) { 
            echo 
            '<li class="holder"><a class="noieouter" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>'; 
         } 
         /* 2nd level - no active link */ 
         else { 
            echo 
            '<div class="holder"><a class="noieouter" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>'; 
         } 
          
         /* 2nd level had categories? -> go on */ 
         $lev2Size = sizeof($lev2->getChildren()); 
                   
         if($lev2Size != "0"): 
            echo 
            ''; 

            /* START 3rd level categories */ 
            foreach ($lev2->getChildren() as $lev3): 
    
               if ($lev3->isOnline()): 
    
               /* 3rd level - active link */ 
               if ($lev3->getId() == $path3) { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
               /* 3rd level - no active link */ 
               else { 
                  echo '<a class="inner" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>'; 
               } 
                
               endif; 
            endforeach; 
            /* END 3rd level categories */ 

            echo 
            ''; 
         endif; 
          

         echo 
         '</div>'; 
          
         endif; 
          
      endforeach; 
      /* END 2nd level categories */ 
       
       
      echo ''; 
   endif; 
    
   echo 
   '</div>'; 
    
   endif; 
endforeach; 
/* END 1st level categories */ 
/* END NO IE BROWSER */

echo 
''; 
?> 

das extern lagernde css-file, welche ins 1. template zwischen <head> inkludiert wird, muss selbstverständlich individuell angepasst werden.
ich habe es hier bei diesem beispiel mit absicht ausgelassen und mich nur auf das menu konzentriert.

ich hoffe, dass es nun klappt. ich bitte um ein feedback.
grüsse tom24

Zurück zu „Allgemeines [R2]“