2011-02-05 3 views
1

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

например

Главная | о компании | контакт | faq | tutorials

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

ответ

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, а затем включить это на каждой странице. Затем вы можете style your menu с CSS.

+0

Я уже делал это в своем собственном стиле, но для каждого подкаталога я углубляюсь, мне все равно нужно зацикливать и тестировать каждую страницу, и эта навигация зависит от хоста. У меня обычно возникают проблемы с xampp. вам нужно создать виртуальный поддомен для работы – Smith

+0

@Oghenero у вас есть несколько файлов в нескольких подкаталогах, для которых у вас нет определенного списка, и вам нужен сценарий для динамического изучения файловой системы и поиска их? – Fanis

+0

@Fanis * «Возможно, вы захотите изучить связанный вопрос, который @ Sebastian P предоставил» * - я нашел этот вопрос от кого-то, кто разместил возможный дубликат в другом вопросе. Эта связанная страница в комментариях была удалена модератором (затем). Просто подумал, что вы хотите это знать, и если вы хотите уточнить свой ответ в этом отношении. –

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

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

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

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

Смежные вопросы