PHP:目录导航菜单

时间:2011-02-18 03:30:49

标签: php content-management-system directory navigation

我有一个问题,我无法找到答案/脚本。我只是学习使用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 个答案:

答案 0 :(得分:1)

有很多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()

依此类推......查看所有可能性的文档。

答案 1 :(得分:0)

foreach (glob('*.php') as $filename) {
    echo $filename; //Make menu item here
}

但是,您可能不应该根据文件系统创建菜单。我建议您使用模板引擎,例如Smarty

答案 2 :(得分:0)

当然可以。我使用此方法查找目录中的所有文件,并将文件的名称和扩展名添加到数组中。通过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循环和样式来获得完美的导航;)

相关问题