今天我们正在为新的主机控制面板界面制作文件管理器脚本,我们希望制作用户可以点击的面包屑返回到它之前的路径。到目前为止,他们出现了这样的
我认为看起来不错。前三个链接是静态的,永远不会更改,并且用户越远离/home
越远,链接添加到面包屑的次数越多。现在,如果你在我们这里的目录/home/www/usr/
,那么网址看起来像这样:
/filemanager.php?do=browse&dir=www/usr
然后我们在由/分隔的所有项之间展开$_GET['dir']
并将它们添加到数组中。然后我们遍历数组,foreach
我们将<li>$i</li>
打印到面包屑区域。
现在的问题是,我们如何让菜单中每个项目的链接保留其父文件夹和/如果有?当用户在此示例中点击www
时,它会起作用,因为它与名称相同,但任何子li
都需要www /添加到前端,以及任何其他父项。有点难过。
这是我们正在使用的LI添加流程:
if(isset($_GET['dir']) && !empty($_GET['dir'])) {
$breadcrumb_list = array();
$breadcrumb_list = explode("/", $_GET['dir']);
echo "<li><a href=\"filemanager?do=browse\">Home</a></li>\n";
foreach($breadcrumb_list as $i) {
echo "<li><a href=\"filemanager?do=browse&dir={$i}\">{$i}</a></li>\n";
}
}
任何和所有帮助将不胜感激!谢谢你们!
答案 0 :(得分:1)
在foreach
循环之前创建新变量,例如
$path = '';
然后在每次迭代中添加路径的当前部分:
$path .= '/'.$i;
所以它看起来像那样:
$path = '';
foreach($breadcrumb_list as $i) {
$path .= '/'.$i;
echo "<li><a href=\"filemanager?do=browse&dir={$path}\">{$i}</a></li>\n";
}