Активна навигация


Ако имате статична или динамична навигация, много пъти при изкарването и в нов файл трябва да се предвиди как ще се проверява дали линка трябва да е активен за текущата страница.

Вместо да добавям някакъв сложен код към навигацията съм разработил проста функция, която просто трябва да се извика с името на линка.


Простата версия на кода:

function active ($find, $exact = FALSE)
{
	if ( $exact ) {
		$server = explode('/', $_SERVER['REQUEST_URI']);
		$uri = $server[count($server) - 1];
		if ( strcmp($uri, $find) == 0 ) {
			return 'class="active"';
		}
	} else if ( strpos($_SERVER['REQUEST_URI'], $find) !== FALSE ) {
		return 'class="active"';
	}

    return "";
}

Сложната, която работи с масив:

function active ($find, $exact = FALSE)
{
    if(is_array($find)) {
        $server = explode('/', $_SERVER['REQUEST_URI']);
        if(!empty($find))
            foreach($find as $element) {
                if ( $exact ) {
                    $uri = $server[count($server) - 1];
                    if ( strcmp($uri, $element) == 0 ) {
                        return 'class="active"';
                    }
                } else if ( strpos($_SERVER['REQUEST_URI'], $element) !== FALSE ) {
                    return 'class="active"';
                }
            }
    } else {
        if ( $exact ) {
            $server = explode('/', $_SERVER['REQUEST_URI']);
            $uri = $server[count($server) - 1];
            if ( strcmp($uri, $find) == 0 ) {
                return 'class="active"';
            }
        } else if ( strpos($_SERVER['REQUEST_URI'], $find) !== FALSE ) {
            return 'class="active"';
        }
    }

    return "";
}

Ако при линковете има други класове, може да се замени ‘class=“active“‘ с „active“.

Пример за използване:


  1. Няма коментари.
(will not be published)