Примените определенный класс / id к текущей странице в меню (PHP)

У меня есть следующее меню:

<div id="blahblah" style="blahblah"> <a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> <a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> <a href="http://domain.com/folder/gallery"><img style="blahblah" src="blahblahblahblah"></a> <a href="http://domain.com/folder/dontknow"><img style="blahblah" src="blahblahblahblah"></a> </div> 

Я хотел бы иметь что-то, что автоматически добавляет класс = «текущий» на страницу, в которой я сейчас. Ссылки (как вы можете видеть в приведенном выше коде), как domain.com/folder/biography или domain.com/ папка / контакты, поэтому без .php / .html и т. д.

Я попробовал:

 <div id="blahblah" style="blahblah"> <a <?php if (strpos($_SERVER['PHP_SELF'], 'biography')) echo 'class="current"';?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> <a <?php if (strpos($_SERVER['PHP_SELF'], 'contacts')) echo 'class="current"';?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> ... ... </div> 

Но это не сработает … решение со стропами кажется жизнеспособным, возможно, я делаю это неправильно ..: P

Related of "Примените определенный класс / id к текущей странице в меню (PHP)"

Вам следует:

  1. проверьте результат strpos() с помощью !== false .
  2. Используйте $_SERVER['REQUEST_URI'] а не $_SERVER['PHP_SELF'] .
  3. Оберните код внутри функции.

Что-то вроде этого:

 <?php function get_current($name) { if (strpos($_SERVER['REQUEST_URI'], $name) !== false) echo 'class="current"'; } ?> <div id="blahblah" style="blahblah"> <a <?php get_current('biography') ?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a> <a <?php get_current('contacts') ?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a> ... ... </div> 

если позиция равна 0, то она будет оцениваться FALSE в PHP. Вы должны проверить значение возврата, т. Е.> = 0.

Вместо strpos() вы можете попробовать следующее:

 <?php $current = basename($path, ".php"); ?> <a href="blahblah"<?php if ($current == 'biographies') echo ' class="current"'; ?> /> 

$current – это имя текущего файла без расширения .php .