Vivien-girl.

Vivien 2

Site Engine

Последнее обновление страницы: 20 мая 2011 г.

Описание

Vivien 2 — это движок сайта. Представляет из себя CGI-скрипт, написанный на языке D. Позволяет ускорять и упрощать вёрстку сайта за счёт использования шаблонов.

Идея украдена позаимствована из Parser'а студии Артемия Лебедева.

Версия

Текущая версия: 0.0.2.

Лицензия

Скачать

Документация

При запросе веб-странички, скрипт выполняет следующие действия:

Системные макросы

{Year} — текущий год в формате YYYY.
{SysInfo} — информация о системе, переменные окружения.

Пользовательские макросы

{Имя_макроса} — вставка значения макроса.
[Имя_макроса] — присвоение значения макросу.

Имя_макроса должно состоять из больших или маленьких букв латинского алфавита, цифр или символа подчёркивания, причём начинаться оно не может с цифры или символа подчёркивания.

Для присвоения значения макросу необходимо, перед нужным блоком текста, поставить специальную метку [Имя_макроса], заканчивающуюся переводом строки. Пробелы и табуляторы до и после квадратных скобок игнорируются. Значением макроса является блок текста, начинающийся со строки ниже и до следующего определения макроса, или до конца файла. Если определяются несколько макросов, имеющих одно и тоже имя, то определён будем макрос, стоящий последним.

Пример:

[quatrain1]
Царь Никита жил когда-то
Праздно, весело, богато,
Не творил добра, ни зла,
И земля его цвела.

[quatrain2]
Царь трудился по немногу,
Кушал, пил, молился богу
И от разных матерей
Прижил сорок дочерей

Были заданы 2 макроса. Теперь, если на страничке написать:

{quatrain1}
{quatrain2}

То получится:

Царь Никита жил когда-то
Праздно, весело, богато,
Не творил добра, ни зла,
И земля его цвела.

Царь трудился по немногу,
Кушал, пил, молился богу
И от разных матерей
Прижил сорок дочерей

Макрос {main}

Это особый макрос. Он всегда выполняется самый первый, то есть фактически в самом начале текста автоматически вставляется {main} (самому это вставлять не нужно!). Следовательно, обязательно должен быть задан блок текста с меткой [main].

Установка

Качаем архив с текущей версией Vivien 2.
Копируем содержимое архива на сервер в папку CGI-скриптов (обычно это папка /cgi-bin).
Файлу vivien2 необходимо дать права на выполнение (755).

Далее необходимо внести изменения в конфигурацию веб-сервера Apache.

Назначаем vivien2 обработчиком страниц. Для этого, добавляем в файл конфигурации (.htaccess или httpd.conf) следующие строки:

AddHandler vivien2-handler .htm .html .txt
Action vivien2-handler /cgi-bin/vivien2

Запрещаем доступ к файлам .auto.htm:

<Files .auto.htm>
    Order allow,deny 
    Deny from all   
</Files>

Далее в файле vivien.conf задаём имя и путь к лог-файлу, в который будут сыпаться сообщения об ошибках. По умолчанию логирование ведётся в файл vivien2.log, расположенный в той же папке, что и CGI-скрипт.

Bugs

1. Бывает, что в тексте страничек присутствуют конструкции, вида: [...], {...}. Такое, например, встречается в никах, смайликах и т. д. Соответственно, движок сайта их тоже пытается обработать, и это приводит к ошибкам.
Пока, проблему можно решить заменой символов [, ], { и } их html-кодами: &#91;, &#93;, &#123; и &#125; соответственно.

2. Если htm-файл расположен вне корня сайта (DOCUMENT_ROOT), то, при обработке его скриптом, в лог падает предупреждение:
[Thu May 19 16:13:55 GMT+0400 2011] [Warning] "/path/to/document_root" is not a root directory of the "/path/to/other/dir/file.htm"
Обработка данного файла не происходит. С одной стороны — это правильно, а с другой — не очень. Например, когда мы хотим разместить папку с сообщениями об ошибках вне папки с содержанием сайта, дабы отделить оформление от содержания.
Решение пока одно: все html-файлы размешать внутри корневой папки.

Пример создания сайта

Допустим, нам нужно создать сайт об А. С. Пушкине. Допустим, также, что веб-сервер настроен, cgi-скрипт vivien2 установлен.

Сначала, в корне сайта, создаём файл .auto.htm, и задаём в нём шаблон всех страниц сайта:

[main]
<html>
    <head>
        <!-- Название страницы -->
        {title}
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>

    <body>
        <!-- Заголовок страницы -->
        {headline}

        <!-- Содержание страницы -->
        {content}
        
        <!-- Данные об авторах -->
        <address>© 2009 — {Year} Клуб имени Пушкина</address>
    </body>
</html>

Далее создаём главную страничку сайта index.htm, со списком стихов:

[title]
<title>{name}</title>

[headline]
<h1>{name}</h1>

[name]
А. С. Пушкин. Сказки для взрослых

[content]
<ul>
    <li><a href="gusar.htm">Гусар</a></li>
    <li><a href="nikita.htm">Царь Никита и сорок его дочерей</a></li>
</ul>

Затем создаём по страничке для каждого стиха.

Файл gusar.htm:

[title]
<title>А. С. Пушкин. {name}</title>

[headline]
<h1>{name}</h1>

[name]
Гусар

[content]
<pre>
Скребницей чистил он коня,
А сам ворчал, сердясь не в меру:
«Занес же вражий дух меня
На распроклятую квартеру!

Здесь человека берегут,
Как на турецкой перестрелке,
Насилу щей пустых дадут,
А уж не думай о горелке.

...

И стал крутить он длинный ус,
Прибавя: «Молвить без обиды,
Ты, хлопец, может быть, не трус,
Да глуп, а мы видали виды».
</pre>

Файл nikita.htm:

[title]
<title>А. С. Пушкин. {name}</title>

[headline]
<h1>{name}</h1>

[name]
Царь Никита и сорок его дочерей

[content]
<pre>
Царь Никита жил когда-то
Праздно, весело, богато,
Не творил добра, ни зла,
И земля его цвела.
Царь трудился по немногу,
Кушал, пил, молился богу
И от разных матерей
Прижил сорок дочерей,
...

Многие меня поносят
И теперь пожалуй спросят
Глупо так зачем шучу?
Что за дело им? Хочу!
</pre>

Поскольку наш скрипт обрабатывает всё страницы, имеющие расширения .htm и .html, то серверные сообщения об ошибках также будут обработаны скриптом. Следовательно, все странички сообщений об ошибках должны быть переписаны в соответствии с нашим шаблоном.

Рассмотрим, для примера, создание собственной страницы ошибки «404 Not found».

Создаём в корне сайта папку errors. Помещаем туда файл 404.htm с сообщением об ошибке:

[title]
<title>А. С. Пушкин. {name}</title>

[headline]
<h1>{name}</h1>

[name]
404

[content]
<p>Файл не найден.</p>

В файл конфигурации веб-сервера Apache (.htaccess или httpd.conf) дописываем строчку:

ErrorDocument 404 /errors/404.htm

Открываем наш сайт в браузере, и смотрим что получилось:

Пример сайта на Vivien 2.
Пример сайта на Vivien 2.
Пример сайта на Vivien 2.
Пример сайта на Vivien 2.

Структура сайта:

cgi-bin/
 |-- vivien2
 `-- vivien.conf

html/
 |-- errors/
 |    `-- 404.htm
 |-- .auto.htm
 |-- gusar.htm
 |-- index.htm
 `-- nikita.htm