ich benutze das folgende Navigationsmodul:
INPUT
Code: Alles auswählen
?>
<table cellspacing="0" cellpadding="10" border="0" width="500">
<tr>
<td valign="top" class="text_medium" width="200">Überschrift</td>
<td valign="top" class="text_medium" width="300">
<input type="text" name="CMS_VAR[3]" value="CMS_VALUE[3]" class="text_medium"
style="width:300px;">
</td>
</tr>
<?php
$selected = "CMS_VALUE[0]";
?>
<tr valign="top">
<td width="200" class="text_medium" valign="top">Baum wählen:</td>
<td width="300" class="text_medium" valign="top">
<?php
echo "<select name=\"CMS_VAR[0]\" class=\"text_medium\" style=\"width:300px;\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">-- (keine Auswahl) --</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">-- (keine Auswahl) --</option>";
}
// fetch all categorys
$query = "SELECT
A.idcat,
A.level,
C.visible,
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
A.level = '0' AND
C.idlang='$lang' AND
B.idclient='$client'
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 spaces for every level
$spaces = $spaces . " ";
} // end for
$spaces .= "-- ";
if ($selected == $db->f("idcat")) {
$mk_selected = "selected";
} else {
$mk_selected = "";
}
$pre = "<option value=\"". $db->f("idcat") ."\" $mk_selected>". $spaces;
$post = "";
if($db->f("visible") == 0) $post = " (offline)";
$post .= "</option>";
echo $pre . $db->f("name") . $post;
} // end while
echo " </select>";
?>
</td>
</tr>
<tr>
<td width="200" class="text_medium">Textformat Standard:</td>
<td width="300" class="text_medium" valign="top" >
<?php
$handle = fopen("../content/css/format.css", "r");
$selected = "CMS_VALUE[2]";
echo "<select name=\"CMS_VAR[2]\" class=\"text_medium\" style=\"width: 300px;\">";
echo "<option value=\"\">(Standardschrift)</option>";
if ($handle) {
$buffer = fgets($handle, 4096);
while (!feof($handle)) {
$select_tag = "";
if(substr($buffer,0,11) == ".navigation" && ereg("^[A-ZÄÖÜ]", substr($buffer,12,1))) {
$value = trim(substr($buffer,1));
$option = substr(ereg_replace("_", " ", $value),11);
if ($value == $selected) $select_tag = " selected";
echo "<option value=\"$value\"" . $select_tag . ">" . $option . "</option>";
}
$buffer = fgets($handle, 4096);
}
fclose($handle);
}
echo "</select>";
?>
</td>
</tr>
<tr>
<td width="200" class="text_medium">Textformat Aktiv:</td>
<td width="300" class="text_medium" valign="top" >
<?php
$handle = fopen("../content/css/format.css", "r");
$selected = "CMS_VALUE[1]";
echo "<select name=\"CMS_VAR[1]\" class=\"text_medium\" style=\"width: 300px;\">";
echo "<option value=\"\">(Standardschrift)</option>";
if ($handle) {
$buffer = fgets($handle, 4096);
while (!feof($handle)) {
$select_tag = "";
if(substr($buffer,0,11) == ".navigation" && ereg("^[A-ZÄÖÜ]", substr($buffer,12,1))) {
$value = trim(substr($buffer,1));
$option = substr(ereg_replace("_", " ", $value),11);
if ($value == $selected) $select_tag = " selected";
echo "<option value=\"$value\"" . $select_tag . ">" . $option . "</option>";
}
$buffer = fgets($handle, 4096);
}
fclose($handle);
}
echo "</select>";
?>
</td>
</tr>
</table>
<?php
Code: Alles auswählen
<!-- Navigation -->
<?php
// Konfiguration
// WICHTIG:
// - ALLE WERTE VERGEBEN!!!
// - AN GEWÄHLTE CSS-KLASSE ANPASSEN
// Allgemein
$cfg_menu["bg_color"] = "none"; // Hintergrundfarbe der Tabelle
$cfg_menu["indent_level"] = "10"; // Einrückung der Ebenen
$cfg_menu["line_color"] = "#E0DFE3"; // Farbe der Trennlinie
$cfg_menu["line_height"] = "2"; // Dicke der Trennlinie in Pixel
$cfg_menu["line_style"] = "solid"; // Art der Trennlinie (z. B. "solid", "dashed", ...)
// Einstellungen für Ebene 1
$cfg_level[1]["line_higher"] = "1"; // Einfügen einer Trennlinie NACH Elementen einer höheren Ebene (1 = Ja / 0 = Nein)
$cfg_level[1]["line_same"] = "1"; // Einfügen einer Trennlinie NACH Elementen der gleichen Ebene (1 = Ja / 0 = Nein)
$cfg_level[1]["line_lower"] = "1"; // Einfügen einer Trennlinie NACH Elementen Ebene (1 = Ja / 0 = Nein)
$cfg_level[1]["bg_color"] = "#4D669C"; // Hintergrundfarbe Standard
$cfg_level[1]["bg_color_hover"] = "#A3214F"; // Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[1]["bg_color_active"] = "#4D669C"; // Hintergrundfarbe aktiv
// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:
$cfg_level[1]["font_color"] = "#ffffff"; // Schriftfarbe Standard
$cfg_level[1]["font_color_active"]= "#ffffff"; // Schriftfarbe Standard aktive Kategorie
$cfg_level[1]["font_color_hover"]= "#ffffff"; // Schriftfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[1]["font_deco"] = "none"; // Schriftdekoration Standard
$cfg_level[1]["font_deco_active"]= "none"; // Schriftdekoration Standard aktive Kategorie
$cfg_level[1]["font_deco_hover"]= "none"; // Schriftdekoration beim Überfahren mit der Maus ("Mouseover")
// Einstellungen für Ebene 2
$cfg_level[2]["line_higher"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen einer höheren Ebene (1 = Ja / 0 = Nein)
$cfg_level[2]["line_same"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen der gleichen Ebene (1 = Ja / 0 = Nein)
$cfg_level[2]["line_lower"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen Ebene (1 = Ja / 0 = Nein)
$cfg_level[2]["bg_color"] = "#4D669C"; // Hintergrundfarbe Standard
$cfg_level[2]["bg_color_hover"] = "#A3214F"; // Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[2]["bg_color_active"] = "#4D669C"; // Hintergrundfarbe aktiv
// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:
$cfg_level[2]["font_color"] = "#FFFFFF"; // Schriftfarbe Standard
$cfg_level[2]["font_color_active"]= "#FFFFFF"; // Schriftfarbe Standard aktive Kategorie
$cfg_level[2]["font_color_hover"]= "#FFFFFF"; // Schriftfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[2]["font_deco"] = "none"; // Schriftdekoration Standard
$cfg_level[2]["font_deco_active"]= "none"; // Schriftdekoration Standard aktive Kategorie
$cfg_level[2]["font_deco_hover"]= "none"; // Schriftdekoration beim Überfahren mit der Maus ("Mouseover")
// Einstellungen für Ebene 3
$cfg_level[3]["line_higher"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen einer höheren Ebene (1 = Ja / 0 = Nein)
$cfg_level[3]["line_same"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen der gleichen Ebene (1 = Ja / 0 = Nein)
$cfg_level[3]["line_lower"] = "0"; // Einfügen einer Trennlinie *VOR* Elementen Ebene (1 = Ja / 0 = Nein)
$cfg_level[3]["bg_color"] = "#4D669C"; // Hintergrundfarbe Standard
$cfg_level[3]["bg_color_hover"] = "#A3214F"; // Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[3]["bg_color_active"] = "#4D669C"; // Hintergrundfarbe aktiv
// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:
$cfg_level[3]["font_color"] = "#FFFFFF"; // Schriftfarbe Standard
$cfg_level[3]["font_color_active"]= "#FFFFFF"; // Schriftfarbe Standard aktive Kategorie
$cfg_level[3]["font_color_hover"]= "#FFFFFF"; // Schriftfarbe beim Überfahren mit der Maus ("Mouseover")
$cfg_level[3]["font_deco"] = "none"; // Schriftdekoration Standard
$cfg_level[2]["font_deco_active"]= "none"; // Schriftdekoration Standard aktive Kategorie
$cfg_level[3]["font_deco_hover"]= "none"; // Schriftdekoration beim Überfahren mit der Maus ("Mouseover")
// Weitere Ebenen...
?>
<script type="text/javascript">
<!--
// Funktion für die Mouseover-Effekte im Navigationsmenü (Link & Tabellenzelle)
function link_on(td_element, tdcolorhover, text, link_element, linkdeco, linkcolor, cursor) {
window.status = text;
with(document.getElementById(td_element)) {
if(tdcolorhover != "") {style.backgroundColor = tdcolorhover; }
if(cursor != "") {style.cursor = cursor;}
}
with(document.getElementById(link_element)) {
if(linkcolor != "") { style.color= linkcolor; }
if(linkdeco != "") { style.textDecoration = linkdeco; }
}
}
// Funktion für Aufhebung der Mouseover-Effekte im Navigationsmenü "onMouseOut" (Link & Tabellenzelle)
function link_off(td_element, tdcolor, text, link_element, linkdeco, linkcolor, cursor, classname) {
window.status = '';
with(document.getElementById(td_element)) {
if(tdcolor != "") {style.backgroundColor = tdcolor; }
if(cursor != "") {style.cursor = cursor;}
}
if(classname != "") {
// Wenn in der Template-Konfiguration eine CSS-Klasse zugewiesen wurde, diese "onMouseOut" wieder zuweisen
with(document.getElementById(link_element)) {
style.color = '';
style.textDecoration = '';
}
document.getElementById(link_element).className = classname;
} else {
// Wenn KEINE CSS-Klasse zugewiesen ist, "onMouseOut" Konfigurationswerte zuweisen
with(document.getElementById(link_element)) {
if(linkcolor != "") { style.color= linkcolor; }
if(linkdeco != "") { style.textDecoration = linkdeco; }
}
}
}
//-->
</script>
<?php
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
// Navigationspfad erstellen
// Information über aktuelle Kategorie auslesen
$sql = "SELECT
A.level AS level,
B.parentid AS parentid,
C.name AS name,
C.visible AS visible
FROM ".
$cfg["tab"]["cat_tree"]." AS A, ".
$cfg["tab"]["cat"]." AS B, ".
$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = '$idcat' AND
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang'";
$db->query($sql);
$db->next_record();
$level = $db->f("level");
$parentid = $db->f("parentid");
$idcat_tmp= $parentid;
$level_tmp = $level;
$navpath[$level]["idcat"] = $idcat;
$navpath[$level]["name"] = $db->f("name");
$navpath[$level]["visible"] = $db->f("visible");
// Informationen über übergeordnete Rubriken
while($level_tmp != "0") {
$sql = "SELECT
A.level AS level,
B.parentid AS parentid,
C.name AS name,
C.visible AS visible
FROM ".
$cfg["tab"]["cat_tree"]." AS A, ".
$cfg["tab"]["cat"]." AS B, ".
$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = '$idcat_tmp' AND
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang'";
$db->query($sql);
$db->next_record();
$navpath[$db->f("level")]["idcat"] = $idcat_tmp;
$navpath[$db->f("level")]["name"] = $db->f("name");
$navpath[$db->f("level")]["visible"] = $db->f("visible");
$level_tmp = $db->f("level");
$idcat_tmp = $db->f("parentid");
}
// Alle Rubriken auslesen
$sql = "SELECT
A.level AS level,
A.idcat AS link_idcat,
B.parentid AS parentid,
C.name AS name,
C.visible AS visible
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'
ORDER BY
A.idtree";
// Tabellenkopf & Überschrift
echo "
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"155\" style=\"background-color: ".$cfg_menu["bg_color"]."; border: 0px; ";
if($cfg_level[1]["line_same"] == 1 || $cfg_level[1]["line_higher"] == 1) {
echo "
border-bottom: ".$cfg_menu["line_height"]."px;
border-color: ".$cfg_menu["line_color"].";
border-style: ".$cfg_menu["line_style"].";";
}
echo "\">
<tr>
<td width=\"100%\" height=\"22\" style=\"border: ".$cfg_menu["line_height"]."px; border-color: ".$cfg_menu["line_color"]."; border-style: ".$cfg_menu["line_style"]."; background-color: #E0DFE3; padding-left:2px; height: 22px\" class=\"headline_fb\">CMS_VALUE[3]</td>
</tr>";
$result = $db->query($sql);
$num_rows = mysql_num_rows($result);
for($i=0;$i<$num_rows;$i++) {
$menu[] = mysql_fetch_array($result);
}
for($i=0;$i<sizeOf($menu);$i++) {
while(list($key,$val) = each($menu[$i])) {
$$key = $val;
}
if($level == 0 && $link_idcat == "CMS_VALUE[0]") {
$show = 1;
$first = 1;
} else if ($level == 0 && $link_idcat != "CMS_VALUE[0]") {
$show = 0;
}
if($show == 1 && $visible == 1) {
if (($level == 1 && $parentid == "CMS_VALUE[0]") || ($level > 1 && $parentid == $navpath[$level-1]["idcat"])) {
$padding_element = ($level-1) * $cfg_menu["indent_level"]+ 3;
$linkobj = "a".$client.$lang.$parentid.$link_idcat;
$tabobj = "td".$client.$lang.$parentid.$link_idcat;
if($link_idcat == $navpath[$level]["idcat"]) {
$classname = "CMS_VALUE[1]";
$bg_color = $cfg_level[$level]["bg_color_active"];
$font_color = $cfg_level[$level]["font_color_active"];
$font_deco = $cfg_level[$level]["font_deco_active"];
} else {
$classname = "CMS_VALUE[2]";
$bg_color = $cfg_level[$level]["bg_color"];
$font_color = $cfg_level[$level]["font_color"];
$font_deco = $cfg_level[$level]["font_deco"];
}
$pre = "\n<tr>";
// ------- Code für Tabellenzeile (wegen Mouseover-Effekt recht umfangreich) -------
$pre .= "<td id=\"$tabobj\" height=\"22\" width=\"100%\" style=\"border: 0px; padding: 0px; padding-left: ".$padding_element."px; ";
if($first != 1) { // Erstes Element grenzt an Header und darf daher keinen oberen Rand erhalten.
if( ($cfg_level[$level]["line_same"] == 1 && $level_prev == $level) ||
($cfg_level[$level]["line_higher"] == 1 && $level_prev < $level) ||
($cfg_level[$level]["line_lower"] == 1 && $level_prev > $level)) {
$pre .= " border-top: ".$cfg_menu["line_height"]. "px;".
" border-color: ".$cfg_menu["line_color"]. ";" .
" border-style: ".$cfg_menu["line_style"].";";
}
}
$pre .= " background-color: " . $bg_color . "\"";
$pre .= " class=\"$classname\"";
$pre .= " onmouseover=\"link_on('".$tabobj."','".$cfg_level[1]["bg_color_hover"]."','".$name."','$linkobj','".$cfg_level[$level]["font_deco_hover"]."','".$cfg_level[$level]["font_color_hover"]."','pointer')\"";
$pre .= " onmouseout=\"link_off('".$tabobj."','".$bg_color."','','$linkobj','".$font_deco."','".$font_color."','auto', '".$classname."')\"";
$pre .= " onClick=\"document.location.href='front_content.php?client=".$client."&lang=".$lang."&idcat=".$link_idcat."'\">";
// ----- Ende Code für Tabellenzeile -----
// ------------ Code für Link: ------------
$pre .= "<a id=\"a".$client.$lang.$parentid.$link_idcat."\" href=\"front_content.php?client=$client&lang=$lang&idcat=".$link_idcat."\"";
$pre .= " class=\"$classname\">";
// --------- Ende Code für Link ---------
// ----------- Abschluss-Tags -----------
$post = "</a></td></span></tr>";
// ------- Ende Abschluss-Tags --------
// --- Endlich: Ausgabe des Menüelements ---
echo $pre . $name . $post;
// --------- Das war's auch schon... -----------
$first = 0;
$level_prev = $level;
}
}
}
echo "</table>";
?>
<!-- Navigation Ende -->
Ich bekomme einfach nicht raus, wie ich die Schriftgröße der zweiten und dritten Ebene einstellen kann - die Unterpunkte in den Ebenen 2 und 3 sollen kleiner sein, als die Hauptrubriken.
Derweil wird leider jede Ebene mit 13px wiedergegeben - Ebene 2 und 3 sollen aber nur eine Schriftgröße von 11px haben.
Es wäre klasse, könntet ihr mir helfen.