Untermenü nur bedingt anzeigen [solved]

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Untermenü nur bedingt anzeigen [solved]

Post by Marphy »

Hallo zusammen,
auch nach längerer Recherche komme ich in diesem Fall leider nicht alleine weiter.

Ich setzte horizontale und vertikale Navigation kombiniert ein, wobei die das vertikale (Unter-)Menü nur dann angezeigt werden soll, wenn auch tatsächlich Untermenüeinträge vorhanden sind (dies ist z.B. auf den Produktseiten der Fall, unter Home jedoch nicht).

Dabei ist es denke ich das Einfachste, per PHP die entsprechende GLOBALS-Variable abzufragen und das vertikale Menü so nur bedingt einzublenden. Die Frage ist nur, welche Variablen wie abfragen?

Danke für eure Hilfe!

Noch ein schönes Restwochende wünscht
Marco :)
Last edited by Marphy on Mon 3. Sep 2007, 17:38, edited 2 times in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

Hi Marphy,

ich denke hier wirst du fündig: http://www.phpwcms.de/forum/viewtopic.php?p=89626#89626

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Hallo Knut,
danke für den Link. Das ist aber leider nicht das, was ich gesucht habe - so mach ich das bisher ja auch:

Code: Select all

[PHP]
  if(isset($GLOBALS['LEVEL_ID'][1])) {
    $level_id = $GLOBALS['LEVEL_ID'][1];

    echo '<div class="nlu_navi1">{NAV_LIST_UL:F,'.$level_id.',,act_path,active}
</div>';
  }
[/PHP]
Allerdings wird hier auch versucht, ein vertikales Menü anzuzeigen, wenn gar keine Subitems vorhanden sind (-> Menü bleibt leer).
Da ich aber auch noch andere Elemente ein- bzw. ausblenden muss, jenachdem, ob nun ein vertikales Menü vorhanden ist oder nicht, brauche ich hierfür eine Lösung.

