выделить активную страницу в панели навигации с общим заголовком

Я новичок в веб-программировании. Я сделал простой сайт с общим заголовком. Мой заголовок находится в папке с именем inc / common_header.php, и я включил этот заголовок во все остальные мои страницы.
Пока заголовок работает хорошо, но я хочу поместить другой цвет в меню навигации для текущей страницы. Я попробовал это решение:

<?php
if (strpos($_SERVER['PHP_SELF'], 'about.php')) echo 'class="current"';
?>

Это решение работает хорошо, но моя проблема в том, что у меня есть навигационная панель на отдельной странице, и когда я нажимаю, результат всегда совпадает с inc / common_header.php, а не с текущей страницей.

Вот мой код:

common_header.php

<nav class="navigation-bar fixed-top">
<nav class="navigation-bar-content">
<a class="element brand" href="/"><span class="icon-grid-view"></span> COMPANY NAME</a>

<span class="element-divider"></span>

<a class="element brand" href="/"><span class="icon-home"></span> HOME</a>
<div class="element">
<a class="dropdown-toggle" href="#"><span class="icon-printer"></span> SERVICES</a>
<ul class="dropdown-menu" data-role="dropdown">
<li><a href="#">SERVICE 1</a></li>
<li><a href="#">SERVICE 2</a></li>
<li><a href="#">SERVICE 3</a></li>
<li class="divider"></li>
<li><a href="#">SERVICE 4</a></li>
<li><a href="#">SERVICE 5</a></li>
<li class="divider"></li>
<li><a href="#">SERVICE 6</a></li>
<li><a href="#">SERVICE 7</a></li>
</ul>
</div>

<div class="element">
<a class="dropdown-toggle" href="#"><span class="icon-printer"></span> CALCULATOR</a>
<ul class="dropdown-menu" data-role="dropdown">
<li><a href="calc_home.php">HOME</a></li>
</ul>
</div>

<a class="element brand" href="about.php"><span class="icon-printer"></span> ABOUT</a>

<div class="element place-right">
<a class="dropdown-toggle" href="#"><span class="icon-cog"></span> SETTINGS</a>
<ul class="dropdown-menu place-right" data-role="dropdown">
<li><a href="#">MY ACCOUNT</a></li>
<li><a href="#">MY PRODUCTS</a></li>
<li class="divider"></li>
<li><a href="#">LOG OUT</a></li>
</ul>
</div>
<span class="element-divider place-right"></span>
<button class="element image-button image-left place-right"> USERNAME <img src="img/me.jpg"/></button>
</nav>

Заранее спасибо за помощь. Я буду признателен.

0

Решение

Попробуйте изменить один из ваших href на about.php и посмотреть, если это работает. Пример:

       <ul class="dropdown-menu" data-role="dropdown">
<li><a href="about.php">About</a></li>
//etc

В таком виде ваши гиперссылки идут на ваш index.phpчто дает то же значение для PHP_SELF супер, таким образом никогда не соглашаясь с about.php, По крайней мере, это то, что я вижу по этому ограниченному примеру кода. Если это не сработает, пожалуйста, отредактируйте ваш вопрос, чтобы включить вывод $_SERVER['PHP_SELF'], который должен дать вам подсказку в любом случае.

Более того, нет причин использовать strpos при сравнении строк; использовать === вместо этого оператор, который проверяет, являются ли аргументы одинаковыми тип а также если они имеют одинаковое значение.

0

Другие решения

Я предполагаю, что ваша проблема заключается в следующем:

У вас есть общий раздел страниц вашего сайта (заголовок) в файле ‘common_header’. Вы включаете этот файл ‘common_header’ во все страницы вашего сайта (например: главная страница, информация о сервисах, продуктах, контактах). Но на одной из этих страниц (например, контакт) и просто на этой странице вы хотите показать заголовок в другом стиле.

Если это ваша проблема, мое решение:

На странице ‘common_header’ используйте этот php-код вместо того, который у вас есть:

if(isset($specialPage) && $specialPage == "this is the special page"){
echo 'class="current"';
};

Затем на странице «Контакты» (которую я использую в качестве примера) вы пишете это перед тем, как включить свою главную страницу:

$specialPage = "this is the special page";
include("your header page");

Опять же, если это не то, что вы хотите, я прошу прощения за неправильное понимание вашего вопроса.

1

По вопросам рекламы [email protected]