PHP: Меню навигации по каталогу - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть вопрос, на который я не смог найти ответ / сценарий.Я только учусь использовать PHP.Я использую Perch в качестве CMS и до сих пор отлично работал.

Я столкнулся с проблемой при добавлении новых страниц.Я хочу, чтобы PHP мог создавать динамическое меню навигации только для этой директории.

Например, у меня есть три страницы в моем каталоге about.

root /about /index.php - page2.php - page3.php

Я хочу вывести боковое навигационное меню, основываясь только накаталог.

Home - Page2 - Page3

И когда клиент / пользователь создает новую страницу, он автоматически добавляет ее в список.Итак ...

root /about /index.php - page2.php - page3.php - newPage.php

... создает ...

Home - Page2 - Page3 - New Page

Может кто-нибудь указать мне направлениеСценарий или помочь мне начать?

Спасибо!

Ответы [ 3 ]

1 голос
/ 18 февраля 2011

Существует довольно много php-функций для перебора каталогов. Я думаю, что самым чистым является использование итератора каталогов PHP SPL (стандартная библиотека PHP).

http://www.php.net/manual/en/class.directoryiterator.php

$dir = new DirectoryIterator('about');
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        // Can make the link here
        echo $fileinfo->getFilename();
    }
}

Преимущество в том, что вам доступно множество функций класса.

Если вам нужно больше, чем имя файла, вы можете использовать:

  • getPathname()
  • getPath()
  • getBasename()
  • isDir()

И так далее ... см. Документы для всех возможностей.

0 голосов
/ 18 февраля 2011

Конечно, можно.Я использую этот метод, чтобы найти все файлы в каталоге и добавить имя и расширение файла в массив.Используя магию цикла while, я могу сделать что-то для каждого файла.

$files = scandir('directory/of/files/');

Это создаст новый массив с именем $ files.Вы можете использовать время или для каждого цикла.В этом случае я использую каждый из них, поскольку он самый простой.

foreach ($files as $value)
{
  $file = explode('.',$value); // Explode splits a variable by whatever

Теперь, когда у вас есть файлы и их фактическое имя, вы можете добавить их в свою навигацию.Я бы добавил имя файла в переменную.

  $navigation .= $file['0']; // Adds the file's name to the navigation variable
}

Вы можете обернуть $file['0'] в <span> или <li> и добавить соответствующий стиль для вашей навигации.Я рекомендую поискать в Google несколько необычных примеров навигации.Я использую неупорядоченные списки и просто стилизую их с помощью CSS.

Поиграйтесь с циклом foreach и стилем, чтобы получить идеальную навигацию;)

0 голосов
/ 18 февраля 2011
foreach (glob('*.php') as $filename) {
    echo $filename; //Make menu item here
}

Однако вам, вероятно, не следует создавать меню на основе вашей файловой системы. Я предлагаю вам использовать шаблонизатор, например Smarty .

...