Динамическое написание заголовков страниц и активных классов с помощью php - PullRequest
2 голосов
/ 07 мая 2010

В течение некоторого времени я использовал следующий код для динамической записи заголовков html-страниц и добавления активного класса в пункты меню. Это все еще хорошо, почему этого добиться, или есть лучшие / более умные / оптимальные способы достижения того же самого?

<?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='contact.php'? 'class="active"' : '');?>

Пример меню

<ul id="nav">
<li><a href="index.php"  target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='index.php'? 'class="active"' : '');?>><span>Home</span></a></li>
<li><a href="services.php"  target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services.php'? 'class="active"' : '');?><?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services-landlords.php'? 'class="active"' : '');?><?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services-sellers.php'? 'class="active"' : '');?><?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services-tennants.php'? 'class="active"' : '');?>><span>Our Services</span></a></li>
<li><a href="for-sale.php" target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='sales.php'? 'class="active"' : '');?>><span>Sales</span></a></li>
<li><a href="to-let.php" target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='lettings.php'? 'class="active"' : '');?>><span>Lettings</span></a></li>
<li><a href="register.php"  target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='register.php'? 'class="active"' : '');?><?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='register-thanks.php'? 'class="active"' : '');?>><span>Register</span></a></li>
<li><a href="contact.php"  target="_parent" <?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='contact.php'? 'class="active"' : '');?>><span>Contact Us</span></a></li>
</ul>

Заголовок страницы Пример

<?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services.php'? 'Services' : '');?>
<?php echo (basename($_SERVER['SCRIPT_FILENAME'])=='services-landlords.php'? 'Services for Landlords' : '');?>

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Вы можете поместить это в функцию.

function menuIsActive ($filename)
{
    echo (basename($_SERVER['SCRIPT_FILENAME']) == $filename)
    {
        echo ' class="active" ';
    }
}

отл.

<li><a href="contact.php" target="_parent" <?php menuIsActive("contact.php"); ?>>Contact Us</a></li>
0 голосов
/ 07 мая 2010

Это не плохой способ. Я делаю это с помощью цикла, чтобы меньше печатать. e.g.:

foreach(array($pagenames as $pagename=>$pageaddress) {
  $active= $_SERVER('SCRIPT_FILENAME'])==$pageaddress? 'class="active"' : '';
  echo <li><a href="$pageaddress"  $active target="_parent">$pagename</a></li>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...