|
| Dynamisk PHP menu... Fra : dscoop80 | Vist : 375 gange 45 point Dato : 11-02-06 12:51 |
|
Hej alle.
Jeg har efter hånden i en uge nu prøvet og udvikle en dynamisk php-menu... det vil sige en menu som udelukket bliver bygget ud fra et array med id'er og relationer til sub-menuer/sub-sider osv. ... det er også lykkedes mig ret godt! MEN har nu 2 problemer... det første er at jeg ikke kan få sorteret menu/side ordentligt (stigende/faldende) ... det andet problem er at jeg ikke vil have at menuerne bliver vist 2 gange... håber nogen kan hjælpe! vedlægger koden her:
Kode <?php
// menu array
$my_array = array();
$sort = 16; $my_array[$sort]['id'] = 1; $my_array[$sort]['rel'] = ""; $my_array[$sort]['type'] = "menu"; $my_array[$sort]['order'] = $sort;
$sort = 1; $my_array[$sort]['id'] = 2; $my_array[$sort]['rel'] = ""; $my_array[$sort]['type'] = "menu"; $my_array[$sort]['order'] = $sort;
$sort = 18; $my_array[$sort]['id'] = 3; $my_array[$sort]['rel'] = 1; $my_array[$sort]['type'] = "menu"; $my_array[$sort]['order'] = $sort;
$sort = 11; $my_array[$sort]['id'] = 14; $my_array[$sort]['rel'] = 3; $my_array[$sort]['type'] = "menu"; $my_array[$sort]['order'] = $sort;
$sort = 21; $my_array[$sort]['id'] = 21; $my_array[$sort]['rel'] = 3; $my_array[$sort]['type'] = "menu"; $my_array[$sort]['order'] = $sort;
$sort = 6; $my_array[$sort]['id'] = 4; $my_array[$sort]['rel'] = 2; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 8; $my_array[$sort]['id'] = 5; $my_array[$sort]['rel'] = 2; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 3; $my_array[$sort]['id'] = 6; $my_array[$sort]['rel'] = 2; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 7; $my_array[$sort]['id'] = 7; $my_array[$sort]['rel'] = 2; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 5; $my_array[$sort]['id'] = 8; $my_array[$sort]['rel'] = 2; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 13; $my_array[$sort]['id'] = 9; $my_array[$sort]['rel'] = 3; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 14; $my_array[$sort]['id'] = 10; $my_array[$sort]['rel'] = 3; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 10; $my_array[$sort]['id'] = 11; $my_array[$sort]['rel'] = 14; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 9; $my_array[$sort]['id'] = 12; $my_array[$sort]['rel'] = 14; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 12; $my_array[$sort]['id'] = 13; $my_array[$sort]['rel'] = 14; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 15; $my_array[$sort]['id'] = 15; $my_array[$sort]['rel'] = ""; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 2; $my_array[$sort]['id'] = 16; $my_array[$sort]['rel'] = ""; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 17; $my_array[$sort]['id'] = 17; $my_array[$sort]['rel'] = ""; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 19; $my_array[$sort]['id'] = 18; $my_array[$sort]['rel'] = 1; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 20; $my_array[$sort]['id'] = 19; $my_array[$sort]['rel'] = 1; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 4; $my_array[$sort]['id'] = 20; $my_array[$sort]['rel'] = 1; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 22; $my_array[$sort]['id'] = 22; $my_array[$sort]['rel'] = 21; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 23; $my_array[$sort]['id'] = 23; $my_array[$sort]['rel'] = 21; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
$sort = 24; $my_array[$sort]['id'] = 24; $my_array[$sort]['rel'] = 21; $my_array[$sort]['type'] = "side"; $my_array[$sort]['order'] = $sort;
/* *************************************************************** */
function get_subs($id)
{
Global $my_array;
$new_array = array();
// henter alle relaterende sider
foreach($my_array as $key => $value)
{
if($value['rel'] == $id)
{
$new_array[$key] = $value;
}
}
return($new_array);
}
function menu($menu,$level_count,$test_array)
{
$level_count++;
// sortering ?
reset($menu);
ksort($menu);
if(!is_array($test_array))
{
// dette array skal sørge for menu'er/sider KUN blir vist én gang
$test_array = array();
}
foreach($menu as $key => $value)
{
if($value['type'] == "menu" AND count(get_subs($value['id'])) > 0 AND !in_array($value['rel'],$test_array))
{
echo "<div onclick=\"show_hide_menu('menu_ul_".$level_count."_".$value['id']."','".$level_count."','".$value['id']."')\" id=\"menu_div_".$level_count."_".$value['id']."\"><p class=\"headmenu\">menu: ".$value['id']." (level: ".$level_count." SORT: ".$value['order'].") klik her for og lukke denne menu...</p></div>\n";
echo "<ul id=\"menu_ul_".$level_count."_".$value['id']."\">\n";
// sortering ?
$my_subs = get_subs($value['id']);
reset($my_subs);
ksort($my_subs);
foreach($my_subs as $page_key => $page_value)
{
if($page_value['type'] == "menu")
{
menu(get_subs($page_value['rel']),$level_count,$test_array);
array_push($test_array,$page_value['rel']);
}
else
{
echo "<p class=\"subpage\">alm. side: ".$page_value['id']." (".$level_count." SORT: ".$page_value['order'].")</p>\n";
}
}
echo "</ul>";
}
}
}
?>
<html>
<head>
<style>
div,p,ul { font-family:arial; font-size:12px; font-weight:bold; }
div { cursor:hand; }
ul,p { margin:0; padding-left:20px; }
.hide_class { display:none; }
.show_class { display:block; }
.headmenu { color:blue; }
.headpage { color:red; }
.subpage { color:green; }
</style>
<script language="javascript">
function findPosX(obj)
{
var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;
return curleft;
}
function findPosY(obj)
{
var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}
function js_menu_expand(myid,levelcount)
{
if(myid && levelcount)
{
var slide_l,slide_t;
var browser = document.all;
var menu_div = 'menu_div_' + levelcount + '_' + myid;
var menu_ul = 'menu_ul_' + levelcount + '_' + myid;
var headmenu = 'headmenu_div';
menu_div = browser(menu_div);
menu_ul = browser(menu_ul);
headmenu = browser(headmenu);
/* **************************** MENU TEST 1 ********************************* */
/*
if(levelcount == 1)
{
slide_l = findPosX(document.all.headmenu_div) + headmenu.offsetWidth - 1;
slide_t = findPosY(document.all.headmenu_div) + menu_div.offsetTop - 6;
}
else
{
slide_l = menu_div.offsetWidth + (menu_div.offsetLeft * 2);
slide_t = menu_div.offsetTop - menu_div.offsetLeft - 1;
}
menu_ul.style.cssText = 'position:absolute; left:' + slide_l + 'px; top:' + slide_t + 'px; margin:0;';
*/
/* **************************** MENU TEST 2 ********************************* */
menu_ul.style.cssText = 'padding-left:30px; width:100%;';
/* ************************************************************************** */
}
}
function tildel_klasser(type,myclass)
{
var Nodes = document.getElementsByTagName(type)
var max = Nodes.length;
for(var i = 0;i < max;i++)
{
var nodeObj = Nodes.item(i)
nodeObj.className = myclass;
}
}
function show_hide_menu(ul_id,level,id)
{
var Nodes = document.getElementsByTagName('ul')
var max = Nodes.length;
for(var i = 0;i < max;i++)
{
var nodeObj = Nodes.item(i)
if(myclass == 'show_class')
{
if(nodeObj.id == ul_id)
{
if(nodeObj.className !== 'show_class')
{
js_menu_expand(id,level);
nodeObj.className = 'show_class';
}
else
{
nodeObj.className = 'hide_class';
}
}
else if(level == 1)
{
nodeObj.className = 'hide_class';
}
}
else if(myclass == 'hide_class')
{
if(nodeObj.id == ul_id)
{
if(nodeObj.className !== 'hide_class')
{
nodeObj.className = 'hide_class';
}
else
{
js_menu_expand(id,level);
nodeObj.className = 'show_class';
}
}
else if(level == 1)
{
nodeObj.className = 'hide_class';
}
}
}
}
/* *************************************************************************************** */
</script>
<script language="javascript">
var myclass = 'show_class'; /* vælger start-klasse til <UL> */
</script>
</head>
<body>
<table style="width:100%;height:100%;" cellpadding="0" cellspacing="0"><tr><td style="vertical-align:middle;text-align:center;">
<table cellpadding="0" cellspacing="0"><tr><td>
<?php
echo "<div id=\"headmenu_div\">\n";
echo menu($my_array,0,0);
echo "</div>";
?>
<script language="javascript">
tildel_klasser('ul',myclass);
</script>
</td></tr></table>
</td></tr></table>
</body>
</html> |
| |
| Du har følgende muligheder | |
|
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
| |
|
|