Как сделать выбор текущей страницы, используя навигацию - PullRequest
1 голос
/ 13 мая 2010

Я использую php include для ограничения избыточности на моих страницах, как мне выбрать, чтобы моя навигация выбрала текущую страницу, скажем, определенного цвета для кнопки HOME, когда моя навигация вызывается из файла header.php.

Если бы я сказал добавить «активный» класс к элементу home.php и добавить стиль, чтобы он выглядел по-разному, это произошло бы по всем направлениям для всех моих страниц, поэтому я использую включения в Во-первых, как я могу иметь один файл header.php с моей навигацией, который также позволяет каждой странице отображать текущую страницу, на которой вы находитесь, в навигации?

Это навигационная часть файла header.php

  <ul>
 <li><a href="index.php">About Us</a></li>
 <li><a href="portfolio.php">Portfolio</a></li>
 <li><a href="news.php">News</a></li>
 <li><a href="contact.php">Contact</a></li>
    </ul>

Это файл index.php, в который включен файл header.php

  <?php
   include("includes/header.php");
  ?>

 <div class="span-8" id="welcome">
  <p>Lorem ipsum</p>
 </div>

 <div class="span-16 last" id="slideshow">
  <img src="images/introImage1.png" alt="fountain">
  <img src="images/introImage2.png" alt="bench">
  <img src="images/introImage3.png" alt="bridge">
 </div>

 <?php
  include("includes/footer.php");
  ?>

Ответы [ 3 ]

2 голосов
/ 13 мая 2010

Попробуйте это:

<ul>
<?php 
$pages = array('index.php' => 'About Us', 'portfolio.php' => 'Portfolio', 'news.php' => 'News', 'contact.php' => 'Contact');

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

?>
</ul>
0 голосов
/ 13 мая 2010

И еще один вариант - включить один CSS-оператор в фактическую страницу.

<style type="text/css">
  a[href="<?php echo basename( $_SERVER['PHP_SELF'] ); ?>"] ,
  a[href="<?php echo $_SERVER['PHP_SELF']; ?>"] {
  /* Styles for Current Page Links */ }
</style>

Конечно, это зависит от того, может ли браузер использовать этот селектор CSS.

И, если вы хотите быть полностью уверенным, что все ссылки на файл покрыты (включая полные URI), то также включите следующий селектор:

a[href="http<?php
  echo ( $_SERVER['HTTPS'] ? 's' : '' ).'://'.
    $_SERVER['HTTP_HOST'].(
      ( $_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=443 )
      || ( !$_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=80 ) ?
      ':'.$_SERVER['SERVER_PORT'] : '' ).
    $_SERVER['PHP_SELF']; ?>"]

ОБНОВЛЕНО: Исправлены переменные PHP для использования.

0 голосов
/ 13 мая 2010

Другой вариант - установить атрибут для тега body, а затем использовать согласованную пару для изменения стиля любого количества элементов.

Итак, на вашей главной ( home ) странице вы можете иметь:

<body id="home">
<a href="/" class="home">Home</a>
<a href="/about.htm" class="about">About Us</a>

Тогда внутри вашего CSS есть:

body#home a.home , body#about a.about {
  color:#999;background-color:#000; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...