[21-09-2003] Джо

Описание навигации по сайту Каменный Мост

Менюшки, кнопочки и прочие гиперссылки - это и есть навигация по сайту. Использовать это богатство грамотно - значит дать возможность посетителю сайта без малейшего труда найти любую нужную ему информацию. Для этого нужно прибегать к привычному расположению элементов навигации и на всем пространстве сайта делать единообразную навигацию. Привычное расположение главного меню - вверху страницы по горизонтали. Подменю можно располагать по горизонтали ниже, либо по вертикали у левого края страницы.

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

Каменный Мост "собран" на написанном мной php-"движке", основа которого - шаблонизатор FastTemplates, а страницы формируются в соответствии с принципами моей теории "структурной верстки". информацию об основных визуальных элементах сайта согласно этой теории можно посмотреть здесь, а конкретно о меню - тут.

В php-коде меню - такой класс:

class menu {

private $boxvar;

private $boxtempl;

private $menuvar;

private $menutempl;

private $hdvmenu;

private $items;

function __construct($param){

$ks=sizeof($param);

for($i=0;$i<$ks;$i++){

if($param[$i][0]=="boxvar") $this->boxvar = param[$i][1];

elseif($param[$i][0]=="boxtempl") $this->boxtempl = $param[$i][1];

elseif($param[$i][0]=="menuvar") $this->menuvar = $param[$i][1];

elseif($param[$i][0]=="menutempl") $this->menutempl = $param[$i][1];

elseif($param[$i][0]=="hdvmenu") $this->hdvmenu = $param[$i][1];

elseif(($param[$i][0]=="filemenu")&&($param[$i][1]!="")) {

$f=file($param[$i][1]);

$ksf=sizeof($f);

if($ksf>2) {

$f[0]=str_replace("\r\n","",$f[0]);

if($f[0]!="") $this->hdvmenu = $f[0];

for($i2=1;$i2<$ksf;$i2++) {

$line=explode("|",str_replace("\r\n","",$f[$i2]));

$this->items[$i2-1][0]=$line[0];

$this->items[$i2-1][1]=$line[1];

}

unset($line);

}

}

elseif(($param[$i][0]=="db")&&($param[$i][1]!="")) {

$dbacc=explode("#",$param[$i][1]);

if(mysql_connect($dbacc[0],$dbacc[1],$dbacc[2])) {

if(mysql_select_db($dbacc[3])) {

$result =mysql_query("SELECT ankor,http FROM $dbacc[4]");

$i3=0;

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

$this->items[$i3][0] = $line[0];

$this->items[$i3][1] = $line[1];

$i3++;

}

}

}

}

}

}

function __destruct(){

}

}

Здесь:

$boxvar - имя "переменной" FastTemplates ( далее FT ) для "ящика", в который встраивается меню;

$boxtempl - здесь хранится название файла шаблона "ящика" меню;

$menuvar - имя "переменной" FT для пунктов меню;

$menutempl - здесь хранится название файла шаблона пункта меню;

$hdvmenu - заголовок меню;

$items - 2-мерный массив, в котором хранятся пункты меню (текст, ссылка);

То есть само меню может храниться либо в текстовом файле вида

<заголовок меню>

<текст>|<адрес>

...

<текст>|<адрес>

либо в базе данных в виде записей.

Шаблон FT - это html файл, в котором вместо меняющихся частей ставятся "переменные" FT. Вместо "переменных" при загрузке страницы подставляется либо текст, либо другой шаблон.

В редких случаях могут понадобиться отдельно стоящие кнопки. Их лучше делать непосредственно на шаблонах.

Статья переписана 21 октября 2009 г.

* - обязательно заполнить

Комментарий

*Имя

E-mail

*Код: 

*Текст комментария:

Самые популярные статьи