Seite 1 von 1

Hauptnavigation inkl. "Home"

Verfasst: Mo 12. Jul 2004, 12:20
von GoofyUlm
Hallo Contenido Freunde,

bin ziemlich unerfahren und habe mir die Hauptnavi
(siehe Code anbei) downgeladen.

Da ich gerne wahlweise die Kategorie "Home" also der Hauptbaum
auch in der Navigation sehen würde.
Wäre ich euch dankbar für einen Lösungsvorschlag



CODE:

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

<?php

// Konfiguration

// WICHTIG:
// - ALLE WERTE VERGEBEN!!!
// - AN GEWÄHLTE CSS-KLASSE ANPASSEN

// Allgemein
	$cfg_menu["bg_color"]	= "#E5E5FC";	// Hintergrundfarbe der Tabelle
	$cfg_menu["indent_level"]	= "10";		// Einrückung der Ebenen

	$cfg_menu["line_color"]	= "#484E60";	// Farbe der Trennlinie
	$cfg_menu["line_height"]	= "0";		// 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"]	= "#E5E5FC";	// Hintergrundfarbe Standard
	$cfg_level[1]["bg_color_hover"]	= "#E5E5FC";	// Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
	$cfg_level[1]["bg_color_active"]	= "#E5E5FC";	// Hintergrundfarbe aktiv
	
	// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:

	$cfg_level[1]["font_color"]	= "#000000";	// Schriftfarbe Standard
	$cfg_level[1]["font_color_active"]= "#CC00CC";	// Schriftfarbe Standard aktive Kategorie
	$cfg_level[1]["font_color_hover"]= "#979AA8";	// 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"]= "underline";	// 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"]	= "#E5E5FC";	// Hintergrundfarbe Standard
	$cfg_level[2]["bg_color_hover"]	= "#E5E5FC";	// Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
	$cfg_level[2]["bg_color_active"]	= "#E5E5FC";	// Hintergrundfarbe aktiv

	// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:

	$cfg_level[2]["font_color"]	= "#000000";	// Schriftfarbe Standard
	$cfg_level[2]["font_color_active"]= "#484E60";	// Schriftfarbe Standard aktive Kategorie
	$cfg_level[2]["font_color_hover"]= "#73798A";	// 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"]= "underline";	// 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"]	= "#E5E5FC";	// Hintergrundfarbe Standard
	$cfg_level[3]["bg_color_hover"]	= "#E5E5FC";	// Hintergrundfarbe beim Überfahren mit der Maus ("Mouseover")
	$cfg_level[3]["bg_color_active"]	= "#E5E5FC";	// Hintergrundfarbe aktiv

	// Die folgenden Werte sollten dem Stylesheet entsprechen, dass in der Template-Konfiguration zugewiesen wird:

	$cfg_level[3]["font_color"]	= "#000000";	// Schriftfarbe Standard
	$cfg_level[3]["font_color_active"]= "#484E60";	// Schriftfarbe Standard aktive Kategorie
	$cfg_level[3]["font_color_hover"]= "#73798A";	// 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"]= "underline";	// 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=\"150\" 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=\"2\" style=\"border: ".$cfg_menu["line_height"]."px; border-color: ".$cfg_menu["line_color"]."; border-style: ".$cfg_menu["line_style"]."; padding-left:2px; height: 2px\" class=\"nav_ueberschrift\">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 -->

Verfasst: Mo 12. Jul 2004, 14:47
von Beleuchtfix
Du kannst einen Menüpunkt home einrichten und den eigentlichen Home-Artikel auf beiden Seiten anzeigen (Artíkel/Eigenschaften/Kategorie) beide Kategorien markieren.

Gruß
Florian

Verfasst: Mo 12. Jul 2004, 14:54
von GoofyUlm
Beleuchtfix hat geschrieben:Du kannst einen Menüpunkt home einrichten und den eigentlichen Home-Artikel auf beiden Seiten anzeigen (Artíkel/Eigenschaften/Kategorie) beide Kategorien markieren.


Verstehe ich nicht ganz,
ich weiss nicht -- ist das schon eine gute Lösung ??

Ich dachte eher daran im Output Code was zu ändern.
Wie mach ich das dann mit dem Startartikel

Gruß
Florian

Verfasst: Mo 12. Jul 2004, 15:07
von Beleuchtfix
GoofyUlm hat geschrieben:
Beleuchtfix hat geschrieben:Du kannst einen Menüpunkt home einrichten und den eigentlichen Home-Artikel auf beiden Seiten anzeigen (Artíkel/Eigenschaften/Kategorie) beide Kategorien markieren.

Verstehe ich nicht ganz,
ich weiss nicht -- ist das schon eine gute Lösung ??

Ich dachte eher daran im Output Code was zu ändern.
Wie mach ich das dann mit dem Startartikel
Natürlich kannst Du auch im Output Code etwas ändern, nimmst Dir dafür aber die Flexibilität von Contenido!
Aber wenn Du einen Link auf die Homeseite einführen willst, dann schreibe ihn da hin, wo du willst. Änderungen im Code sind aber immer schwieriger, als Contenido Funktionen zu benutzen. Und wenn du noch sehr unerfahren bist, dann bleib bei Contenido. :D

Übrigens führt jeder Menüpunkt,der einen Fehler erzeugt, wieder auf die Homeeben, also zum Beispiel auch eine Kategorie mit fehlendem Startartikel.
Gruß
Florian