динамическая навигация в php - PullRequest
1 голос
/ 05 февраля 2011

Как мне реализовать динамическую навигацию в php?

* 1003 например *

Главная | о | контакт | часто задаваемые вопросы | учебники

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

Ответы [ 3 ]

7 голосов
/ 05 февраля 2011

Если вы просто хотите отобразить меню для известного набора страниц без изменения архитектуры текущего кода, как это сделать:

<?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.

2 голосов
/ 24 ноября 2012

Я согласен с первым решением, даже если его немного проще.Для меня вы должны разделить свой веб-сайт на некоторый сценарий, в который вы включаете сценарий навигации, например, второе решение.

, но если вы действительно хотите создать динамическую навигацию, ваши данные нельзя записать в файл, ихранить в базе данных или в 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;
    }
}

Я пишу это быстро, но я надеюсь, что смогу помочь тем, кто ищет советы по созданию динамического меню.

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

Кажется, вы хотите включить файл меню во все ваши страницы.Вы можете использовать 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>

Таким образом вы можете обновить свое меню навигациитолько один раз для всех ваших страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...