2010-10-11 3 views
0

Я создаю мета-окно wordpress, и мне нужно отсканировать каталог подкаталогов, содержащих изображения в моем шаблоне, и добавить их в раскрывающийся список выбора, чтобы я мог использовать имя файла в моем шаблоне.Создайте выпадающий список из дерева файлов изображений и подкаталогов с помощью PHP

Изображения в настоящее время расположены в папке, как это:

Родительская папка
| _ Secondary Папка
      | _ image.png
      | _ Image.jpg
      | _ Image.gif
| _ Вторичная папка
      | _ image.png
      | _ Image.jpg
      | _ Image.gif

В идеале я хотел бы сохранить эту структуру в моем выборе выпадающего то есть.

Вторичная папка.
      | _ image.png

Я использую это:

function get_dir_path(){ 
    return dirname(__FILE__).'/library/images'; 
} 
$largeImagesdir = get_dir_path() . '/960x345/'; 


    if ($dh = opendir($largeImagesdir)) { 
     while (($file = readdir($dh)) !== false) { 
      $lfiles .= '<option>' . $file . '</option>'; 
     } 
     closedir($dh); 
    } 

    $buildbox .= '<select>' . $lfiles . '</select>'; 

Однако это, конечно, работает только тогда, когда я устанавливаю вар $ largeImagesdir быть один из подкаталогов .. .

Может ли кто-нибудь помочь?

ответ

0

Вам нужна петля внутри петли. Предполагая, что только 2 уровня каталогов, в вашем while проверьте, является ли $file подкаталогом с is_dir(), и если да, то сделайте readdir(), чтобы получить его параметры.

Тогда вы можете выделить подкаталоги на optgroup в своем элементе <select>.

Если вам нужно несколько разных уровней подкаталогов, вам понадобится рекурсивная функция, чтобы позаботиться об этом. Хорошей отправной точкой является показанная here.

+0

Если его более чем один уровень, также может быть кодом для общего случая и сделать его рекурсивным. – Chris

+0

@ Крис, абсолютно, я просто стараюсь, чтобы Ким легко справился с проблемой с конкретным вариантом использования. Я предоставил ссылку с готовым кодом для общего случая, когда она готова к этому. – Fanis

+0

Спасибо, ребята, да, я сначала попробую самый простой метод, а затем посмотрю на общий случай тоже :) – Kim