Grüße,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:34, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Keine Idee mehr? :(
Last edited by Marphy on Mon 3. Sep 2007, 17:34, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Sorry wenn ich nerve, aber ich brauche das relativ dringend. So schwer kann das doch nicht sein?

Soll ich evtl. im englisch-sprachigen Board nochmals fragen?

Danke euch,
Marco :oops:
Last edited by Marphy on Mon 3. Sep 2007, 17:34, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Tut mir leid für die Unart des wiederholten Pushings, aber ich brauche das bedingte Menü dringend.
So schwer kann das doch nicht sein? :(

Bitte lasst mich nicht im Stich!
Last edited by Marphy on Mon 3. Sep 2007, 17:35, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
User avatar
nekket
Posts: 613
Joined: Tue 18. Nov 2003, 15:46
Location: Baden-Baden
Contact:

Post by nekket »

Ich kann dir nur einen Codeschnippsel aus einer meiner älteren Seiten anbieten (daher auch noch das NAV_TABLE_COLUMN:XX}

Speichere das Script in einer PHP Datei und platziere dann im Template ein {PHP:namescript.php} rein.

Code: Select all

<?php 
$id = $GLOBALS['content']['cat_id']; 
$parent_id = $GLOBALS['content']['struct'][$id]['acat_struct']; 

$doc_name = html_specialchars($GLOBALS['content']['struct'][$id]['acat_name']);
$doc_parent_name = html_specialchars($GLOBALS['content']['struct'][$parent_id]['acat_name']); 


if ("2" == $id) {$colnr = "$id";}
elseif ("16" == $id) {$colnr = "$id";}
elseif ("17" == $id) {$colnr = "$id";}
elseif ("18" == $id) {$colnr = "$id";}
elseif ("19" == $id) {$colnr = "$id";}
elseif ("33" == $id) {$colnr = "17";}
elseif ("34" == $id) {$colnr = "17";}
elseif ("35" == $id) {$colnr = "17";}
elseif ("37" == $id) {$colnr = "17";}
elseif ("38" == $id) {$colnr = "17";}
elseif ("39" == $id) {$colnr = "17";}
elseif ("40" == $id) {$colnr = "17";}
elseif ("62" == $id) {$colnr = "17";}
elseif ("51" == $id) {$colnr = "18";}
elseif ("52" == $id) {$colnr = "18";}
elseif ("230" == $id) {$colnr = "18";}
elseif ("53" == $id) {$colnr = "18";}
elseif ("55" == $id) {$colnr = "18";}
elseif ("56" == $id) {$colnr = "18";}
elseif ("57" == $id) {$colnr = "18";}

else $colnr = $parent_id;
echo "{NAV_TABLE_COLUMN:".$colnr."}";
?>
Da steht natürlich jetzt viel drin, was bei dir nicht passen wird. Aber damit kommst du zum Ziel.

Laufen tut das ganze hier: http://www.derkleineprinz.de
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
User avatar
nekket
Posts: 613
Joined: Tue 18. Nov 2003, 15:46
Location: Baden-Baden
Contact:

Post by nekket »

Marphy wrote:Keine Idee mehr? :(
und - klappt das noch mit der 1.3.3?
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
betabi
Posts: 26
Joined: Thu 23. Jun 2005, 17:28
Location: Hamburg
Contact:

Versuche es mal mit dem rt NAV_SETLEVEL

Post by betabi »

Versuche es mal mit dem rt NAV_SETLEVEL.

Dieser Replacement Tag rendert das Menü nur, wenn es auch etwas zu rendern gibt... allerdings als table.
Ich habe ihn noch um die Funktion {NAV_UL_SETLEVEL:(.*?):(.*?)\} erweitert – doch aufgrund miener nicht vorhandenen php-Kenntnissen solltest Du das vielleicht nicht einfach kopieren, sondern noch einmal genauer drüberschauen...

Hier der Code:

Code: Select all

<?php
/** 
	Version: 0.4 ( 0.3b rc <= 0.2b np <= 0.1b np <= 0.1a np)
	never mind my bad lingo! =(
	
	for further questions:
	- read the readme.txt 
	- or visit http://www.phpwcms.de/forum/viewtopic.php?t=8411 
	- or e-mail to theravenevermore@web.de (betreff/subject: "reptag SETLEVEL")
**/




// -------------------------------------------------------------
	// -------------------------------------------------------------
	function get_active_categories_X($struct, $act_struct_id) {
		// returns an array with all active categories/structure levels
		
		$cat_incr = 1; // numbers the results consecutively - i think that's a  great convenience. =D
		$which_cat_array = array();
		$which_category = $act_struct_id;
		while($which_category) {
			$which_cat_array[$which_category] = $cat_incr;
			$which_category = $GLOBALS['content']["struct"][$which_category]["acat_struct"];
			$cat_incr++; // remember: (x = x + 1  =>  x++)
		}
		
		return $which_cat_array;
	}
	// -------------------------------------------------------------




// ---- remember: --------------------------------------
//	$content["struct"] = get_struct_data ($db, '', ''); //reads the complete structure as array 
//	$content["cat_id"] = $aktion[0]; 
//	$content["cat_path"] = get_active_categories_X($content["struct"], $content["cat_id"]);
	// -------------------------------------------------------------




// ------------------------------------------------------------- 
	// remember: struct = $content["struct"]	// catID = $content["cat_id"]	// struct_path = $content["cat_path"]
	function css_list_setlevel($struct, $catID, $struct_path, $parent_level_name="", $parent_level=0, $param_list_level_value="", $list_autohide="", $show_bg="", $class="", $link_to="index.php") {
		// returns list <div><ul><li></li></ul></div> of the current structure level
		// if $parent_level=1 the first list entry will be the parent level
		// $parent_level=0 - only the list of all levels in this structure
		// if $parent_leve_name != "" then it uses the given string
		// predefined class for this menu is "list_level"    
		
		$class = trim($class);
		if (!$class) {$class = "levelsensitive";}
		$parent_level_name = trim($parent_level_name);
		$parent_level = intval($parent_level);
		$list_autohide = intval($list_autohide);
		$show_bg = intval($show_bg);
		$activated = 0; //no active list set
		$css_list = "";
		$param_list_level_value = intval($param_list_level_value);
		
			// ---- levelsensitive ------------------------------------------
			$array_order = array_flip(array_reverse(array_flip(get_active_categories_X($struct, $catID)))); // clean the mess up!
			$shown_level_value = $param_list_level_value;                       // set value
			$shown_level_key = array_search($shown_level_value,$array_order);   // look up the key (shown_level_key) correlating with the value (shown_level_value)
			if($list_autohide == 0){$hide_list = 0;}  							// check depth
			if($list_autohide == 1 && !($shown_level_key > $param_tab_level_value)){$hide_list = 1; }
			
			$level = $shown_level_key;
			// -------------------------------------------------------------
		
		// returns the complete level of NON hidden categories
		$level_struct = return_struct_level($struct, $level);
		
		// get the active link
		$breadcrumb = get_breadcrumb(key($struct_path), $struct);
	
		if($hide_list !== 1) {
			foreach($level_struct as $key => $value) {
				if(!$level_struct[$key]["acat_redirect"]) {
					$link = 'index.php?';
					if($level_struct[$key]["acat_alias"]) {
						$link .= html_specialchars($level_struct[$key]["acat_alias"]);
					} else {
						$link .= 'id='.$key.',0,0,1,0,0';
					}
					$redirect['target'] = '';
				} else {
					$redirect = get_redirect_link($level_struct[$key]["acat_redirect"], ' ', '');
					$link = $redirect['link'];
				}
				if(!empty($breadcrumb[$key])) {
					$css_list .= '';
					$css_list .= '    <li id="'.$class.'_active"><a href="'.$link.'" id="'.$class.'_active_link"'.$redirect['target'].'>';
					$css_list .= html_specialchars($level_struct[$key]["acat_name"])."</a>";
					$css_list .= "</li>\n";
// 					echo "wohoo ";
				} else { 
//					echo "n�� ";
					$css_list .= '    <li><a href="'.$link.'"'.$redirect['target'].'>';
					$css_list .= html_specialchars($level_struct[$key]["acat_name"])."</a>";
					$css_list .= "</li>\n"; }
					}
				} else if ($show_bg == 1){
				$css_list = '<li>&nbsp;</li>';
				}
		if($parent_level && $level) {
			$css_list_home  = '    <li id="'.$class.'_parent">';
			$css_list_home .= '<a href="'.$link_to.'?id='.$level; //former: id="'.$class.'_parent_link">';
			$css_list_home .= ',0,0,1,0,0" id="'.$class.'_parent_link">';
			$css_list_home .= html_specialchars((!$parent_level_name) ? $struct[$level]["acat_name"] : $parent_level_name);
			$css_list_home .= "</a></li>\n";
			$css_list = $css_list_home . $css_list;
		}
		if($css_list) {
			$css_list = "<div id=\"".$class."\">\n  <ul id=\"".$class."_ul\">\n". $css_list ."  </ul>\n</div>";
		}
		return $css_list;
	}
	// ------------------------------------------------------------- 

	

	
// -------------------------------------------------------------
	// ----- nav_table_struct
	function set_level_tab($struct, $act_cat_id, $nav_table_struct, $param_tab_level_value="", $tab_autohide="", $link_to="index.php") { 
		// start with home directory for the listing = top nav structure
		// 1. Build the recursive tree for given actual article category ID
		// return the tree starting with given start_id (like breadcrumb)
		// if the $start_id = 0 then this stops because 0 = top level
		$data = array();
		$c = 0;
		$total_levels = 0;
		$param_tab_level_value = intval($param_tab_level_value);
		$tab_autohide = intval($tab_autohide);
		$catID = $act_cat_id;
		$start_id = $act_cat_id;
				
			// ---- levelsensitive -----------------------------------------
			$array_order = array_flip(array_reverse(array_flip(get_active_categories_X($struct, $catID)))); 
			$shown_level_value = $param_tab_level_value;
			$shown_level_key = array_search($shown_level_value,$array_order);
			if($tab_autohide == 1 && !($shown_level_key > $param_tab_level_value)){$hide_tab = 1; }
			if($tab_autohide == 0){$start_level = $param_tab_level_value;}

			$level = $shown_level_key;
			// -------------------------------------------------------------
			
		// ---- if: determines, wether to show nav, or not
		if( $hide_tab !== 1) {
			while ($start_id) {
				$data[$start_id] = 1;
				$start_id         = $struct[$start_id]["acat_struct"];
				$total_levels++;
			}
			if(is_array($data) && count($data)) {
				$temp_tree = array_reverse($data, 1);
			} else {
				$temp_tree = false;
			}
			
			foreach($struct as $key => $value) {
				//2005-03-28 Oliver Georgi
				//if($struct[$key]["acat_struct"] == $act_cat_id && $key && !$struct[$key]["acat_hidden"]) {
				//show also when hidden level is on selected tree
				if($struct[$key]["acat_struct"] == $act_cat_id && $key && (!$struct[$key]["acat_hidden"] || isset($GLOBALS['LEVEL_KEY'][$key]))) {
					$c++;
				}
			}
			$c = (!$c) ? 1 : 0;
			
			//get depth of level
			$level_depth = 0;
			$start_level = $level;
			while ($start_level) {
				$start_level = $struct[$start_level]["acat_struct"];
				$level_depth++;
			}
			
			
			//build image src path and real image tag
			//$nav_table_struct["linkimage_norm_js"]   = get_real_imgsrc($nav_table_struct["linkimage_norm"]);
			$nav_table_struct["linkimage_over_js"]   = get_real_imgsrc($nav_table_struct["linkimage_over"]);
			//$nav_table_struct["linkimage_active_js"] = get_real_imgsrc($nav_table_struct["linkimage_active"]);
			
			$nav_table_struct["linkimage_norm"]        = add_linkid($nav_table_struct["linkimage_norm"],   '#');
			$nav_table_struct["linkimage_over"]        = add_linkid($nav_table_struct["linkimage_over"],   '#');
			$nav_table_struct["linkimage_active"]    = add_linkid($nav_table_struct["linkimage_active"], '#');
			
			// create neccessary linkimage_array
			//if(!isset($nav_table_struct['array_struct'])) {
			//    $nav_table_struct['array_struct'] = array();
			//}
			$lc = count($temp_tree);
			for($l = 0; $l <= $lc; $l++) {
			
				if(!isset($nav_table_struct['array_struct'][$l])) {
				
					$nav_table_struct['array_struct'][$l]["linkimage_over_js"]    = $nav_table_struct["linkimage_over_js"];
					$nav_table_struct['array_struct'][$l]["linkimage_norm"]        = $nav_table_struct["linkimage_norm"];
					$nav_table_struct['array_struct'][$l]["linkimage_over"]        = $nav_table_struct["linkimage_over"];
					$nav_table_struct['array_struct'][$l]["linkimage_active"]    = $nav_table_struct["linkimage_active"];
		
					$nav_table_struct['array_struct'][$l]["row_norm_bgcolor"]    = $nav_table_struct["row_norm_bgcolor"];
					$nav_table_struct['array_struct'][$l]["row_norm_class"]        = $nav_table_struct["row_norm_class"];
					$nav_table_struct['array_struct'][$l]["row_over_bgcolor"]    = $nav_table_struct["row_over_bgcolor"];
					$nav_table_struct['array_struct'][$l]["row_active_bgcolor"]    = $nav_table_struct["row_active_bgcolor"];
					$nav_table_struct['array_struct'][$l]["row_active_class"]    = $nav_table_struct["row_active_class"];
					
					$nav_table_struct['array_struct'][$l]["space_celltop"]        = $nav_table_struct["space_celltop"];
					$nav_table_struct['array_struct'][$l]["space_cellbottom"]    = $nav_table_struct["space_cellbottom"];
		
					$nav_table_struct['array_struct'][$l]["cell_height"]        = $nav_table_struct["cell_height"];
					$nav_table_struct['array_struct'][$l]["cell_class"]            = $nav_table_struct["cell_class"];
					$nav_table_struct['array_struct'][$l]["cell_active_height"]    = $nav_table_struct["cell_active_height"];
					$nav_table_struct['array_struct'][$l]["cell_active_class"]    = $nav_table_struct["cell_active_class"];
				
				} else {
				
					$nav_table_struct['array_struct'][$l]["linkimage_over_js"]    = get_real_imgsrc($nav_table_struct['array_struct'][$l]["linkimage_over"]);
					$nav_table_struct['array_struct'][$l]["linkimage_norm"]        = add_linkid($nav_table_struct['array_struct'][$l]["linkimage_norm"],   '#');
					$nav_table_struct['array_struct'][$l]["linkimage_over"]        = add_linkid($nav_table_struct['array_struct'][$l]["linkimage_over"],   '#');
					$nav_table_struct['array_struct'][$l]["linkimage_active"]    = add_linkid($nav_table_struct['array_struct'][$l]["linkimage_active"], '#');
		
				}
			
			}
			
				$temp_menu = build_levels ($struct, $level, $temp_tree, $act_cat_id, $nav_table_struct, $level_depth, $c, $link_to); //now: starts at $param_tab_level_value - former: starts at root level ($level)
				return ($temp_menu) ? ("<table".table_attributes($nav_table_struct, "table", 0).">\n".$temp_menu."</table>") : "";
			
		} /** TODO else { 
			echo $template_default["nav_table_struct"]["row_norm_bgcolor"];
			$temp_menu = '<tr> <td style="background-color: #f0f0f0; width: 100%;">&nbsp;</td> </tr>';
			return ($temp_menu) ? ("<table>\n".$temp_menu."</table>") : "";
		} **/
	} 
	// -------------------------------------------------------------






// -------------------------------------------------------------
	// ----- nav_ul_struct
	function set_level_ul($struct, $act_cat_id, $nav_table_struct, $param_tab_level_value="", $tab_autohide="", $link_to="index.php") { 
		// start with home directory for the listing = top nav structure
		// 1. Build the recursive tree for given actual article category ID
		// return the tree starting with given start_id (like breadcrumb)
		// if the $start_id = 0 then this stops because 0 = top level
		$data = array();
		$c = 0;
		$total_levels = 0;
		$param_tab_level_value = intval($param_tab_level_value);
		$tab_autohide = intval($tab_autohide);
		$catID = $act_cat_id;
		$start_id = $act_cat_id;
				
			// ---- levelsensitive -----------------------------------------
			$array_order = array_flip(array_reverse(array_flip(get_active_categories_X($struct, $catID)))); 
			$shown_level_value = $param_tab_level_value;
			$shown_level_key = array_search($shown_level_value,$array_order);
			if($tab_autohide == 1 && !($shown_level_key > $param_tab_level_value)){$hide_tab = 1; }
			if($tab_autohide == 0){$start_level = $param_tab_level_value;}

			$level = $shown_level_key;
			// -------------------------------------------------------------
			
		// ---- if: determines, wether to show nav, or not
		if( $hide_tab !== 1) {
			while ($start_id) {
				$data[$start_id] = 1;
				$start_id         = $struct[$start_id]["acat_struct"];
				$total_levels++;
			}
			if(is_array($data) && count($data)) {
				$temp_tree = array_reverse($data, 1);
			} else {
				$temp_tree = false;
			}
			
			foreach($struct as $key => $value) {
				//2005-03-28 Oliver Georgi
				//if($struct[$key]["acat_struct"] == $act_cat_id && $key && !$struct[$key]["acat_hidden"]) {
				//show also when hidden level is on selected tree
				if($struct[$key]["acat_struct"] == $act_cat_id && $key && (!$struct[$key]["acat_hidden"] || isset($GLOBALS['LEVEL_KEY'][$key]))) {
					$c++;
				}
			}
			$c = (!$c) ? 1 : 0;
			
			//get depth of level
			$level_depth = 0;
			$start_level = $level;
			while ($start_level) {
				$start_level = $struct[$start_level]["acat_struct"];
				$level_depth++;
			}
			
			
			//build image src path and real image tag
			//$nav_table_struct["linkimage_norm_js"]   = get_real_imgsrc($nav_table_struct["linkimage_norm"]);
			$nav_table_struct["linkimage_over_js"]   = get_real_imgsrc($nav_table_struct["linkimage_over"]);
			//$nav_table_struct["linkimage_active_js"] = get_real_imgsrc($nav_table_struct["linkimage_active"]);
			
			$nav_table_struct["linkimage_norm"]        = add_linkid($nav_table_struct["linkimage_norm"],   '#');
			$nav_table_struct["linkimage_over"]        = add_linkid($nav_table_struct["linkimage_over"],   '#');
			$nav_table_struct["linkimage_active"]    = add_linkid($nav_table_struct["linkimage_active"], '#');
			
			// create neccessary linkimage_array
			//if(!isset($nav_table_struct['array_struct'])) {
			//    $nav_table_struct['array_struct'] = array();
			//}
			$lc = count($temp_tree);
			
			
			$temp_menu = build_levels_ul ($struct, $level, $temp_tree, $act_cat_id, $nav_table_struct, $level_depth, $c, $link_to); //now: starts at $param_tab_level_value - former: starts at root level ($level)
			return ($temp_menu) ? ("<ul id=\"subnav\">\n".$temp_menu."</ul>") : "";
			
		} 
	} 
// -------------------------------------------------------------

function build_levels_ul ($struct, $level, $temp_tree, $act_cat_id, $nav_table_struct, $count, $div, $link_to) {

	// this returns the level structure based on given arrays
	// it is special for browsing from root levels

	$temp_menu		= '';
	$js 			= '';
	$depth 			= count($temp_tree)-$div;
	$current_level	= $count;
	$count++;
	$depth2 		= $depth-$count+2;


	foreach($struct as $key => $value) {

		if( _getStructureLevelDisplayStatus($key, $level) ) {
		/*
		if(		$struct[$key]["acat_struct"] == $level
			&& 	$key
			//&& 	(!$struct[$key]["acat_hidden"]	|| 	(!empty($nav_table_struct["show_active_hidden"]) && isset($GLOBALS['LEVEL_KEY'][$key])) ? true : false)
			&& (!$struct[$key]['acat_hidden'] || ($struct[$key]["acat_hidden"] == 2 && isset($GLOBALS['LEVEL_KEY'][$key])))) {
		*/

			
			if(!$struct[$key]["acat_redirect"]) {
				$link = 'index.php?';
				if($struct[$key]["acat_alias"]) {
					$link .= html_specialchars($struct[$key]["acat_alias"]);
				} else {
					$link .= 'id='.$key.',0,0,1,0,0';
				}
				$redirect['target'] = '';
			} else {
				$redirect = get_redirect_link($struct[$key]["acat_redirect"], ' ', '');
				$link = $redirect['link'];
			}


			if(!empty($temp_tree[$key])) {
				//check if inside active tree structure
				if($act_cat_id == $key || (!empty($nav_table_struct["all_nodes_active"]) && isset($GLOBALS['LEVEL_KEY'][$key]))) {
					$temp_menu .= '<li class="li_active">';
					$temp_menu .= '<a href="'.$link.'"'.$redirect['target'].'>';
					$temp_menu .= html_specialchars($struct[$key]["acat_name"]);
					$temp_menu .= '</a>';
				} else {
					$temp_menu .= '<li class="li_inactive">';
					$temp_menu .= '<a href="'.$link.'"'.$redirect['target'].'>';
					$temp_menu .= html_specialchars($struct[$key]["acat_name"]);
					$temp_menu .= '</a>';
				}
				
				
				// leeren level wieder loeschen...
				
				$temp1_menu = "\n<ul>";
				$temp2_menu = "";
				$temp2_menu = build_levels_ul ($struct, $key, $temp_tree, $act_cat_id, $nav_table_struct, $count, $div, $link_to);
				if ($temp2_menu !="") {
					$temp1_menu .= $temp2_menu ."</ul></li>";
				}
				else {
					$temp1_menu = "</li>";
				}
				
				$temp_menu .= $temp1_menu;
				
			} else {
				$temp_menu .= '<li class="li_inactive">';
				$temp_menu .= '<a href="'.$link.'"'.$redirect['target'].'>';
				$temp_menu .= html_specialchars($struct[$key]["acat_name"]);
				$temp_menu .= '</a>';
				$temp_menu .= "</li>";
			}
		}
	}


	return $temp_menu;
}





// ------------------------------------------------------------- 
	// ---- NAV_LIST_SETLEVEL 
	$content["all"] = str_replace('{NAV_LIST_SETLEVEL}', '{NAV_LIST_SETLEVEL:0:0:0:1:0:levelsensitive}', $content["all"]);
	if( ! ( strpos($content["all"],'{NAV_LIST_SETLEVEL')===false ) ) {
		$replace = 'css_list_setlevel($content["struct"],$content["cat_id"],$content["cat_path"],"$1","$2","$3","$4","$5","$6")';
		$content["all"] = preg_replace('/\{NAV_LIST_SETLEVEL:(.*?):(.*?):(.*?):(.*?):(.*?):(.*?)\}/e', $replace, $content["all"]);
	}
	// ------------------------------------------------------------- 




// ------------------------------------------------------------- 
	// ---- NAV_TABLE_SETLEVEL 
	$content["all"] = str_replace('{NAV_TABLE_SETLEVEL}', '{NAV_TABLE_SETLEVEL:0:1}', $content["all"]);
	if( ! ( strpos($content["all"],'{NAV_TABLE_SETLEVEL')===false ) ) {
		$replace = 'set_level_tab($content["struct"],intval($content["cat_id"]),$template_default["nav_table_struct"],"$1","$2");';
		$content["all"] = preg_replace('/\{NAV_TABLE_SETLEVEL:(.*?):(.*?)\}/e', $replace, $content["all"]);
	}
	// ------------------------------------------------------------- 
// ------------------------------------------------------------- 

// ------------------------------------------------------------- 
	// ---- NAV_UL_SETLEVEL 
	$content["all"] = str_replace('{NAV_UL_SETLEVEL}', '{NAV_TABLE_SETLEVEL:0:1}', $content["all"]);
	if( ! ( strpos($content["all"],'{NAV_UL_SETLEVEL')===false ) ) {
		$replace = 'set_level_ul($content["struct"],intval($content["cat_id"]),$template_default["nav_table_struct"],"$1","$2");';
		$content["all"] = preg_replace('/\{NAV_UL_SETLEVEL:(.*?):(.*?)\}/e', $replace, $content["all"]);
	}
	// ------------------------------------------------------------- 
// ------------------------------------------------------------- 




// ---- FIN. have fun. usta. ---- 
?>

[/code]
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Hallo Leute,
erstmal ein dickes Dankeschön für euer Bemühen!

Ich werde beide Varianten austesten und dann berichten. :)

Bis gleich,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:35, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

So, nun habe ich mal über beides drübergesehen.

@nekket:
Ich glaube, du hast mich nicht richtig verstanden. Vielleicht habe ich mich auch nicht verständlich genug ausgedrückt, daher versuche ich nochmals zu formulieren, was mein Problem ist:
Ich habe ein horizontales Hauptmenü ("Home | About | Produkte" etc.) und ein vertikales Untermenü, das nur bedingt angeziegt werden soll.

Im Hauptpunkt "Produkte" bspw. gibt es Untermenüpunkte ("Produkt 1", "Produkt 2" etc.), das Untermenü muss also eingeblendet werden.
Im Punkt "Home" aber gibt es keine Unterpunkte, das Untermenü darf nicht angezeigt werden.

Was ich nun konkret benötige, ist eine Abfrage: "if UnterpunkteVorhanden { ... }". Das ist alles was mich glücklich macht!
Dein Code hingegen fragt nur ab, welche Kategorie gerade aktiv ist - nicht aber, ob Unterpunkte in der aktuellen Kategorie vorhaden sind oder nicht.


@betabi:
Der Codeschnipsel ("Schnipsel" ist leicht untertrieben :D) hat das was ich brauche, und zwar:

Code: Select all

if ($shown_level_key > $param_tab_level_value) ...
Die Frage ist nun,
(a) wie funktioniert das konkret und
(b) wie baue ich das in meine Vorlage ein (den phpwcms-Code will ich möglichst nicht hacken)?


Ich hoffe, ihr wisst weiter!

Grüße,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:35, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
User avatar
nekket
Posts: 613
Joined: Tue 18. Nov 2003, 15:46
Location: Baden-Baden
Contact:

Post by nekket »

Marphy wrote: Dein Code hingegen fragt nur ab, welche Kategorie gerade aktiv ist - nicht aber, ob Unterpunkte in der aktuellen Kategorie vorhaden sind oder nicht.
Richtig, aber damit kommst du zum Ziel - auch wenn man es eben manuell auf die Punkte deiner horizontalen Navigation anpassen muss.
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
Marphy
Posts: 14
Joined: Wed 16. May 2007, 15:29

Post by Marphy »

Hi Nekket,
ja, du hast Recht - manuelles Abfragen wäre aber nur eine, sagen wir mal, Notlösung. Der Sinn eines CMS ist ja Änderungen am Inhalt der Seite ohne Änderungen am Code machen zu können - und der kommt bei dieser Variante ein wenig abhanden.

Wenn wir hier nicht mehr weiterkommen, werde ich wohl dennoch nicht drumherumkommen. Aber ich bleibe optimistisch... :wink:

Grüße,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:36, edited 1 time in total.
:arrow: Nicht verzagen -- dumpVar() fragen! :idea:
User avatar
nekket
Posts: 613
Joined: Tue 18. Nov 2003, 15:46
Location: Baden-Baden
Contact:

Post by nekket »

@ Marphy: ja da stimme ich dir zu - bei ner horizontalen Navigation hab ich aber die Erfahrung gemacht, dass es kaum Ergänzungen gibt (Seitenbreite ist idR begrenzt).

Aber sauberer ist es auf jedenfall wie du es anpeilst - interessiert mich auch wie die Lösung dazu aussieht.
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
betabi
Posts: 26
Joined: Thu 23. Jun 2005, 17:28
Location: Hamburg
Contact:

Post by betabi »

Marphy wrote: Die Frage ist nun,
(a) wie funktioniert das konkret und
(b) wie baue ich das in meine Vorlage ein (den phpwcms-Code will ich möglichst nicht hacken)?
Du brauchst nichts zu hacken - das ganze funktioniert als Replacementtag...
Alle Details zum ursprünglichen Replacementtag findest Du unter:
http://www.phpwcms.de/forum/viewtopic.php?t=8479

--> Letztendlich sicherst Du den von mir geposteten Code-Schnipsel unter "deinname.php" im ordner "templates" -> "inc_scripts" -> "frontend_render".
Dann fügst Du in Deinem Template den Replacementtag ein:
{NAV_UL_SETLEVEL:0:1}
Syntax:
# :0 set wich level to display (>= 0)
# :1 autohide? (1: yes - recommended, 0:no)

Achte darauf, dass in Deiner config_ini frontend render scripte erlaubt sind...

Das war es.
Viel Glück dabei.
Post Reply