[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 г.