2011-02-05 18 views
1

PHPで動的ナビゲーションを実装するにはどうすればよいですか?PHPの動的ナビゲーション

たとえば

ホーム|約|連絡先| faq |チュートリアル

多くのスクリプトを使わずに、各ページに動的にリンクを自動的に生成する必要があります。たとえば、手動でリンクを入力しなくても、すべてのリンクを保持する必要がありますか?

答えて

6

は:

<?php 
$pages = array(
    'index.php' => 'Home', 
    'about.php' => 'About', 
    'contact.php' => 'Contact', 
    'faq.php' => 'FAQ', 
    'tutorials.php' => 'Tutorials', 
) ; 

$currentPage = basename($_SERVER['REQUEST_URI']) ; 

?> 

<div id="menu"> 
    <ul id="menuList"> 
     <?php foreach ($pages as $filename => $pageTitle) { 
      if ($filename == $currentPage) { ?> 
     <li class="current"><?php echo $pageTitle ; ?></li> 
      <?php } else { ?> 
     <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li> 
      <?php 
      } //if 
     } //foreach 
      ?> 
    </ul> 
</div> 

は、独自のファイルでこれを入れて、含まれ、その後menu.phpを言うと、それは各ページにあります。 CSSを使用してstyle your menuにすることができます。

+0

私は自分のスタイルでこれをすでに行っていますが、各サブディレクトリについては、私は深く掘り下げています。私はまだ各ページをループしてテストしなければなりません。私は通常xamppに問題があります。このためには仮想サブドメインを作成する必要があります – Smith

+0

@Ogheneroあなたは明確なリストを持たない複数のサブディレクトリに複数のファイルがあり、ファイルシステムを動的に探索してそれらを見つけるスクリプトが必要ですか? – Fanis

+0

@Fanis * "@ Sebastian Pが提供したリンクされた質問を調べることができます。" - 別の質問で可能な重複を投稿した人からこのQ&Aを見つけました。コメントのリンクされたページは、(当時の)司会者によって削除されました。あなたがそれを知りたいと思っていると思っていて、あなたがそれについてあなたの答えを更新したいのであれば。 –

0

すべてのページにメニューファイルを含めると思われるようです。 include()を使用できます。すべてのページで

<html> 
    <body> 
    <?php include('navigation.php'); ?> 

    Contents of this page here... 

    </body> 
</html> 

そしてnavigation.php中:あなたは、すべてのページのために一度だけあなたのナビゲーションメニューを更新することができ

<div id="mainmenu"> 
    <a href="home.php">Home</a> | <a href="about.php">About</a> | etc... 
</div> 

この方法です。あなたはどれだけこのことについて、あなたの現在のコードを再設計することなく、ページの既知のセットのためのメニューを表示したい場合は

2

私は少しでも単純な場合でも最初の解決策に同意します。私にとっては、ウェブサイトをいくつかのスクリプトに分割して、2番目のソリューションのようなナビゲーションスクリプトを含める必要があります。

実際にダイナミックナビゲーションを作成する場合は、データをファイルに書き込むことはできず、データベースまたはXMLファイルに保存されています。 これを行うには、クラスを作成する必要があります。あなたのデータを解析し、最初の解決策のような配列を作成する関数。

/* header.php (main header template)*/ 
<html> 
<head> 
... 
</head> 
<body> 
    <div id="mainMenu"> 
      <?php echo Navigation::getNav($databaseCnx);?> 
    </div> 

、あなたが

<?php 
class Navigation{ 
    static function getNav($cnx){ 
     $menuList = '<ul>'; 
     $dataFromDataBase = $cnx->getArray('MySqlRequest'); 

     foreach($dataFromDataBase as $menu) { 
       $menuList .='<li><a href="'.$menu->uri.'">'.$menu->name.'</a></li>'; 
     } 

     $menuList .= '</ul>'; 

     return $menuList; 
    } 
} 

データを管理するクラスを作成する必要が別のスクリプトに私はそれが速く書くが、私は、動的メニューを作成するためのヒントを探していくつかの人を助けることができると思います。

関連する問題