Класс для создания меню навигации на сайте

Автор: Беляев Александр
Сайт Автора: wm-help.net
E-mail Автора: [email protected]
Дата написания: 17.05.2006

            Постоянные посетители нашего сайта недавно могли заметить, что дизайн сайта в значительной степени обновился, появилось несколько новых элементов… В том числе изменилась и навигация.

            Навигация – это можно сказать главный элемент каждой веб-страницы. Без правильно оформленной навигации, понятной каждому пользователю, хорошего сайта получиться не может в принципе, потому что большинство посетителей сайта попадают на него из поисковые системы. Как следствие, посетители, пришедшие из вне, не видели предыдущих страниц сайта, и если они вовремя не поймут, где они находятся, то они попросту уйдут, получив или не получив нужное. Ведь большинство пользователей рунета очень дорожат временем и трафиком, и они не станут разбираться, где и что на вашем сайте.

            Когда я столкнулся с этой проблемой, я сразу решил сделать единый вид меню для всего сайта, и использовать его на всех страницах. Перечитав несколько статей по оптимизации сайтов, я сделал вывод, что текст из меню навигации должен встречаться как в заголовке страницы, так и в ее тексте, причем в "разных направлениях". В заголовке начинаться с названия страницы и заканчиваться названием сайта, а в меню навигации все на оборот.
           
В заголовке:
Название (статьи, книги, etc) < Раздел сайта < Название сайта
           
В меню:
Название сайта > Раздел сайта > Название (статьи, книги, etc)

            После недолгих раздумий я решил написать класс для PHP, который бы отвечал за создание и отображение меню на всем сайте. Первым делом я создал приблизительную структуру класса:

class Url_nav /* класс для создания навигации */
{
    var $link_and_text_list; /* массив ссылок */
    var $delitmer; /* разделитель ссылок */

/* добавление элемента */
function
add_item($title, $s_url)
{
}

/* создание навигации и заголовка из спец. массива:
array
(
    [0][url] = ?module=art....
    [0][title] = название
)
*/

function
nav_create()
{
}

/* создание заголовка */
function title_create()
{
}

}

            Потом начал думать, как же лучше все организовать, что бы было и удобно и красиво, и вот что получилось:

<?php
class
Url_nav /* класс для создания навигации */
{
    var $link_and_text_list; /* массив ссылок */
    var $delitmer; /* разделитель ссылок */

/* добавление элемента */
function
add_item($title, $s_url)
{
    $n=sizeof($this->link_and_text_list);
    $this->link_and_text_list[$n]['title']=trim($title);
    $this->link_and_text_list[$n]['url']=trim($s_url);

}

/* создание навигации из спец. массива */
function
nav_create()
{
    $links_arr=$this->link_and_text_list;
    $str = "";
    $c=sizeof($links_arr);
    for ($i=0; $i<$c; $i++)
    {
        if (!$links_arr[$i]['url'])
        {
        $str .= $links_arr[$i]['title'];
        } else {
        $str .= "<a href=\"".$links_arr[$i]['url']."\" target=\"_self\">".$links_arr[$i]['title']."</a>";
        }
        if ($i<$c-1)
        {
        $str .= $this->delitmer;
       
}
   
}
return
$str;
}

/* создание заголовка */
function
title_create()
{
    $links_arr = array_reverse($this->link_and_text_list);
    $str = "";
    $c = sizeof($links_arr);
    for ($i=0; $i<$c; $i++)
    {
        $str .= $links_arr[$i]['title'];
        if ($i<$c-1)
        {
        $str .= $this->delitmer;
        }
    }

return
"<title>".$str."</title>";
}
}

/* Пример использования */
$nav = new Url_nav(); // создание нового экземпляра класса
$nav -> delitmer = " < "; // установка разделителя

$nav -> add_item("items 1", "?b=1"); // добавление элементов
$nav -> add_item("items 2", "?b=2");
$nav -> add_item("items 3", "?b=3");
$nav -> add_item("items 4", "?b=4");
$nav -> add_item("items 5", "");

echo $nav-> title_create(); // создание и вывод заголовка
$nav -> delitmer = " > "; // изменение разделителя
echo
$nav -> nav_create(); // создание и вывод панели навигации со ссылками
?>

            Как пользоваться данным классом я надеюсь, вы поймете из примера указанного выше. На мой взгляд, класс для создания навигации на сайте получился довольно-таки удобный и его можно легко дополнить всяческими специфическими функциями, без ущерба для основного кода. В этой статье я постарался донести до вас, ту простоту и удобство которой обладает объектно-ориентированное программирование в PHP. Получилось это или нет судить уже вам.

Скачать этот скрипт можете с моего сайта: navigation.class.zip

На этом пока все, если у вас есть вопросы или дополнения, или вы просто с чем-то не согласны, то пишите мне на [email protected] и заходите на мой сайт  https://wm-help.net/

Источник: https://wm-help.net/my-articles/article/class-php-navigation-on-site.htmPage copy protected against web site content infringement by Copyscape
Перепечатка данной статьи разрешается только при письменном(e-mail) разрешении автора (Беляева Александра Дмитриевича) и при полном сохранении исходного вида статьи (ссылки, авторские реферальные ссылки, e-mail'ы, форматирование текста, ...), а так же указания точных данных об авторстве (данные автора + прямая [без редиректа и не закрытая от индексации] ссылка на статью).
В случае не выполнения данных правил, возможно применение «особых» мер, к нарушителям.

Другие статьи из раздела "Классы в PHP"
Как использовать классы в PHP
Как писать классы в PHP
   Класс для создания меню навигации на сайте