VITRAGE: Примеры
· 1. "Распорки"
· 2. Изображения
· 3. "Колонтитулы"
· 4. Ссылки
· 5. Многоязычные сайты
· 6. Организация меню
· 7. Однотипные элементы
· 8. Формы и их обработка
· 9. Случайные операции
· 10. Циклы
· 11. "Ленты" данных
· 12. Внешние скрипты
· 13. Работа с файлами
· 14. "Бесконечный копирайт"
 
Практика
· Немного о стилях парсинга
· Примеры использования
· Работающие сайты
· Хостинги
· Вопросы и ответы
· Задать вопрос
· E-mail
 
Теория
· Компиляция и установка
· Идеология VITRAGE
· Оптимизация HTML
· Создание виртуальных хостов
· Создание структуры доменов
· Ваш собственный язык гипертекстовой разметки
 
О модуле
· Что такое VITRAGE
· История модуля
· Загрузить модуль
· Документация целиком
· Загрузить документацию в формате MS Word
· Слово автора
· English version
 
Технология VITRAGE
Один из витражей города Иркутска
Исходный код
· VHTML-код этой страницы (в новом окне)
· VHTML-код файла vitrage (в новом окне)
 
· Пример 12. Подключение внешних скриптов и передача им данных

При помощи VITRAGE можно сделать многое. Но в тех случаях, когда необходимо решать какие-либо специфические непростые задачи, возникает задача интеграции VHTML-страниц со страницами или их частями, созданными с использованием других технологий.

Один подход вполне очевиден: создать большую часть страниц при помощи VITRAGE, а оставшуюся - ту, в которой требуются более сложные действия, - при помощи, например, PHP или Perl. К плюсам такого подхода следует отнести его необычайную простоту, к минусам же - необходимость повторения всех элементов навигации, блоков и т.д. дважды: для VITRAGE и для "стороннего" средства.

По мнению автора, этот подход стоит применять лишь в тех случаях, когда разница между VHTML-страницами и страницами, требующими использования другой технологии, настолько велика, что "двойной работы" по описанию навигации, блоков и т.п. можно будет избежать. Иллюстрацией такого случая может служить обработка форм, упомянутая в примере 8 (PHP-скрипт лишь выполняет необходимую обработку данных, после чего осуществляет переадресацию на VHTML-файл).

Второй подход - это включение внешнего по отношению к VHTML-файлу скрипта непосредственно в VHTML-страницу с использованием тэга <%include%>.

Допустим, что на странице нам необходимо отобразить число секунд, оставшихся до заданного момента времени в будущем. Эту задачу легко решает следующий PHP-скрипт:

<?
if (IsSet($ts)) $ts = intval($ts);
else $ts = time();
$y = 2000; $nr = 0;
do {
$y++; $nr++;
$left = mktime(15, 30, 0, 9, 21, $y) - $ts;
} while ($left < 0);
echo "Сейчас " . date("H:i:s d/m/Y", $ts) . "<br>\n";
if ($left > 0) {
echo "До $nr-й годовщины осталось $left сек. Это примерно:<br>\n";
echo "<b>&middot;&nbsp;</b>" . intval($left / 60) . " мин.<br>\n";
echo "<b>&middot;&nbsp;</b>" . intval($left / 3600) . " час.<br>\n";
echo "<b>&middot;&nbsp;</b>" . intval($left / 86400) . " сут.<br>\n";
}
?>

Сам же скрипт (точнее, результат его работы) мы подключим в VHTML-файл следующим образом:

<%include% file="scripts/time.php">

Если мы желаем передать сведения о текущем времени PHP-скрипту из VHTML-файла, мы можем осуществить это с использованием встроенной переменной %timestamp%:

<%include% file="scripts/time.php?ts=$%timestamp%$">

Используя такой метод (он, как мы помним, называется "метод GET"), мы можем передать скрипту любые данные. Но, как и в предыдущем примере, не следует забывать о необходимости кодирования URL согласно RFC 1738 с помощью тэга <%rawchars%>:

<%vitrage% name="Модуль VITRAGE" %time%="%d/%m/%Y">
<%rawchars% var1=name var2=%time%>
<%include% file="scripts/data.php?name=$name$&time=$%time%$">

Из-за того, что, вероятнее всего, страницы, использующие внешние скрипты, являются динамическими (оперируют данными, изменяющимися с течением времени), рекомендуется принудительно отключать кэширование для каталогов, содержащих такие страницы (ключевым словом VGCache в файле .htaccess):

VGCache Off

При помощи внешних скриптов можно осуществлять сложную обработку данных, работать с файлами, базами данных и т.д. Таким образом, благодаря подключению внешних скриптов сайт, созданный с использованием технологии VITRAGE, получает возможность расширить свою функциональность до любых пределов, доступных "внешним" технологиям.