virdir

Это механизм, которым можно строить граф ссылок между документами. Этот граф хранится в базе, а не в файлах, поэтому при апгрейде всее ссылки сохраняются.

Как включить свою страницу в virdir

Ссылки virdir хранятся в таблице ispdb_www_subst. В первой колонке (root) описывается документ, где надо разместить ссылку. Если этот документ - стандартный index.shtml файл, то в этой колонке содержится путь от корня документов сервера, притом перед названием каждого каталога в цепочке каталогов должен быть символ /. Например, если Вашу новую ссылку надо разместить в корневом index.shtml, тогда в этой колонке должна содержаться строка нулевой длинны (не NULL и не /). Для помещения своей ссылки в каталог /sys/ в этом поле должна быть строка /sys, а в каталоге /sys/net/ Ваша ссылка будет помещена, если в колонке root содержится строка /sys/net.

В поле diri приведена ссылка в том виде, в каком будет представлена в документе. Она может быть относительная и абсолютная. Например, _somepage.shtml или /net/_somepage.shtml. В частности, ссылка может быть включена в индекс не того каталога, где размещен файл, на который эта ссылка.

В поле visi приведен текст, которым должна сопровождаться ссылка.

В поле rght приведено право, которым должен обладать клиент, что бы увидеть эту ссылку. Если в этом поле NULL, то такую ссылку увидет каждый, кому доступен документ со ссылкой.

ВНИМАНИЕ: это право управляет только показом ссылки. Право же доступа к ней контролируется функцией авторизации, которая задается в настройках модуля mod_auth_pg для Apache и контекстом, который передается этому модулю от сервера.

В поле prio может быть задано какое либо целое число. Когда выводится несколько ссылок через virdir, то они сортируются по этому полю.

Если надо вставить ссылку через virdir в какой либо документ, кроме index.shtml, то правила примерно те же, но в поле root вставляется путь документа от корня документов до имени файла без расширения. Так, что бы вставить свой ссылку на учетный лист договора (его URL /cl/client.shtml) в этом поле надо поместить /cl/client. Обратите внимание, не все документы выводят virdir.

Вывод virdir в своем документе

В своем .4tml документе Вы можете вызвать вывод virdir, если разместите вызов LIBEDIR/plugins/www/virdir "patsubst(DATADIR, WWWROOTDATA)" в контексте sh. Ссылки выводятся <dl></dl> списком, но контекст этого списка нужно организовать самостоятельно, при этом можно в этот список вставить в начало и конец статические компоненты при помощи макрокоманды dditem(ССЫЛКА, НАЗВАНИЕ ССЫЛКИ) Например:

hpage(ЗАГОЛОВОК СТРАНИЦЫ, dnl
<!-- $Id$ -->
Пример: HTML текст
<dl>
exec(LIBEDIR/plugins/www/virdir "patsubst(DATADIR,WWWROOTDATA)/patsubst(__file__,.4tml)")
</dl>
)
       
или вот пример посложнее:
hpage(ЗАГОЛОВОК СТРАНИЦЫ,dnl
<!-- $Id$ -->
Статическая часть страницы
exec(dnl
Ввод параметров из строки запроса
Другие команды для /bin/sh
sqlour(dnl
Текст для исполнения psql
)dnl
Команды для /bin/sh
echo "<dl>"
LIBEDIR/plugins/www/virdir "patsubst(DATADIR,WWWROOTDATA)/patsubst(__file__,.4tml)"
)dnl
dditem(_somelink.shtml,Какой-то линк)
</dl>
Статическая часть страницы
)
       

Вывод virdir в sqlbang

Этот раздел приведен для полноты. Пример sqlbang с virdir:

PGSQL_MIN
-- $Id$
VIRDIR_PREPEND
\import ...
...
VIRDIR_SELECT('константа для "root"','Параметр');
...
       
'Параметр' будет добавлен ко всем линкам, если задан, иначе линки будут без параметра (как в предыдущих примерах). 'константа для "root"' - это та самая строка в колонке root таблицы ispdb_www_subst, по которой выбираются элементы списка ссылок. VIRDIR_PREPEND - это декларативная команда, она готовит среду для работы императивной команды VIRDIR_SELECT.


А.А.Бабайлов (C)2003..2022