Использование в ALite CMS интерактивного построителя страниц и ЧПУ создает некоторые особенности в конструкции внутренних ссылок и путей к файлам в скриптах и редактируемых блоках. Построитель страниц является самостоятельным инструментом и физически все его файлы расположены в отдельной папке и для того, чтобы ссылки и пути указывали всегда в одно и тоже место, следует придерживаться определенных правил.
Внутренние ссылки
Для правильной работы внутренних ссылок на сайте и в построителе всегда следует использовать относительную адресацию. Предпочтительнее использовать такую конструкцию:
< a href="?param1=1 & param2=2" >text link< /a >
Особенностью такой конструкции является то, что переход будет выполнен относительно текущего пути страницы. Использовать в ссылках абсолютные пути не запрещено, но при клике по такой ссылке произойдет выход из построителя страниц и переход по указанному адресу без сохранения макета страницы.
Примеры:
1. Адрес ссылки: ?rid=44
Куда ведет ссылка:
сайт - /mydomain/?rid=44
построитель - /mydomain/_page_builder/?rid=44 (остаемся в построителе страниц)
2. Адрес ссылки: /?rid=44
Куда ведет ссылка:
сайт - /mydomain/?rid=44
построитель - /mydomain/?rid=44 (выход из построителя страниц)
Не используйте ссылки с указанием относительного адреса с использованием конструкции ../ !!! На сайте и в построителе страниц такие ссылки ведут в разные директории! Хотя ошибки, скорее всего, это не вызовет, но работа скриптов будет некорректной.
Примеры:
1. Адрес ссылки: ../?rid=44 или ../index.php?rid=44
Куда ведет ссылка:
сайт - в родительский каталог относительно /mydomain/каталог_скрипта/
построитель - в родительский каталог относительно /mydomain/_page_builder/каталог_скрипта/
Особенность имеет конструкция ссылки для перехода на главную страницу. Чтобы такая ссылка правильно работала и в построителе и на сайте используйте конструкцию href="?", а не href="/".
Пути к файлам
В отличии от внутренних ссылок в путях к файлам и другим объектам следует всегда указывать абсолютный путь. Только в этом случае пути будут правильными и в построителе страниц и на страницах сайта. Предпочтительнее использовать такую конструкцию:
Примеры:
1. < img src="/_uimages/banner.gif" / >
2. < img src="http://mydomain/_uimages/banner.gif" / >
3. < img src="< ? php echo $_SERVER['DOCUMENT_ROOT']; ? >/_uimages/banner.gif" / >
4. < script language="JavaScript" type="text/javascript" src="/_js/jquery.js" >< /script >
5. < link rel="stylesheet" type="text/css" href="/_themes/'.alite_get_user_theme().'/css/ustyle.css" />
Ссылки и ЧПУ
Под обработку ЧПУ попадает свойство HREF тэгов A и свойство ACTION тэгов FORM. При этом текст ссылок должен отвечать определенным требованиям:
1. Текст ссылок должен быть не пустой.
2. Текст ссылок должен начинаться с имени домена, вопросительного знака, слеша или слеша с предстоящими двумя точками.
Примеры:
http://mydomain/?elm=articles&elmid=4&rid=25
http://www.mydomain/?elm=articles&elmid=4&rid=25
?elm=articles&elmid=4&rid=25
/?elm=articles&elmid=4&rid=25
../?elm=articles&elmid=4&rid=25
3. Текст ссылок не должен содержать расширений файлов. Например: .php, .html и т.п..
4. Передаваемые параметры ссылки должны соотвествовать принятому в ALite CMS стандарту (см. Использование ЧПУ в ALite CMS).
Для обработки данных, непосредственно передаваемых браузеру методом GET (например, при выполнении php-функции header('Location: ...'), существует отдельная функция преобразования alc_common_url_to_furl. Преобразование следует выполнять до отправки данных браузеру.
Пример:
...
$href = '?'.(($rid > 0) ? 'rid='.$rid.'&' : '').'elm=articles';
if ($friendly_urls) $href = alc_common_url_to_furl($href);
//проверка использования или не использования ЧПУ
//производится непосредственно в функции преобразования alc_common_url_to_furl
$href = alc_common_url_to_furl($href);
header('Location: '.$href);
...
Комментарий:
$friendly_urls - предопределенная в ALite CMS глобальная переменная
$friendly_urls == true; ЧПУ используются
$friendly_urls == false; ЧПУ не используются