PHP Recursive Directory Menu
I think similar questions have been asked before, but I can't quite wrap my head around whether what I want to do is logicaly possible. I currently use DDSmoothMenu on our intranet
Solution 1:
A recursive solution could look something like:
function createMenuHTML($dir){
$html = "";
if(is_dir($dir)){
//Directory - add sub menu
$html .= "<li><a href='#'>Sub Menu Name</a><ul>";
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$html .= createMenuHTML($dir.$file);
}
closedir($dh);
}
$html .= "</ul>"
}else{
//File so just add list item
$html .= "<li><a href='#'>".basename($dir)."</a></li>"
}
return $html;
}
This is entirely untested but should hopefully help.
Solution 2:
The easier way is use trees. I recommendNested model You can check current and perv lvl of item.
Solution 3:
Ok, so here is what I ended up with thanks to Jim's example code:
function createMenu($dir) {
if(is_dir($dir)) {
echo "<li><a href='#'>".basename($dir)."</a><ul>";
foreach(glob("$dir/*") as $path) {
createMenuHTML($path);
}
echo "</ul></li>";
}
else {
$extension = pathinfo($dir);
$extension = $extension['extension'];
echo "<li><a href='$dir'>".basename($dir, ".".$extension)."</a></li>";
}
}
createMenu("/public/Documents");
Works like an absolute charm for my DDSMoothMenu, and I can be as general or as granular as I want when using the function to create the menu.
I will mark this as the answer, but Jim gave me the best starting point possible code wise!
Post a Comment for "PHP Recursive Directory Menu"