Brauche dringend Hilfe wegen Schriftgröße in Navigation

Gesperrt
moellerchen
Beiträge: 71
Registriert: Do 26. Aug 2004, 19:59
Kontaktdaten:

Brauche dringend Hilfe wegen Schriftgröße in Navigation

Beitrag von moellerchen »

Hallo,

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 . "&nbsp;&nbsp;&nbsp;&nbsp;";
		} // end for
              
		$spaces .= "--&nbsp;";
		
		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
OUTPUT:

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.
Viele Grüße
Ingo
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Hallo,
ich glaube, das Einstellen der Schriftgröße wurde schlicht und einfach vergessen. Man kann zwar sehr viel Rahmen etc. bestimmen, aber nicht das
Es muss noch für jedes Elment der Faktor font_size eingefügt werden. Eventuel auch noch analog dazu die text_decoration und font_weight.

So etwa ab Zeile 30 im Output Teil (und dann für jede Ebene neu!) hinter:

Code: Alles auswählen

$cfg_level[1]["font_color"]   = "#ffffff";   // Schriftfarbe Standard

Code: Alles auswählen

$cfg_level[1]["font_size"]   = "12px";   // Schhriftgröße Standard
und vor Zeile 285 würde ich einfügen:

Code: Alles auswählen

$pre .= " font_size: " . $font_size . "\"";
usw. Ich hoffe, dass es klappt.

Viel Erfolg
Florian
moellerchen
Beiträge: 71
Registriert: Do 26. Aug 2004, 19:59
Kontaktdaten:

Beitrag von moellerchen »

Hi Florian,

jepp, das passt - hatte es vorgestern Abend derart lösen können. Vielen Dank für deinen Beitrag.
Viele Grüße
Ingo
Gesperrt