====== ASWE ======
ASWE — AoidSoft Web Engine(s), разработка компании [[http://aoidsoft.ru|Аэдсофт]].
Используется технология SSI.
SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. В веб-сервере [[apache:apache|]] реализован при помощи модуля ''mod_include''. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением:
* ''.shtml''
* ''.stm''
* ''.shtm''
[[github>aoidsoft/aswe|Проект на GitHub]]
====== Настройка ======
Нужно установить:
apt install libcgi-session-perl
===== Apache =====
Для работы с [[apache:apache|]] нужно добавить модули:
a2enmod cgi include
service apache2 reload
==== Тесты ====
=== include ===
''/_test/include.shtml''
Тест пройден:
Test: include virtual is worked
Тест не пройден:
Test: error -->
=== Perl ===
''/_cgi-bin/test.cgi''
Тест не пройден:
Perl is worked!
====== Документация ======
===== Движок 0 =====
''refs2pages.cgi''
Загрузка ссылок на страницы из структуры папок
- В папку помещается shtml–страница со вставкой вызова «Движка 0».
- В папке создаются вложенные папки вида ''nn_name'', где nn — порядковый номер вложенной папки (ссылки) при отображении страницы.
- Имя ссылки по умолчанию — имя вложенной папки, но может быть заменено, если в отображаемой странице определён тэг ''
где:
* ''pref'' — префикс секции,
* ''post'' — суффикс секции,
* ''tenplate'' — шаблон строки ссылки,
* ''tree'' — отображать все дерево (структуру) сайта (=1) или только текущий уровень (=0, по умолчанию =1),
* ''from'' — отображать от папки
* ''/url/'', ''/'' — от корня сайта,
* ''%% // %%'' — от корня алиаса,
* ''@@'' — место адреса ссылки,
* ''$$'' — место текста ссылки.
===== Движок 1 =====
Движок 1/B
''loadbanners.cgi''
Загрузка ссылок на документы и коротких описаний или баннеров из структуры папок
В папке, где лежит shtml–страница со вставкой вызова «Движка B», ложатся файлы с именами вида ''yymmddnn_name.xxx'' с описаниями подключаемых ссылок/баннеров, формат файла:
Definition1=Value1
Definition2=Value2
…
где
* ''Definitioni'' — макроопределение используемое в шаблоне, ''Valuei'' — значение на которое будет заменено макроопределение.
* ''yymmdd'' — может быть использовано как дата отключения баннера,
* ''nn'' — порядковый номер при отображении ссылки/баннера,
* ''xxx'' — тип файлов задаваемый ключом ''type''.
Пример использования:
где:
''pref'' — префикс секции,
''post'' — суффикс секции,
''template'' — шаблон отображения заголовка,
''type'' — тип (расширение) считываемых файлов (по умолчанию – «bnr»),
''expired'' — не отображать файлы с прошедшей датой (если = 1).
===== Движок 2 =====
''loadtexts.cgi''
Загрузка текстов
В папке, где лежит shtml–страница со вставкой вызова «Движка 2» ложатся файлы с именем вида ''yymmddnn_name.txt'' или ''yymmddnn_name.htm'', где
* ''yy'' — год,
* ''mm'' — месяц,
* ''dd'' — день размещения файла,
* ''nn'' — порядковый номер за день,
* ''name'' — имя файла. Файлы будут считываться, и вставляться в страницу в прямом порядке (в порядке возрастания даты и номера).
Пример использования:
где
* ''pref'' — префикс секции,
* ''post'' — суффикс секции.
Также возможно использование «Движка 3»:
===== Движок 3 =====
''loadheaders.cgi''
Загрузка заголовков
В папке, где лежит shtml–страница со вставкой вызова «Движка 3» ложатся файлы с именем вида ''yymmddnn_name.txt'' или ''yymmddnn_name.htm'', где
* ''yy'' — год,
* ''mm'' — месяц,
* ''dd'' — день размещения файла,
* ''nn'' — порядковый номер за день,
* ''name'' — имя файла.
Файлы будут считываться, и вставляться в страницу в указанном порядке (в порядке возрастания или убывания даты и номера).
Пример использования:
где:
* ''pref'' — префикс секции,
* ''post'' — суффикс секции,
* ''lines'' — сколько строчек из файла отображать (если не задано – все),
* ''count'' — по сколько заголовков отображать на странице (если не задано – все),
* ''filemask'' — regexp–маска имени файла, по умолчанию вида: ''YYMMDD_*.(htm|txt)''
* ''filepref'' — префикс имени файла вида: ''filepreffilemask''
* ''template'' — шаблон отображения заголовка (может быть не задан),
* ''next'' — шаблон ссылки на следующую страницу (может быть не задан),
* ''preed'' — шаблон ссылки на предыдущую страницу (может быть не задан),
* ''any'' — шаблон ссылки на n–ную страницу (страницы нумеруются с 0, может быть не задан),
* ''current'' — шаблон ссылки на текущую страницу (может быть не задан),
* ''back'' — выводить в обратном порядке (если =1),
* ''ponly'' — выводить только ссылки на страницы.
В шаблонах можно использовать макроопределения:
* ''@@'' — адрес ссылки,
* ''$$'' — текст заголовка (для «template») или номер страницы (для «next» и «any»),
* ''%% ** %%'' — порядковый номер.
Может использоваться вместо «Движка 2».
==== filemask ====
Пример использование регулярного выражения в параметре ''filemask''
Регулярное выражение для файлов, вида: ''NNNN_*.(htm|txt)''
* 0000_Index.htm
* 0001_Item1.htm
* 0002_Item2.htm
* …
* 0002_ItemN.htm
^\d{4}_.+\.(htm|txt)$
Его нужно преобразовать в escape–последовательность, получиться:
%5E%5Cd%7B4%7D_.%2B%5C.(htm%7Ctxt)%24
Пример готового вызова:
===== template.cgi =====
Скрипт вызова шаблона.
Пример исрльзования:
===== Пример структуры =====
FIXME