Главная страница статей --> Хитрости при программировании php, заметки по базам данных

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

Источник: realcoding.net

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

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



Похожие статьи:
- История языка HTML
- CSS + RSS = почти идеальный блог?
- Денвер + Ruby On Rails, мануал по установке
- Варианты настройки Ruby On Rails на максимальную производительность: mongrel vs lighttpd vs nginx
- Преимущества индексации страниц с mod_rewrite
- Как узнать сколько раз скачали ваш файл
- Как сгенерировать файл .htaccess
- Проект “Ы”, Ruby on Rails, Acts as Taggable, скорость разработки
- Что нового будет в Rails 1.1 и немного секретов Prototype.js
- PHP5 - Новые возможности PHP5-Zend Engine 2_0
- Основы безопасности при работе с MySQL в PHP
- Сжатие данных на PHP
- Использование XML в PHP


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]