CSS/List based version of NAV_TABLE_COLUMN
Posted: Tue 6. Apr 2004, 01:45
Hello. I just started using phpwcms and am trying to make it completely CSS based (XHTML-Strict). I implemented my own <ul> version of the NAV_COLUMN_TABLE by simply editing the functions a bit and renaming them. NAV_LIST_CURRENT and NAV_LIST_TOP just didn't do it for me. I hope that someone can use this.
The tag {NAV_LIST_ALL} will be replaced with something like this:
where the classes represent the depth level of the menu. you can then edit your CSS to make it look how you want without all the tables.
Modifications:
add this to include/inc_front/front.func.inc.php
and this to include/inc_front/content.func.inc.php
David
The tag {NAV_LIST_ALL} will be replaced with something like this:
Code: Select all
<ul class="navList"><li class="MenuItem_lvl_1"><a href="index.php?category1">Category1</a></li>
<li class="MenuItem_lvl_1" id="activeSection"><a href="index.php?category2">Category2</a></li>
<li class="MenuItem_lvl_2"><a href="index.php?category2subcategory1">SubCategory1</a></li>
<li class="MenuItem_lvl_1"><a href="index.php?category3">Category3</a></li>
</ul>
Modifications:
add this to include/inc_front/front.func.inc.php
Code: Select all
// -------------------------------------------------------------
function css_list_all ($struct, $act_cat_id, $level, $nav_table_struct, $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
$level = intval($level);
$start_id = $act_cat_id;
while ($start_id) {
$data[$start_id] = 1;
$start_id = $struct[$start_id]["acat_struct"];
}
$temp_tree = (sizeof($data)) ? array_reverse($data, 1) : false;
foreach($struct as $key => $value) {
if($struct[$key]["acat_struct"] == $act_cat_id && $key && !$struct[$key]["acat_hidden"]) $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++;
}
$temp_menu = build_levels_list ($struct, $level, $temp_tree, $act_cat_id, $nav_table_struct, $level_depth, $c, $link_to); //starts at root level
return ($temp_menu) ? ("\n<ul class=\"navList\">".$temp_menu."</ul>\n") : "";
}
// -------------------------------------------------------------
function build_levels_list ($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
$depth = sizeof($temp_tree)-$div; $count++; $depth2 = $depth-$count+2;
$temp_menu = "";
foreach($struct as $key => $value) {
if($_SESSION["frontend_user_in"] && $struct[$key]["acat_regonly"]) $struct[$key]["acat_regonly"] = 0;
if($struct[$key]["acat_struct"] == $level && $key && !$struct[$key]["acat_hidden"] && !$struct[$key]["acat_regonly"]) {
$link_image_id = "linkid".randpassword(6);
$link_name_id = ' name="'.$link_image_id.'" id="'.$link_image_id.'"';
$link = $link_to."?";
$link .= ($struct[$key]["acat_alias"]) ? html_specialchars($struct[$key]["acat_alias"]) : 'id='.$key.',0,0,1,0,0';
if($temp_tree[$key]) {
if($act_cat_id == $key) {
$temp_menu .= "<li class=\"MenuItem_lvl_".$count."\" id=\"activeSection\"><a href=\"".$link."\">".html_specialchars($struct[$key]["acat_name"])."</a></li>\n";
} else {
$temp_menu .= "<li class=\"MenuItem_lvl_".$count."\"><a href=\"".$link."\">".html_specialchars($struct[$key]["acat_name"])."</a></li>\n";
}
$temp_menu .= build_levels_list ($struct, $key, $temp_tree, $act_cat_id, $nav_table_struct, $count, $div, $link_to);
} else {
$temp_menu .= "<li class=\"MenuItem_lvl_".$count."\"><a href=\"".$link."\">".html_specialchars($struct[$key]["acat_name"])."</a></li>\n";
}
}
}
return $temp_menu;
}
Code: Select all
// -------------------------------------------------------------
// <ul>-list based Navigation table
if( ! ( strpos($content["all"],'{NAV_LIST_ALL')==false ) ) {
$content["all"] = str_replace('{NAV_LIST_ALL}','{NAV_LIST_ALL:0}',$content["all"]);
$replace = 'css_list_all($content["struct"],intval($content["cat_id"]),"$1",$template_default["nav_table_struct"]);';
$content["all"] = preg_replace('/\{NAV_LIST_ALL:(\d+)\}/e', $replace, $content["all"]);
}