Быстрая CMS
Обратная связь Карта сайта
Главная Создание сайтов Практика Строим CMS Наивное О проекте Блог

Меню для псевдостатики

Вариант сборки меню для псевдостатических URL по алгоритму ничем не отличается от сборки меню без трансляции. Тот же проход в цикле по массиву выбранных разделов и сборка строк ссылок. Единственная разница – в качестве URL указывается не главный скрипт с параметром, а алиас раздела, к которому присоединяется расширение. Расширение, как вы помните, хранится в файле конфигурации (переменная $_ext).

Функция сборки меню называется по-прежнему getmenu(). Ее нужно разместить в файле m_static.inc.php в директории /libs


<?php
function getmenu($var) {
global $_ext;
  $menu=array();
  foreach ($var as $key=>$val) {
    if (((int)$val['some'] & 1) == 0) {
      if (((int)$val['some'] & 16) > 0) $href='"'.$val['knot'].'"';
      else $href=($val['knot']!='/' ? '"'.$val['knot'].$_ext.'"':'"/"');
      $menu[]='<a href='.$href.'>'.$val['name'].'</a>';
    }
  }
  return ($menu);
}
?>

Итак, вся разница между режимами трансляции URL в том, что ссылка на раздел с алиасом alias имеет вид:

Естественно, чтобы движок мог нормально работать, центральный скрипт должен получить вызов по реальной ссылке. Преобразованием займется модуль сервера mod_rewrite. Для этого, включая режим трансляции URL, нам нужно задать правила трансляции в файле .htaccess корневой директории сайта.


RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z0-9]+).html$ main.php?id=$1 [L]

Первая директива дает указание серверу включить механизм трансляции URL. В большинстве случаев он включен по умолчанию, но бывает и выключен. Вторая назначает базу трансляции URL от корневой директории сайта. Третья – условие трансляции («если запрошенный файл не существует»). Преобразование должно выполняться только в том случае, если в корне нет файла с тем же именем. Четвертая представляет собой правило преобразования, которое предписывает вместо строки вызова alias.html передать в обработку main.php?id=alias. Правило учитывает, что в алиасе допустимы только символы латинского алфавита в нижнем регистре и цифры. Если в алиасе встретится какой-то иной символ, это правило не сработает, поскольку переданная в обработку строка не совпала с шаблоном.

Разумеется, если в файле конфигурации вы укажете расширение не .html, а какое-то другое, вам нужно исправить и правило трансляции – пропишите в нем другое расширение.