webForumDet fria alternativet
Logga in / Bli medlem

HTML_TreeMenu-1.1.9 för att lista en katalog

PHP

3 svar · 219 visningar · startad av greyhound

Medlem sedan maj 20031 472 inlägg
Trådstart#1

Jag tänkte använda HTML_TreeMenu-1.1.9 för att bygga upp en katalogstruktur. Problemet jag har är bara att komma på hur jag ska kunna bygga upp menyn.

Någon som har nått bra sätt att lista alla kataloger som finns under en viss katalog. Alltså även dom kataloger som ligger under en annan katalog.

Hoppas någon fattar vad jag menar. :)

Medlem sedan aug. 20002 975 inlägg
#2

Ta en titt på readdir() i manualen.
I Example 2 har du ett bra exempel på hur man kan lista en katalog.

Detta kan du sedan kombinera med is_dir() och is_file().

Medlem sedan maj 20031 472 inlägg
#3

Jo så långt hade jag kommit innan också. Jag har hittat info på nätet om hur man kunde lista kataloger i kataloger så att säga. Just nu håller jag bara på med att lära mig hur jag ska bygga en meny av resultatet.

function recursive_listdir($base) {
  static $dirlist = array();
  if(is_dir($base)) {
    $dh = opendir($base);
    while (false !== ($dir = readdir($dh))) {
      if (is_dir($base ."/". $dir) && $dir !== '.' && $dir !== '..') {
        $subbase = $base ."/". $dir;
        $dirlist[] = $subbase;
        $subdirlist = recursive_listdir($subbase);
      }
    }
    closedir($dh);
  }
  return $dirlist;
}
Medlem sedan maj 20031 472 inlägg
#4

Så här blev det:

$menu  = new HTML_TreeMenu();
$tmpArray = recursive_listdir("/home/httpd/data/");
$tmpNode = array();
usort($tmpArray, 'SortbyName');
foreach ($tmpArray as $val) {
  $tmpSplit = array();
  $tmpSplit = split("/", strstr($val[0], $Username));
  $tmpName = $tmpSplit[count($tmpSplit) - 1];
  if (array_key_exists($tmpSplit[count($tmpSplit) - 2], $tmpNode)) {
    $tmpNode[$tmpName] = &$tmpNode[$tmpSplit[count($tmpSplit) - 2]]->addItem(new HTML_TreeNode(array('text' => $tmpName, 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
  } else {
    $tmpNode[$tmpName] = new HTML_TreeNode(array('text' => $tmpName, 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon));
    $menu->addItem($tmpNode[$tmpName]);
    $last = $tmpName;
  }
}
$treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => 'images', 'defaultClass' => 'treeMenuDefault'));
$treeMenu->printMenu();
267 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)