PHP实例:用PHP实现windows风格的树型菜单

以下是一个风格类似windows资源管理器的树型菜单,将下面的脚本包含到你的页面中,另外需要从资源管理器中截取一些gif图片,祥见脚本中的注释,菜单结构文件的格式为:

tree level|item text|item link|link target|last item in subtree

例如

以下为引用的内容:

.<b>Demo menu</b>|javascript: alert('This is the demo menu for TreeMenu 1.0');
..<b>目录1</b>
...<b>子目录 1.1</b>
....item 1.1.1|javascript: alert('Item 1.1.1');
....item 1.1.2|javascript: alert('Item 1.1.1');
...item 1.2|javascript: alert('Item 1.2');
...item 1.3|javascript: alert('Item 1.3');
..<b>子目录 2</b>
...item 2.1|javascript: alert('Item 2.1');
...item 2.2|javascript: alert('Item 2.2');
...<b>子目录 2.3</b>
....item 2.3.1|javascript: alert('Item 2.3.1');
....item 2.3.2|javascript: alert('Item 2.3.2');
<?php
// file:tremenu.inc
// PHP TreeMenu
/////////////////
// 初始化 //
/////////////////

$treefile = "demomenu.txt";//设置有菜单结构的文件

if(isset($PATH_INFO))
$script = $PATH_INFO;
else
$script = $SCRIPT_NAME;

//以下图片可截取windows资源管理器中的相应位置的图

$img_expand = "tree_expand.gif";//形如资源管理器中可扩展节点+
$img_collapse = "tree_collapse.gif";//形如资源管理器中已扩展节点-
$img_line = "tree_vertline.gif";//形如|
$img_split = "tree_split.gif";//形如|-
$img_end = "tree_end.gif";//形如L
$img_leaf = "tree_leaf.gif";//形如o
$img_spc = "tree_space.gif";//空白图

//以下是菜单处理脚本

$maxlevel=0;
$cnt=0;

$fd = fopen($treefile, "r");
if ($fd==0) die("treemenu.inc : Unable to open file ".$treefile);
while ($buffer = fgets($fd, 4096))
{
$tree[$cnt][0]=strspn($buffer,".");
$tmp=rtrim(substr($buffer,$tree[$cnt][0]));
$node=explode("|",$tmp);
$tree[$cnt][1]=$node[0];
$tree[$cnt][2]=$node[1];
$tree[$cnt][3]=$node[2];
$tree[$cnt][4]=0;
if ($tree[$cnt][0] > $maxlevel) $maxlevel=$tree[$cnt][0];
$cnt++;
}
fclose($fd);

for ($i=0; $i<count($tree); $i++)
{
$expand[$i]=0;
$visible[$i]=0;
$levels[$i]=0;
}

if ($p!="")
$explevels = explode("|",$p);
$i=0;
while($i<count($explevels))
{
$expand[$explevels[$i]]=1;
$i++;
}

$lastlevel=$maxlevel;
for ($i=count($tree)-1; $i>=0; $i--)
{
if ( $tree[$i][0] < $lastlevel )
for ($j=$tree[$i][0]+1; $j <= $maxlevel; $j++)
$levels[$j]=0;
if ( $levels[$tree[$i][0]]==0 )
{
$levels[$tree[$i][0]]=1;
$tree[$i][4]=1;
}
else
$tree[$i][4]=0;
$lastlevel=$tree[$i][0];
}

for ($i=0; $i < count($tree); $i++)
if ($tree[$i][0]==1)
$visible[$i]=1;
for ($i=0; $i < count($explevels); $i++)
{
$n=$explevels[$i];
if ( ($visible[$n]==1) && ($expand[$n]==1) )
{
$j=$n+1;
while ( $tree[$j][0] > $tree[$n][0] )
{
if ($tree[$j][0]==$tree[$n][0]+1) $visible[$j]=1;
$j++;
}
}
}

for ($i=0; $i<$maxlevel; $i++)
$levels[$i]=1;

$maxlevel++;

echo "<table cellspacing=0 cellpadding=0 border=0 cols=".($maxlevel+3).">\n";
echo "<tr>";
for ($i=0; $i<$maxlevel; $i++)
echo "<td width=16></td>";
echo "<td width=100%> </td></tr>\n";
$cnt=0;
while ($cnt<count($tree))
{
if ($visible[$cnt])
{
echo "<tr>";
$i=0;
while ($i<$tree[$cnt][0]-1)
{
if ($levels[$i]==1)
echo "<td><a name='$cnt'></a><img src=\"".$img_line."\"></td>";
else
echo "<td><a name='$cnt'></a><img src=\"".$img_spc."\"></td>";
$i++;
}
if ($tree[$cnt][4]==1)
{
echo "<td><img src=\"".$img_end."\"></td>";
$levels[$tree[$cnt][0]-1]=0;
}
else
{
echo "<td><img src=\"".$img_split."\"></td>";
$levels[$tree[$cnt][0]-1]=1;
}

if ($tree[$cnt+1][0]>$tree[$cnt][0])
{

$i=0; $params="?p=";
while($i<count($expand))
{
if ( ($expand[$i]==1) && ($cnt!=$i) || ($expand[$i]==0 && $cnt==$i))
{
$params=$params.$i;
$params=$params."|";
}
$i++;
}

if ($expand[$cnt]==0)
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_expand."\" border=no></a></td>";
else
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_collapse."\" border=no></a></td>";
}
else
echo "<td><img src=\"".$img_leaf."\"></td>";

if ($tree[$cnt][2]=="")
echo "<td colspan=".($maxlevel-$tree[$cnt][0]).">".$tree[$cnt][1]."</td>";
else
echo "<td colspan=".($maxlevel-$tree[$cnt][0])."><a href=\"".$tree[$cnt][2]."\" target=\"".$tree[$cnt][3]."\">".$tree[$cnt][1]."</a></td>";
echo "</tr>\n";
}
$cnt++;
}
echo "</table>\n";
?>

