Как сделать навигацию в php

Прочитав эту статью, вы узнаете, как создавать навигацию для сайта на PHP и получите подробный пример реализации.

Простую навигацию можно реализовать с помощью HTML и PHP. Для этого нужно определить структуру страницы, начиная с файла index.php. Он будет содержать основную разметку HTML и подключение файла с навигацией. Файл навигации может выглядеть так:

<?php
  // Файл навигации
  $pages = array(
    'index.php' => 'Главная',
    'about.php' => 'О нас',
    'contact.php' => 'Контакты'
  );
?>

Здесь мы создали массив страниц и их заголовков. Теперь нужно вывести навигацию на страницу. Это можно сделать с помощью цикла:

<ul>
  <?php
    foreach($pages as $url=>$title) {
      echo '<li><a href="'.$url.'">'.$title.'</a></li>';
    }
  ?>
</ul>

Теперь мы вывели на страницу простое меню. Чтобы сделать активным текущий пункт меню, мы можем использовать следующий код:

<ul>
  <?php
    foreach($pages as $url=>$title) {
      $active = ($url == basename($_SERVER['PHP_SELF'])) ? ' class="active"': '';
      echo '<li'.$active.'><a href="'.$url.'">'.$title.'</a></li>';
    }
  ?>
</ul>

В этом коде мы проверяем, соответствует ли текущий URL файлу, и добавляем атрибут class="active", если они совпадают. Добавленный атрибут можно использовать для применения стилей к активному пункту меню.

Пример использования нескольких уровней навигации

Если вам нужна навигация на нескольких уровнях, вы можете использовать вложенные массивы. Например:

<?php
  // Файл навигации
  $pages = array(
    'index.php' => 'Главная',
    'about.php' => 'О нас',
    'contact.php' => 'Контакты',
    'products' => array(
      'index.php' => 'Каталог товаров',
      'product1.php' => 'Товар 1',
      'product2.php' => 'Товар 2',
      'product3.php' => 'Товар 3'
    )
  );
?>

Теперь мы можем вывести навигацию с помощью рекурсивной функции:

<ul>
  <?php
    // Вывод навигации
    function showNav($pages) {
      foreach($pages as $url=>$title) {
        // Если переменная $title является массивом, то это вложенный уровень меню
        if(is_array($title)) {
          echo '<ul>';
          showNav($title);
          echo '</ul>';
        } else {
          $active = ($url == basename($_SERVER['PHP_SELF'])) ? ' class="active"': '';
          echo '<li'.$active.'><a href="'.$url.'">'.$title.'</a></li>';
        }
      }
    }
    showNav($pages);
  ?>
</ul>

Этот код проверяет, является ли заголовок страницы массивом. Если да, то он вызывает функцию showNav() для вывода вложенного уровня меню. Таким образом, мы можем реализовать более сложную навигацию с несколькими уровнями.

Ответы (1)

В
Владимир более месяца назад
Я бы подчеркнул, что для создания простой навигации можно использовать другие языки программирования, например JavaScript, и применить паттерн Model-View-Controller. Также можно добавить информацию о том, как можно использовать библиотеки для создания навигации, такие как Bootstrap или jQuery UI.