2011-02-18 62 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