时间: 2024-10-30 11:50:41

PHP实例:用PHP实现windows风格的树型菜单的相关文章

用PHP实现windows资源管理器风格的树型菜单

window|菜单 以下是一个风格类似windows资源管理器的树型菜单 将下面的脚本包含到你的页面中 另外需要从资源管理器中截取一些gif图片,祥见脚本中的注释 菜单结构文件的格式为: tree level|item text|item link|link target|last item in subtree 例如 .<b>Demo menu</b>|javascript: alert('This is the demo menu for TreeMenu 1.0'); ..&

Windows 8实例教程系列 - 自定义应用风格

原文:Windows 8实例教程系列 - 自定义应用风格 在Windows 8 XAML实例教程中,曾经提及过应用风格设计方法以及如何创建可复用样式代码.本篇将深入讨论如何创建自定义Windows8应用风格. 随着计算机硬件性能的提升,用户对于软件应用的体验性要求越来越高,而应用的风格设计也成为衡量应用成功与否的一个标准. 模板样式基础 在XAML实例教程中曾介绍过,Windows8样式应用可以根据应用范围不同进行分类, 1. 局部资源(Page Resources),该样式模板代码位于当前页面

js实现仿Windows风格选项卡和按钮效果实例_javascript技巧

本文实例讲述了js实现仿Windows风格选项卡和按钮效果的方法.分享给大家供大家参考.具体实现方法如下: <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <style type="text/css"> <!-- body{ font-family: 'MS Shell Dl

js实现仿Windows风格选项卡和按钮效果

  本文实例讲述了js实现仿Windows风格选项卡和按钮效果的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

CSS实例教程:简单的button风格的UI按钮

文章简介:CSS实例教程:简单的button风格的UI按钮. button应该是UI库中最常用到的一种.我个人对google+的那种简单的button风格比较喜欢,因为那样在不同的浏览器下视觉差异不是很大.不过现在自己确实已经没有心思去琢磨怎么去弥补ie的不足,所以下面的东西就不要拿ie打开了.还是贴出代码吧 <!DOCTYPE html> <html> <head>                        <title></title> 

C#获取远程计算机硬件信息实例(支持linux和windows)

原文:C#获取远程计算机硬件信息实例(支持linux和windows) 网上关于WMI的资料很多,但一直没有比较全的属性介绍.今天通过反射把所有属性都给弄出来了.   关于WMI的代码就不多说了.   需要手动添加引用:System.Management          /// <summary>        /// 获取查询队列        ///         /// </summary>        /// <param name="ip"

jQuery实现的超酷苹果风格图标滑出菜单效果代码_jquery

本文实例讲述了jQuery实现的超酷苹果风格图标滑出菜单效果代码.分享给大家供大家参考.具体如下: 这是一款超酷苹果风格图标滑出菜单,调用了jquery1.3.2的库文件,整个菜单动感十足,用在网站上增色不少. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-apple-style-ico-show-menu-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

windows系统任务栏及右键菜单如何进行设置管理

  在windows操作系统中任务栏的使用给我们带来便利,而我们平常也可以自定义对任务栏相关设置,让我们达到更加习惯的操作效果,本文主要介绍的也是win7 64位旗舰版任务栏左下角工具按钮图标的功能设置.任务里菜单属性调节和文件右键菜单设置管理教程,希望对大家有用. 1.对于的电脑任务栏设置,首先要找到左下角的工具按钮图标,直接打开找到需要的功能. 2.任务栏快捷页面打开之后,就能够根据自己的需求找到使用的功能,然后直接使用. 3.想要设置任务栏,就可以找到控制面板,点击进入外观和个性化页面.

将Windows Defender添加到右键菜单的方法教程

  熟悉Windows Defender的用户都知道,Windows Defender不仅是一款简单的防间谍软件,同时该软件也是非常强大的windows系统杀毒软件,软件主要分为完全扫描.快速扫描.自定义扫描以及自动实时监控功能,用户在win10系统下安装该软件后,系统就无需再安装第三方杀毒软件了,不过有部分用户向将Windows Defender添加到右键菜单中,方便对指定文件进行查杀,故此小编为大家带来了Windows Defender扫描选项添加到Win10右键菜单中方法,有需要的用户不妨