2011-02-18 64 views
0

我有一个问题,我一直未能找到答案/脚本。我只是学习使用PHP。我使用Perch作为CMS,并且迄今为止进展顺利。PHP:目录导航菜单

当谈到加入新的页面我碰到一个障碍。我希望PHP能做的事情是能够为该目录创建一个动态导航菜单。

例如,我在我的“关于”目录三页。

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

任何人都可以点我到一个脚本的方向,或者帮助我开始吗?

谢谢!

回答

1

有很多php函数可以遍历目录。我认为最干净的是使用PHP SPL(标准PHP库)的Directory Iterator。

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

感谢您的评论!我确信从这里开始,我可以弄明白。非常感谢! – 2011-02-18 13:08:04

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

但是,你可能不应该创建一个基于你的文件系统的菜单。我建议你使用模板引擎,如Smarty

+0

感谢arex的回答,同样,感谢Smarty的指导,我会仔细研究它。 =) – 2011-02-18 13:12:56

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 
} 

你可以用在<span><li>$file['0'],并添加适当的造型为您导航。我建议在Google上搜索一些奇特的导航示例。我使用无序列表,只用CSS来设计它们。

玩弄foreach循环和造型,以获得完美的导航;)

+0

你需要考虑'。'和'..' – Jacob 2011-02-18 04:02:37