Haupnavigation: Anzeigeproblem bei Aufteilung
Verfasst: Do 23. Jun 2005, 16:40
Hallo,
suche hier schon den ganzen Tag rum, aber finde irgendwie nicht die richtigen Antworten.
Habe folgendes Problem:
Habe eine Hauptnavigation nach dem Muster:
HOME
1. Punkt (1. Ebene)
1.1. Punkt (2. Ebene)
1.1.1. Punkt (3. Ebene)
1.1.2. Punkt (3. Ebene)
usw.
2. Punkt
usw.
Nun soll links 1. Punkt und 1.1. Punkt angezeigt werden, rechts 1.1.1. Punkt, 1.1.2. Punkt, usw.
So weit funktioniert auch alles:
Habe aus dem Modul "Hauptnavigation" die Anzeige der 3. Ebene rausgeworfen und ein Modul "Navigation rechts" erstellt und dann beide Module in getrennte Container gesteckt. Nun zeigt sich auf der rechten Seite unter dem letzten Punkt (z.B. 1.1.2. Punkt) der nächste Punkt der 1. Ebene (z.B. 2. Punkt) an. Ich komme einfach nicht darauf, was ich falsch gemacht habe, deshalb poste ich hier mal den Code vom Modul "Nacvigation rechts"
Input:
// selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td>Kategorie wählen:</td>
<td>
<select name=\"CMS_VAR[0]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = "SELECT A.idcat, A.level, 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 C.idlang='$lang' AND B.idclient='$client' ".
"AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Output:
<?
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"><tr>';
echo ;
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.visible = '1'";
$db->query($sql);
while ( $db->next_record() ) {
echo '<td height="25" class=".navigation" style="border: 0px; border-top:1px; border-color: #BEBFCC; border-style: dashed; text-align : left; background-color: #BEBFCC; padding-left:10px; padding-right:0px;">
<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>';
} // end while
} // if
} // end foreach
} // end if (is_array)
echo '</tr></table>';
}
?>
Wäre toll, wenn mir schnell jemand einen Tip geben könnte, bin mit dem Projekt ziemlich in Zeitdruck.
suche hier schon den ganzen Tag rum, aber finde irgendwie nicht die richtigen Antworten.
Habe folgendes Problem:
Habe eine Hauptnavigation nach dem Muster:
HOME
1. Punkt (1. Ebene)
1.1. Punkt (2. Ebene)
1.1.1. Punkt (3. Ebene)
1.1.2. Punkt (3. Ebene)
usw.
2. Punkt
usw.
Nun soll links 1. Punkt und 1.1. Punkt angezeigt werden, rechts 1.1.1. Punkt, 1.1.2. Punkt, usw.
So weit funktioniert auch alles:
Habe aus dem Modul "Hauptnavigation" die Anzeige der 3. Ebene rausgeworfen und ein Modul "Navigation rechts" erstellt und dann beide Module in getrennte Container gesteckt. Nun zeigt sich auf der rechten Seite unter dem letzten Punkt (z.B. 1.1.2. Punkt) der nächste Punkt der 1. Ebene (z.B. 2. Punkt) an. Ich komme einfach nicht darauf, was ich falsch gemacht habe, deshalb poste ich hier mal den Code vom Modul "Nacvigation rechts"
Input:
// selected category
$selected = "CMS_VALUE[0]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td>Kategorie wählen:</td>
<td>
<select name=\"CMS_VAR[0]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = "SELECT A.idcat, A.level, 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 C.idlang='$lang' AND B.idclient='$client' ".
"AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Output:
<?
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"><tr>';
echo ;
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.visible = '1'";
$db->query($sql);
while ( $db->next_record() ) {
echo '<td height="25" class=".navigation" style="border: 0px; border-top:1px; border-color: #BEBFCC; border-style: dashed; text-align : left; background-color: #BEBFCC; padding-left:10px; padding-right:0px;">
<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>';
} // end while
} // if
} // end foreach
} // end if (is_array)
echo '</tr></table>';
}
?>
Wäre toll, wenn mir schnell jemand einen Tip geben könnte, bin mit dem Projekt ziemlich in Zeitdruck.