Постоянные посетители нашего сайта недавно могли
заметить, что дизайн сайта в значительной степени обновился, появилось
несколько новых элементов… В том числе изменилась и навигация.
Навигация –
это можно сказать главный элемент каждой веб-страницы. Без правильно
оформленной навигации, понятной каждому пользователю, хорошего сайта получиться
не может в принципе, потому что большинство посетителей сайта попадают на него
из поисковые системы. Как следствие, посетители, пришедшие из вне, не видели
предыдущих страниц сайта, и если они вовремя не поймут, где они находятся, то
они попросту уйдут, получив или не получив нужное. Ведь большинство
пользователей рунета очень дорожат временем и трафиком, и они не станут разбираться,
где и что на вашем сайте.
Когда я
столкнулся с этой проблемой, я сразу решил сделать единый вид меню для всего сайта, и использовать его
на всех страницах. Перечитав несколько статей по оптимизации сайтов, я сделал
вывод, что текст из меню должен встречаться как в заголовке страницы, так и в
ее тексте, причем в "разных направлениях". В заголовке начинаться с
названия страницы и заканчиваться названием сайта, а в меню все на оборот.
В
заголовке:
Название (статьи, книги, 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
На этом пока все, если у вас есть
вопросы или дополнения, или вы просто с чем-то не согласны, то пишите мне на gid87@mail.ru и заходите на
мой сайт http://www.gid.gorodok.net/