Untermenü nur bedingt anzeigen [solved]
Untermenü nur bedingt anzeigen [solved]
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
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.
Nicht verzagen -- dumpVar() fragen!
Hi Marphy,
ich denke hier wirst du fündig: http://www.phpwcms.de/forum/viewtopic.php?p=89626#89626
Knut
ich denke hier wirst du fündig: http://www.phpwcms.de/forum/viewtopic.php?p=89626#89626
Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Hallo Knut,
danke für den Link. Das ist aber leider nicht das, was ich gesucht habe - so mach ich das bisher ja auch:
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
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]
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.
Nicht verzagen -- dumpVar() fragen!
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
Soll ich evtl. im englisch-sprachigen Board nochmals fragen?
Danke euch,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:34, edited 1 time in total.
Nicht verzagen -- dumpVar() fragen!
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!
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.
Nicht verzagen -- dumpVar() fragen!
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.
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
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."}";
?>
Laufen tut das ganze hier: http://www.derkleineprinz.de
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
und - klappt das noch mit der 1.3.3?Marphy wrote:Keine Idee mehr?
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
Versuche es mal mit dem rt NAV_SETLEVEL
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]
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> </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%;"> </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. ----
?>
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:
@betabi:
Der Codeschnipsel ("Schnipsel" ist leicht untertrieben ) hat das was ich brauche, und zwar:
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
@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:
Dein Code hingegen fragt nur ab, welche Kategorie gerade aktiv ist - nicht aber, ob Unterpunkte in der aktuellen Kategorie vorhaden sind oder nicht.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!
@betabi:
Der Codeschnipsel ("Schnipsel" ist leicht untertrieben ) hat das was ich brauche, und zwar:
Code: Select all
if ($shown_level_key > $param_tab_level_value) ...
(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.
Nicht verzagen -- dumpVar() fragen!
Richtig, aber damit kommst du zum Ziel - auch wenn man es eben manuell auf die Punkte deiner horizontalen Navigation anpassen muss.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.
pixelpublic GmbH | Agentur für Neue Medien und Gestaltung
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...
Grüße,
Marco
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...
Grüße,
Marco
Last edited by Marphy on Mon 3. Sep 2007, 17:36, edited 1 time in total.
Nicht verzagen -- dumpVar() fragen!
@ 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.
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
Du brauchst nichts zu hacken - das ganze funktioniert als Replacementtag...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)?
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.