cms4site™ :: Функциональные модули. Руководство пользователя
cms4site™ система построения сайтов и управления контентом 3.5.11
 U41RU 



cms4site™ :: Функциональные модули. Руководство пользователя
[2]



ОГЛАВЛЕНИЕ

          ВЫЗОВ ФУНКЦИОНАЛЬНЫХ МОДУЛЕЙ         3
          XMMSEARCH - ПОИСК ПО САЙТУ         4
          XMMSITEMAP - КАРТА САЙТА         4
          XMMCOLLECT - ВНУТРЕННЕЕ МЕНЮ         4
          XMMPREVNEXT - ПРЕДЫДУЩИЙ/СЛЕДУЮЩИЙ         5
          XMMTOPLEVEL - ВЕТКА СТРАНИЦЫ ИЛИ ПЕРЕХОД К СТАРШЕЙ         5
          XMMINNER - НАВИГАЦИЯ ПО СТРАНИЦЕ И САЙТУ         5
          XMMDATETIME - ДАТА И ВРЕМЯ         8
          XMMNEWSLINE: НОВОСТНАЯ СТРАНИЦА И ЛЕНТА НОВОСТЕЙ         9
          XMMTEMPLATE: ВЫВОД ПО ШАБЛОНУ         11
          XMMRANDOM: СЛУЧАЙНАЯ ВЫБОРКА         11
          XMMDIRLIST: ОГЛАВЛЕНИЕ ДИРЕКТОРИЙ         12
          XMMGBLIGHT: ГОСТЕВАЯ КНИГА         13
          XMMGUEST: ОТЛАДКА КОНТЕНТА         13
          XMMCONTENTCHECK: ПРОВЕРКА ФАЙЛОВ КОНТЕНТА         13
          XMMPOLL: ПРОВЕДЕНИЕ ОПРОСА         14
          XMMQUIZ: РОЗЫГРЫШ ПРИЗА         15
          XMMFORMSENDER: ОБРАБОТЧИК ФОРМ         16
          XMMORDER - ЭЛЕКТРОННЫЙ ЗАКАЗ         21
          XMMAUTHORIZE - АВТОРИЗАЦИЯ         22
          XMMCALENDAR - КАЛЕНДАРЬ         23
          XMMCURRENCY - ВАЛЮТА         24
          XMMWEATHER - ПОГОДА         24
          XMMECAT - КАТАЛОГ ПРОДУКЦИИ         25
          XMMICAT - МИНИКАТАЛОГ ПРОДУКЦИИ         26
          XMMGALLERY - ФОТОГАЛЕРЕЯ         27
          XMMFIND - ПОИСК ПО СТРАНИЦЕ         27
          XMMMYSITE - ЗАКЛАДКИ ПОСЕТИТЕЛЯ (МОЙ САЙТ)         28
          XMMVACANCY - РАБОТА СО СПИСКОМ ВАКАНСИЙ         28
©2000-2008 cms4site group. All rights reserved
http://web.demos-spb.ru,


cms4site™ :: Функциональные модули. Руководство пользователя
[3]




ВЫЗОВ ФУНКЦИОНАЛЬНЫХ МОДУЛЕЙ


Функциональные модули (как стандартные cms4site™, так и пользовательские, написанные разработчиком сайта), вызываются либо из файлов контента (указанием имени модуля с необязательными параметрами), например:

xmmsitemap.php INFO ALL

либо из файла структуры сайта, при этом файл контента может не потребоваться вообще. Способ вызова из файла структуры сайта должен быть предусмотрен разработчиком. Пример вызова при назначении поля данных data4 в структуре сайта для такого действия:

<3>dbcall|Продукция|База данных продукции||||dbprod.php start=0,q=,key=230001

Пользовательские модули помещаются в директорию myphp или ее поддиректории.

Дизайн вывода информации в контентную область стандартными модулями назначается разработчиком в настройках этих модулей.

Вызов модулей может быть реализован разработчиком непосредственно в шаблоне страниц сайта. Например, для всех страниц уровня 3 и выше в области под контентом вызывать модуль xmmprevnext.php (предыдущий/следующий).

Параметры стандартных модулей задаются, как правило, прописными буквами ('ALL' но не 'all') или цифрами и отделяются пробелом (показано далее в описании модулей).


cms4site™ :: Функциональные модули. Руководство пользователя
[4]



XMMSEARCH - ПОИСК ПО САЙТУ


Модуль обеспечивает поиск по основным файлам контента на основе структуры сайта. Дополнительные файлы данных, а также файлы контента страниц, недоступные при данном уровне авторизации (если применено), в поиске не участвуют. Закомментированные строки в файлах контента также игнорируются.

xmmsearch.php ALL

ALL - задает поиск по всем языковым версиям сайта, если этот параметр не указан, то поиск идет только по текущей языковой версии.

В поле для поиска можно задавать один или несколько не менее чем двухбуквенных фрагментов слов. Назначается способ поиска по нескольким словам (и/или). Специальные знаки игнорируются. Словоформы не обрабатываются. Результаты поиска сортируются по релевантности.


XMMSITEMAP - КАРТА САЙТА


Модуль выводит карту сайта с различной степенью детализации, с учетом языковых версий и авторизации. Закомментированные страницы игнорируются всегда.

xmmsitemap.php ALL level JUMP

ALL - задает вывод для всех языковых версий (текущая - первой), не задано (если нет следующих далее параметров) или ONLY - только текущая;
level - (число) ограничение по уровню вложенности, например, 3 - страницы уровня 4 и более - не выводятся;
JUMP - страницы переходов также делаются ссылками (полезно при ограничении по уровню).

Примеры:

xmmsitemap.php - текущая языковая версия, полная карта
xmmsitemap.php ALL - все языки, полная карта
xmmsitemap.php ONLY 9999 JUMP - текущий язык, полная (нереальное число), все переходы тоже ссылки
xmmsitemap.php ALL 2 JUMP - все языки, только до уровня 2, переходы - ссылки


XMMCOLLECT - ВНУТРЕННЕЕ МЕНЮ


Модуль позволяет вывести в области контента подменю следующего уровня или произвольное меню (выборку) любых страниц сайта, подобранных по определенному критерию. Позволяет развивать сайт в глубину, не прибегая к модернизации навигационной системы. При выборке учитываются языковая версия и авторизация.

xmmcollect.php dataN label ALL INFO NOBRANCH

dataN - (число) определяет поле данных в структуре сайта по которому производится выборка;
label - значение этого поля;
ALL - выборка из всех языковых версий, ONLY - только из текущей версии (для произвольной выборки);
INFO - выводить в оглавлении не только имена страниц, но и описание, может стоять первым, если три предыдущих опущены;
NOBRANCH - выводить только имена страниц, а не их ветки (для произвольной выборки);
Порядок следования ALL, INFO, NOBRANCH может быть любым.

Примеры:

xmmcollect.php - меню следующего уровня для текущей страницы
xmmcollect.php INFO - то же, с описанием страниц
xmmcollect.php 1 PRICE - выборка страниц, помеченных в структуре сайта PRICE в поле data1, текущий язык, выводятся ветки страниц
xmmcollect.php 1 PRICE ALL INFO - то же, все языки, с описанием страниц, выводом веток
xmmcollect.php 3 DOC - выборка страниц, помеченных в структуре сайта DOC в поле data3, текущий язык, ветки
xmmcollect.php 3 DOC NOBRANCH - то же, с выводом только имен страниц


cms4site™ :: Функциональные модули. Руководство пользователя
[5]



XMMPREVNEXT - ПРЕДЫДУЩИЙ/СЛЕДУЮЩИЙ


Модуль организует навигацию по страницам одного уровня, позволяя перейти к предыдущей, следующей и старшей странице, например:
< Заголовки | Ссылки | Таблицы >
< Заголовки | Контент | Таблицы >
< Заголовки ||| Таблицы >

xmmprevnext.php NOTOP
xmmprevnext.php SHORT

NOTOP - вместо ссылки к старшей странице выводится имя текущей;
SHORT - короткая ссылка к старшей странице (без имени).


XMMTOPLEVEL - ВЕТКА СТРАНИЦЫ ИЛИ ПЕРЕХОД К СТАРШЕЙ


Модуль предназначен для построения перехода к старшей странице или ветке страницы с переходами на любой уровень, например:
Главная > Продукция > Приборы > Промышленные > А200

xmmtoplevel.php parameter name

parameter - определяет действие: BRANCH - построение ветки страницы, * - переход к верхнему уровню, число - на сколько уровней вверх перейти;
name - необязательное имя для страницы верхнего уровня, например, Главная.

Примеры:

xmmtoplevel.php - переход на один уровень выше
xmmtoplevel.php BRANCH Главная - построение ветки с присвоением имени главной странице
xmmtoplevel.php * Начало - переход к главной странице с присвоением ей имени
xmmtoplevel.php 2 - переход на 2 уровня выше


XMMINNER - НАВИГАЦИЯ ПО СТРАНИЦЕ И САЙТУ


Модуль предназначен для построения ссылок внутри одной страницы (внутренняя навигация) и между страницами сайта.

xmminner.php mode parameters

mode - задает конкретное действие, если не указан, генерируется ссылка для перезагрузки текущей страницы;
parameters - параметры для заданного действия.

Действие PAGE: ссылки на страницы сайта

xmminner.php PAGE branch#label text
xmminner.php PAGE FLAG#label text

PAGE - действие;
branch - ветвь страницы, на которую надо сослаться;
#label - возможная метка на этой странице;
FLAG - отметка страницы в структуре сайта (поле dataN);
text - необязательный текст ссылки, если не задан, используется имя страницы.

FLAG определяется по всем прописным (большим) буквам. Если указанная страница не найдена, ссылка не генерируется. Разработчик может задать игнорирование текста ссылки для этого случая полностью. Поле dataN для отметки страницы в структуре сайта также определяется разработчиком. Отметка обрабатывается только в текущей языковой части сайта, при повторяющихся отметках находится первая. Если для PAGE ничего не задано, генерируется ссылка на начало сайта.


cms4site™ :: Функциональные модули. Руководство пользователя
[6]



Примеры:

xmminner.php PAGE en-products-akka
xmminner.php PAGE en-products-akka New product AKKA available now!
xmminner.php PAGE en-download#AKKA Download it now!
xmminner.php PAGE AKKA New product AKKA
xmminner.php PAGE AKKA#TOC
xmminner.php PAGE AKKA
xmminner.php PAGE

NB! Описанные далее действия LABEL, LINK, STARTTOC, LINKTOC и ENDTOC достаточно сложны, однако за ними следует пример их совместного использования.

Действие LABEL: внутренняя метка на странице

Формирует невидимую метку с именем, на которую может позиционироваться окно броузера при запросах вида http://www.mysite.ru/ru-modules-inner.html#METKA

xmminner.php LABEL name text

name - уникальное на данной странице имя для метки;
text - необязательный текст для метки, не печатается, если задано &nbsp;.

Если предварительно формировалось оглавление, пустое поле text будет заменено на указанное в оглавлении, по соответствию name, при непустом поле используется только оно.

Примеры:

xmminner.php LABEL E16 Features in brief
xmminner.php LABEL E10 &nbsp;
xmminner.php LABEL E17

Действие LINK: ссылка на метку

Задает строку, являющуюся ссылкой на указанную метку, созданную на этой странице действием LABEL.

xmminner.php LINK name text

name - имя метки;
text - текст для ссылки.

Действие STARTTOC: начало оглавления

Аналогично LABEL, но формируется метка для переходов к оглавлению, кроме этого начинается построение оглавления.

xmminner.php STARTTOC name text

name - уникальное на данной странице имя для метки;
text - необязательный текст для метки.

Действие LINKTOC: элемент оглавления

Задает строку оглавления, являющуюся ссылкой на указанную далее метку.

xmminner.php LINKTOC name text

name - имя метки, которая должна быть создана действием LABEL;
text - текст для строки оглавления, который может использоваться и в действии LABEL (не нужно повторять текст заголовка).

Действие ENDTOC: конец оглавления

Завершает построение оглавления.

xmminner.php ENDTOC


cms4site™ :: Функциональные модули. Руководство пользователя
[7]



Пример организации оглавления страницы

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

xmminner.php STARTTOC TOC555 Table of contents
xmminner.php LINKTOC ITEM1 The Misty Morning
xmminner.php LINKTOC ITEM2 Sunset in Red
xmminner.php LINKTOC ITEM3 Pinky Clouds
xmminner.php LINKTOC ITEM4 The Wind Will Come Tomorrow
xmminner.php ENDTOC

xmminner.php LABEL ITEM1
Any portion of text paragraphs etc. that describe The Misty Morning.
xmminner.php LINK TOC555 ^toc

xmminner.php LABEL ITEM2 Another heading for Sunset in Red
Any portion of text paragraphs that describe Sunset in Red.
xmminner.php LINK TOC555 ^toc

xmminner.php LABEL ITEM3
Any portion of text paragraphs that describe Pinky Clouds.
xmminner.php LINK TOC555 ^toc

xmminner.php LABEL ITEM4
Any portion of text paragraphs that describe The Wind Will Come Tomorrow.
xmminner.php LINK TOC555 ^toc

Этот же пример в действии, ссылки подчеркнуты, приведены комментарии. Количество текста увеличено. Обратите внимание на автоматически сформированные заголовки и замененный заголовок второго раздела:

Перед первой пунктирной линией находится метка ТОС555

Table of contents
  • The Misty Morning Ссылка на метку ITEM1
  • Sunset in Red Ссылка на метку ITEM2
  • Pinky Clouds Ссылка на метку ITEM3
  • The Wind Will Come Tomorrow Ссылка на метку ITEM4


  • The Misty Morning Здесь метка ITEM1
    Any portion of text paragraphs etc. that describe The Misty Morning.
    Any portion of text paragraphs etc. that describe The Misty Morning.
    Any portion of text paragraphs etc. that describe The Misty Morning.
    ^toc Ссылка на метку оглавления ТОС555

    Another heading for Sunset in Red Здесь метка ITEM2
    Any portion of text paragraphs that describe Sunset in Red.
    Any portion of text paragraphs that describe Sunset in Red.
    Any portion of text paragraphs that describe Sunset in Red.
    Any portion of text paragraphs that describe Sunset in Red.
    ^toc Ссылка на метку оглавления ТОС555

    Pinky Clouds Здесь метка ITEM3
    Any portion of text paragraphs that describe Pinky Clouds.
    Any portion of text paragraphs that describe Pinky Clouds.
    ^toc Ссылка на метку оглавления ТОС555

    The Wind Will Come Tomorrow Здесь метка ITEM4
    Any portion of text paragraphs that describe The Wind Will Come Tomorrow.
    Any portion of text paragraphs that describe The Wind Will Come Tomorrow.
    Any portion of text paragraphs that describe The Wind Will Come Tomorrow.
    ^toc Ссылка на метку оглавления ТОС555


    cms4site™ :: Функциональные модули. Руководство пользователя
    [8]



    Действие TOP: начало страницы

    xmminner.php TOP text

    необязательный text становится ссылкой к началу страницы.

    Пример:

    xmminner.php TOP ^наверх

    Действие EMPTY: пустые строки

    xmminner.php EMPTY how what

    how - количество пустых строк;
    what - необязательный текст в пустых строках.

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

    Пример:

    xmminner.php EMPTY 50 : : : : :


    XMMDATETIME - ДАТА И ВРЕМЯ


    Модуль выполняет различные функции, связанные с датой и временем.

    xmmdatetime.php timezone MODE parameter text

    timezone - задает часовой пояс при выводе локального времени или * при других действиях;
    MODE - задает выполняемое действие;
    parameter - задает формат вывода, может содержать список из C,D,T,Z или знак * (все). C - печать текста, D - печать даты, T - печать времени, Z - печать временной зоны;
    text - необязательный текст.

    В примерах дан формат вызова модуля и результат выполнения. Формат вывода даты и времени зависит от текущей языковой версии. Так, русскому 01.01.2005 соответствует английское Jan 1, 2005.

    Действие TZ: местное время в указанной зоне

    xmmdatetime.php Europe/Moscow TZ * Время в Питере
    Время в Питере: 11.04.2008 03:27:52 MSD

    Название часового пояса (временной зоны) берется из таблицы (приведена в документации), используются данные, хранящиеся и обновляющиеся на хостинговом сервере. Вывод производится с учетом летнего времени.

    Действие GMT: время по Гринвичу

    xmmdatetime.php * GMT * Время по Гринвичу
    Время по Гринвичу: 10.04.2008 23:27:52 GMT

    Действия MOD,MODMAIN: дата модификации текущей страницы

    xmmdatetime.php * MOD C,D,T,Z Страница обновлена
    Страница обновлена: 23.01.2007 21:50:59 MSK

    Выводятся параметры обновления файла контента для данной страницы. MOD - текущего, MODMAIN - основного при вызове модуля в дополнительном файле контента.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [9]



    Действие CURR: текущее время

    xmmdatetime.php * CURR C,D Цены действительны на
    Цены действительны на: 11.04.2008

    Действие MY: Локальное время на компьютере посетителя

    xmmdatetime.php * MY * Сейчас

    Используется JavaScript.

    Действие MYRUN: идущие часы

    xmmdatetime.php * MYRUN D,T

    Локальное время в виде идущих часов. Используется JavaScript, работает только в Internet Explorer.

    Действие ND: симуляция регулярных изменений

    xmmdatetime.php * 6D C,D Обновлено
    Обновлено: 07.04.2008

    Второй параметр ND меняется от 2D до 9D и задает интервал имитируемой даты обновления в днях (каждые N дней). Время выводить не рекомендуется - оно выбирается в пределах первой минуты суток.

    Пример "смены дат" для режима 5D:
    • Сегодня 11 августа - Обновлено 8 августа
    • Сегодня 12 августа - Обновлено 8 августа
    • Сегодня 13 августа - Обновлено 13 августа
    • Сегодня 14 августа - Обновлено 13 августа
    • Сегодня 15 августа - Обновлено 13 августа
    • Сегодня 16 августа - Обновлено 13 августа
    • Сегодня 17 августа - Обновлено 13 августа
    • Сегодня 18 августа - Обновлено 18 августа
    • Сегодня 19 августа - Обновлено 18 августа


    XMMNEWSLINE: НОВОСТНАЯ СТРАНИЦА И ЛЕНТА НОВОСТЕЙ


    Модуль предназначен для организации новостей - заголовков и ссылок на новостную страницу (для начальной страницы сайта) и собственно новостной страницы, возможно разбитой на несколько подстраниц. Новости хранятся в дополнительном файле контента.

    Файлы данных

    Допустим, что новостная страница задана в структуре сайта так:

    <1>news|News|News and announcements||NEWSPAGE

    это потребует файла контента с вызовом модуля en-news.dat и дополнительного файла, имя которого формируется прибавлением .newsdata (может быть иным) к основному имени, то есть: en-news.newsdata.dat

    Файл содержит строки следующего вида:

    date|header|text|linkid|image|startdate

    date - дата этой новости;
    header - заголовок новости (достаточно короткий);
    text - текст новости;
    linkid - необязательный идентификатор (ветвь) страницы сайта для построения ссылки;
    image - необязательное изображение для этой новости;
    startdate - публиковать новость после указанной даты (дд.мм.гггг) - необязательное поле.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [10]



    Пример:

    11.12.2004|WorldExpo'2004 Prize|We get it for KrakBrak product|en-prod-kb|kb.gif|12.12.2004
    02.12.2004|KrakBrak 2.4 Final|KrakBrak Final Version 2.4 released|en-prod-kb
    27.11.2004|KrakBrak Beta|We launched KrakBrak 2.0.beta|en-prod-kb||28.11.2004

    Важно: помещайте последнюю новость первой.

    Вызов модуля

    xmmnewsline.php id flag limit pagelimit

    id - номер поля dataN для идентификации страницы новостей;
    flag - значение поля dataN;
    limit - число, ограничивающее количество новостей на первой странице сайта;
    pagelimit - необязательное число, ограничивающее количество новостей на новостной странице. В случае превышения генерируется меню для подстраниц. Если не задано, выводятся все новости. Желательно, чтобы pagelimit превышал limit.

    Такой вызов модуля:

    xmmnewsline.php 2 NEWSPAGE 5 20

    предполагает основную новостную страницу сайта: <1>news|News|News and announcements||NEWSPAGE и файл контента en-news.newsdata.dat

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

    При вызове модуля в структуре сайта файл данных новостей будет уже просто en-news.dat, а строка структуры сайта, при условии что для вызова модулей используется поле data4, будет иметь вид:

    <1>news|News|News and announcements||NEWSPAGE||xmmnewsline.php 2 NEWSPAGE 5 20

    Действия

    Перед выводом новости сравниваются текущая дата и дата публикации (если задана). Если дата публикации еще не наступила, данная новость пропускается.

    При вызове на странице новостей модуль выводит заголовок, возможное подменю и блоки новостей, содержащие:
    • внутреннюю метку позиционирования страницы;
    • дату;
    • заголовок, ссылающийся на страницу сайта (если был задан) и та же ссылка в новое окно;
    • текст, обработанный активатором ссылок;
    • изображение (если было задано), выровненное вправо.

    При вызове на начальной странице сайта модуль выводит заголовок и заданное количество новостных блоков:
    • дата;
    • заголовок, ссылающийся на соответствующую внутреннюю метку на странице новостей;
    • в конце может быть выведена ссылка на все новости.

    Допускается использование модуля для создания архивов новостей по годам на отдельных страницах.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [11]



    XMMTEMPLATE: ВЫВОД ПО ШАБЛОНУ


    Модуль позволяет выводить данные типа таблицы по специальному шаблону. Сам шаблон задается разработчиком сайта и может быть достаточно сложным. Автоматически обеспечивается порядковый номер записи и постраничное разбиение. Наиболее удобно применение модуля для каталога продукции с показом изображений, построением ссылок на страницы расширенного описания, формирования электронного заказа и т.п.

    xmmtemplate.php pagesize template

    pagesize - количество строк исходного файла данных, показываемое на странице;
    template - дополнение к имени для файла данных (вместо .tempdata по умолчанию).

    Имя файла данных базируется на имени основной страницы с вызовом модуля путем добавления к нему значения .tempdata (если иное не задано разработчиком или при вызове). Так, для страницы: en-prod.dat потребуется файл данных: en-prod.tempdata.dat

    При вызове модуля в структуре сайта файл данных будет уже просто en-prod.dat, а строка структуры сайта, при условии что для вызова модулей используется поле data4, будет иметь вид:

    <1>prod|Products|Our products||||xmmtemplate.php 10

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


    XMMRANDOM: СЛУЧАЙНАЯ ВЫБОРКА


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

    xmmrandom.php blocks COMMON ANDSELF

    blocks - число выводимых блоков;
    ANDSELF - необязательное значение, отменяет исключение "ссылки на себя"
    COMMON - необязательное значение, определяет общий для всех страниц текущей языковой версии файл данных. Если не задан, для данной страницы имеется свой дополнительный файл данных. Например,
    xmmrandom.php 2 COMMON  вызванный на любой странице английской версии, требует дополнительного файла данных, например, en.random.dat
    xmmrandom.php 3  вызванный на странице en-misc-citations, требует дополнительного файла данных en-misc-citations.random.dat

    Файл данных содержит строки вида:

    header|text|linkid|image

    header - заголовок блока;
    text - текст блока;
    linkid - идентификатор (ветвь) страницы сайта для построения ссылки или полная ссылка вида http://...;
    image - имя файла изображения.

    Обязательно задание хотя бы одного элемента. Пустые строки и строки начинающиеся со знака # считаются комментариями. Формат показа информационных блоков настраивается разработчиком.

    Пример строки со всеми полями:

    PK100|Новый прибамбас хранит до 100 сообщений|ru-prod-pk100-prbmbs|pk100-p2.gif

    Пример файла для показа пословиц:

    |Семь раз отмерь, один в поле не воин.
    |Назвался груздем, продолжай лечиться!
    |Большому кораблю - большая торпеда.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [12]



    XMMDIRLIST: ОГЛАВЛЕНИЕ ДИРЕКТОРИЙ


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

    xmmdirlist.php dirname MODE columns days

    dirname - имя директории (для режима CD) или *;
    MODE - режим вывода - SM: директории как подменю, SH: директории как подзаголовки, CD: только указанная директория;
    columns - число колонок вывода;
    days - число дней для отметки новых файлов.

    Примеры

    xmmdirlist.php * SM 2
    xmmdirlist.php * SH 3 18
    xmmdirlist.php poqasonic CD 1 11

    В режиме SM выводится меню оглавления директорий (для перехода на сами директории), при первом входе первая директория делается текущей, а затем оглавление текущей директории (имена файлов являются ссылками на них).

    В режиме SH директории обрабатываются одна за другой, для каждой директории выводится ее имя в виде заголовка, а затем ее оглавление.

    Режим CD аналогичен SH, но выводится только указанная директория.

    Формат выводимой информации задается разработчиком и может содержать имя файла, расширение, размер файла, дату модификации, ширину и высоту для изображений. В стандартных настройках задано использование иконок для различных форматов файлов. Вывод может идти в несколько колонок, возможно определение недавно измененных файлов (отметка "новый"), интеллектуальная обработка имен: poqasonic_video_recorder_2388.pdf преобразуется в Poqasonic Video Recorder 2388.

    Ограничения имен директорий и файлов: должны содержать только латинские буквы на нижнем регистре, цифры, знаки минуса, подчеркивания, точки (но с точки не начинаться).

    Пример вывода:

    xmmdirlist.php * SH 1

    Eventually Dissatisfied Intl

    All Image One 9,572 11.01.2005 17:53:03 300x150
    No Image Two 8,923 11.01.2005 17:53:05 300x150
    Sample Archive 9,639 11.01.2005 17:52:59
    Sample Instruction 11,196 11.01.2005 17:53:02
    Unknown File 9,572 11.01.2005 17:53:01 300x150
    Yes Archive 9,639 11.01.2005 17:53:04

    Poqasonic International

    Sample Archive 9,639 11.01.2005 17:53:22
    Sample Image One 9,572 11.01.2005 17:53:19 300x150
    Sample Image Three 30,583 11.01.2005 17:53:25 700x446
    Sample Image Two 8,923 11.01.2005 17:53:23 300x150
    Sample Instruction 11,196 11.01.2005 17:53:21


    cms4site™ :: Функциональные модули. Руководство пользователя
    [13]



    XMMGBLIGHT: ГОСТЕВАЯ КНИГА


    Реализует простую гостевую книгу с ограничением длины сообщения и количества сообщений. База данных не используется.

    Сообщения разделяются по языковой версии текущей страницы, поэтому в разных языковых версиях будут разные гостевые книги.

    xmmgblight.php prefix

    prefix - необязательный идентификатор, добавляется к языковой версии сообщений, что позволяет организовать несколько гостевых книг (на разных страницах) в пределах одного языка.

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

    Файлы сообщений хранятся в директории mygblight и имеют имена состоящие из prefix, двухбуквенного идентификатора языка и отметки времени с точностью до микросекунды, например, 01ru1098287387402544.dat.

    Файл состоит из одной текстовой строки, разбитой на несколько полей символом |:
    1. UNIX-отметка времени с точностью до секунд с 1970 года (по нему формируются дата и время).
    2. Тема (заголовок) сообщения.
    3. Текст сообщения, Enter'ы заменены на переводы строки <BR>.
    4. Hostname посетителя (например, 133-133-adsl.wplus.net).
    5. IP-адрес посетителя (например, 193.87.133.133).
    6. Имя файла (без расширения).
    7. Ответ администратора.

    Изначально поле ответа администратора пустое. Туда можно поместить ответ, например, редактором Администратора сайта в составе cms4site™. Переводы строк задаются не клавишей Enter, а тэгом <BR>.

    Поля 4 и 5 могут пригодиться при вылавливании хулиганов, пакостящих в гостевой книге, однако положительный результат вылавливания на сегодняшний день кажется весьма маловероятным.


    XMMGUEST: ОТЛАДКА КОНТЕНТА


    Модуль показывает последний загруженный в особую директорию myguest файл контента и только тому посетителю, который его загрузил Администратором сайта, да еще и только в течение 10 минут. То же относится и к файлу, отредактированному редактором Администратора сайта. Это весьма удобно для отладки страниц.

    xmmguest.php QUIET

    QUIET - необязательный параметр, если задан и обновления файла не было, не будет показано ничего, в противном случае будет выдано диагностическое сообщение.

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


    XMMCONTENTCHECK: ПРОВЕРКА ФАЙЛОВ КОНТЕНТА


    Модуль предназначен для проверки соответствия файлов в контентной директории и структуры сайта.

    xmmcontentcheck.php

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

    Модуль предназначен для отладки (например, в локальной копии сайта). Для него можно завести отдельную страницу, которую нужно будет закрывать в структуре сайта комментарием # перед размещением на общедоступном сервере или закрыть авторизацией.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [14]



    XMMPOLL: ПРОВЕДЕНИЕ ОПРОСА


    Модуль предназначен для проведения опросов (голосований). Позволяет задавать текст вопроса и/или изображение, причем последнее может показываться либо целиком, либо в отдельном окне по нажатию на уменьшенную копию. Допускается только одно голосование посетителя, факт голосования отмечается в cookies. Проголосовавшим показываются результаты голосования с диаграммами м процентами ответов, отсортированные по убыванию количества ответов.

    xmmpoll.php

    Вопросы и результаты хранятся в дополнительном файле данных. Имя файла базируется на имени основной страницы с вызовом модуля путем добавления к нему значения .polldata (если иное не задано разработчиком). Так, для страницы en-page-poll.dat потребуется файл контента с определением опроса en-page-poll.polldata.dat.

    Первая строка файла данных имеет следующий формат:

    pollid|question|date

    pollid - идентификатор опроса (латинские буквы и цифры), для разных опросов нужно задавать разные идентификаторы;
    question - собственно вопрос;
    date - дата начала проведения.

    Последующие строки определяют вопросы и имеют следующий формат:

    counter|answer|image|*

    counter - поле счетчика ответов (изменяется системой при проведении опроса!), изначально пустое;
    answer - текст варианта ответа;
    image - имя файла изображения;
    * - показ изображения в отдельном окне.

    Должно быть задано поле answer, либо поле image, либо оба эти поля. При задании показа изображения в отдельном окне оно уменьшается по ширине до размера, определенного разработчиком (например, 50 пикселей). Поэтому рекомендуется все изображения, показываемые в отдельном окне, готовить одинаковых пропорций (например, 200х160, 250х200, 400х320, 500х400), а показываемые напрямую, соответствующего размера (в нашем случае 50х40).

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

    Внимание! Файл должен иметь атрибуты, разрешающие в него запись из среды PHP.

    Пример файла опроса:

    PIGGYBANK01|Какой вариант оформления вам нравится?|01.11.2004
    116|Синий парфюм|piggybank1.jpg|*
    98|Красный парфюм|piggybank2.jpg|*
    278|Милитари|piggybank4.jpg|*
    243|Классический|piggybank3.jpg|*
    147|Ни один из этих|piggybank5.gif


    В примере показаны счетчики ответов, накопленные при проведении опроса.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [15]



    XMMQUIZ: РОЗЫГРЫШ ПРИЗА


    Модуль предназначен для проведения розыгрыша призов. Обеспечивает вопрос для розыгрыша и отправку ответов по email.

    xmmquiz.php

    Вопросы и результаты хранятся в дополнительном файле данных. Имя файла базируется на имени основной страницы с вызовом модуля путем добавления к нему значения .quizdata (если иное не задано разработчиком). Так, для страницы en-page-quiz.dat потребуется файл контента с определением опроса en-page-quiz.quizdata.dat.

    Первая строка файла данных имеет следующий формат:

    quizid|question|info|mailquery|emailto

    quizid - идентификатор розыгрыша (латинские буквы и цифры), для разных розыгрышей нужно задавать разные идентификаторы;
    question - собственно вопрос;
    info - информация о розыгрыше;
    mailquery - вопрос о подписке на новости;
    emailto - куда посылать ответы.

    Последующие строки определяют вопросы и имеют следующий формат:

    counter|answer|image|*

    counter - поле счетчика ответов (изменяется системой при проведении розыгрыша!), изначально пустое, но может содержать начальные значения;
    answer - текст варианта ответа;
    image - имя файла изображения;
    * - показ изображения в отдельном окне.

    Должно быть задано поле answer, либо поле image, либо оба эти поля. При задании показа изображения в отдельном окне оно уменьшается по ширине до размера, определенного разработчиком (например, 50 пикселей). Поэтому рекомендуется все изображения, показываемые в отдельном окне, готовить одинаковых пропорций (например, 200х160, 250х200, 400х320, 500х400), а показываемые напрямую, соответствующего размера (в нашем случае 50х40).

    Пример файла розыгрыша:

    OFFICE2SITEQUIZ01|Какое фото победит?|РОЗЫГРЫШ: 01-ИЮНЯ-2005|Хочу получать новости|quiz@mail.mail
    23|Утро туманное|poll01.jpg|*
    35|Закат в красном|poll02.jpg|*
    13|Розовые облака|poll03.jpg|*
    2|Никакое|poll05.gif|



    cms4site™ :: Функциональные модули. Руководство пользователя
    [16]



    XMMFORMSENDER: ОБРАБОТЧИК ФОРМ


    Модуль обеспечивает следующие действия с формами:
    • построение формы по описанию;
    • подстановку фиксированных значений, переданных с других страниц;
    • совместную работу с модулем электронного заказа;
    • проверку содержимого полей;
    • формирование заказа по нескольким позициям с заданием количества и подсчетом стоимости;
    • показ неверно заполненных полей;
    • посылку правильно заполненной формы по списку адресов электронной почты;
    • добавление адресов получателей из полей формы.

    xmmformsender.php

    Имя дополнительного файла данных базируется на имени основной страницы с вызовом модуля добавлением .formdata. Так для страницы en-formpage.dat потребуется файл контента с описанием формы en-formpage.formdata.dat. При вызове модуля из структуры сайта это имя совпадет с именем основного файла.

    Каждая строка описывает одно поле формы. Формат строк различен для разных типов полей. Пустые строки и строки, начинающиеся со знака #, считаются комментариями.

    Описание формы

    Первая строка описывает форму в целом:

    emailfrom|header|EMAIL|emailto1|emailto2|emailto3...

    emailfrom - электронный адрес отправителя (поле From сообщения - от кого письмо).
    header - заголовок сообщения (Subject).
    EMAIL - определяет этот тип поля.
    emailtoN - список электронных адресов получателей.

    Поле text

    Описывает однострочное поле ввода.

    name|header|TEXT||initial|size|maxlength|conditions|lt|gt

    name - уникальный идентификатор поля (латинские буквы на нижнем регистре и цифры, начинается с буквы);
    header - описание поля, выводится перед полем;
    TEXT - определяет этот тип поля;
    initial - необязательное начальное значение поля;
    size - размер поля по горизонтали (в знаках равноширинного шрифта);
    maxlength - максимальное количество знаков для ввода;
    conditions - список условий проверки (необязательный);
    lt - минимальное количество знаков (необязательный);
    gt - максимальное количество знаков (необязательный).

    Conditions задаются разделенными запятой:
    separate - перед полем выводится заданный разработчиком разделитель (для выделения групп полей);
    required - обязательное поле;
    onlyalpha - только латинские буквы;
    alphanumeric - только латинские буквы и цифры;
    onlynumeric - только цифры;
    allcaps - только верхний регистр;
    nocaps - только нижний регистр;
    firstletter - начинается с буквы;
    email - адрес электронной почты (добавляется к списку получателей).

    Примеры:

    product|Product name|TEXT|||40|80|required,separate|3|80
    email|Your mail address|TEXT||@|30|50|required,email|6|50
    code|Registration code|TEXT||xxxxxxxx|30|8|required,onlynumeric|8|8



    cms4site™ :: Функциональные модули. Руководство пользователя
    [17]



    Поле textarea

    Описывает многострочное поле ввода с прокруткой.

    name|header|TEXTAREA||initial|width|height|conditions|lt|gt

    Параметры идентичны полю text, кроме:
    width - количество колонок в поле ввода;
    height - количество строк в поле ввода.

    Специальное поле с именем xmmorderbasket используется для совместной работы с системой электронного заказа:

    xmmorderbasket|*|TEXTAREA|||100 STYLE="height:1px;visibility:hidden"|1|required|100|90000

    Поле является невидимым, но в него помещается сформированный заказ.

    Поле password

    Аналогично полю text, но при вводе вместо вводимых знаков на экране видны знаки *.

    name|header|PASSWORD||initial|size|maxlength|conditions|lt|gt

    Все параметры идентичны полю text.

    Поле hidden

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

    name|header|HIDDEN||initial|autovalue|separate

    autovalue может принимать одно из значений, обеспечивает подстановку в поле:
    datetime - текущей даты и времени;
    ip - IP-адрес посетителя;
    host - hostname посетителя;
    agent - тип броузера посетителя;
    separate - перед полем выводится заданный разработчиком разделитель (для выделения групп полей);
    Остальные параметры идентичны полю text. Поле Hidden можно применять для размещения заголовков внутри формы (header).

    Если поле initial содержит *, а значение поля autovalue - external, производится подстановка значения, передаваемого в системной переменной с именем name. например, в такое поле:

    xmmordercode|Code|HIDDEN||*|external|separate

    будет подставлено значение 1800F1 при вызове страницы вида /en-prod-order.html?xmmordercode=1800F1, что позволяет разработчику организовать, например, заказ одного определенного товара, выбранного на предыдущей странице, передавая его методом GET, POST или через Cookies.

    Примеры:

    formname|PRESS INFO REQUEST FORM|HIDDEN||*||separate
    autodate||HIDDEN|||datetime
    autoip||HIDDEN|||ip
    autohost||HIDDEN|||host
    autoagent||HIDDEN|||agent


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


    cms4site™ :: Функциональные модули. Руководство пользователя
    [18]



    Поле select

    Описывает выпадающее меню для выбора одного из фиксированных значений.

    name|header|SELECT||selectreq|size|maxlength|value1|value2|value3...

    selectreq - необязательные требования: required - обязательно для выбора; other - имеется вариант "другое"; separate - перед полем выводится заданный разработчиком разделитель (для выделения групп полей);
    size - размер поля ввода для "другое";
    maxlength - максимальная длина для ввода в поле "другое";
    valueN - список значений для выбора.

    Поле с параметрами require,other обрабатывается так: если выбран пункт "другое", дополнительное поле должно быть заполнено, в противном случае оно очищается. Название пункта "другое" определяется в языковых настройках и не может быть задано иначе, например, "другие".

    Примеры:

    something|Select something|SELECT||required,other,separate|34|120|A11|A22|A33|A44|other
    anything|Выберите что-либо|SELECT||required,other|34|120|A11|A22|A33|A44|другое


    Поле radio

    Описывает группу кнопок, только одна из которых может быть выбрана.

    name|header|RADIO||radioreq|radioformat|value1|value2|value3...

    radioreq - required если поле обязательно; separate - перед полем выводится заданный разработчиком разделитель (для выделения групп полей);
    radioformat - oneline для расположения кнопок в строку, checked для начального включения первого значения;
    valueN - список значений.

    Пример:

    yourage|Select your age|RADIO||required|oneline|50
    yourage|Select your age|RADIO||required,separate||50


    Поле checkbox

    Описывает переключатель, который можно включить и выключить.

    name|header|CHECKBOX||checkreq

    checkreq - список параметров:
    • checked - изначально включен;
    • required - обязательное поле;
    • separate - перед полем выводится заданный разработчиком разделитель (для выделения групп полей);
    • before - больше отступ перед полем (игнорируется, если задано separate);
    • br - больше отступ после поля (при нескольких checkbox подряд так лучше отметить последний).

    Пример:

    yesiwant|I want to receive newsletters|CHECKBOX||checked,separate,br


    cms4site™ :: Функциональные модули. Руководство пользователя
    [19]



    Поле orderline

    Позволяет описать единицу продукции или услуги, задать количество или другие величины и рассчитать суммарную стоимость по произвольной формуле. Совместно с полем ORDERTOTAL позволяют организовать электронный заказ продукции.

    name|header|ORDERLINE|result|maxinput|equations|value1|value2|value3...

    header - заголовок (наименование продукта);
    result - заголовок поля суммарной стоимости:
    • maxinput - максимальное количество цифр в поле ввода;
    • equations - уравнения для подсчета;
    • valueN - заголовки дополнительных параметров для расчета (необязательные).

    Если не заданы элементы value, выводится переключатель (checkbox) и поле стоимости, при указанных value выводятся поля для ввода цифровой информации (например, количества продукции, частоты процессора и т.п.).

    Элемент equations содержит формулу для подсчета суммы на языке JavaScript. при этом доступ к полям осуществляется так:
    • выключатель доступен по имени x.name.status;
    • поля value доступны по имени x.namexxN.value, т.е. для поля c именем first второй параметр имеет имя x.firstxx2.value;
    • поле суммы доступно по имени x.namexxprice.value, для нашего примера это x.firstxxprice.value.

    Добавляемые к основному name суффиксы образуют имена namexxprice, namexx1, namexx2, namexx3..., для которых нужно обеспечить уникальность (не использовать) в данной форме.

    Минимально, equations содержит то, что присваивается сумме, например, цифру и проверку на включение:
    120*x.name.status/x.name.status что дает нулевое значение в выключенном состоянии и 120 во включенном.

    Далее, отделенные точкой с запятой, могут следовать операторы языка JavaScript, обеспечивающие подсчеты.

    Например:
    (120+120/x.namexx1.value)*x.namexx1.value;if(x.name.status)x.namexx1.value=Math.min(50,Math.max(1,x.namexx1.value));
    обеспечивает подсчет суммы в зависимости от количества по нелинейной зависимости и ограничение количества от 1 до 50. Следует обратить внимание, что деление на 0 выдает нулевой результат.

    Более простой пример: (2500*x.namexx1.value+200)*x.name.status/x.name.status - обычное умножение цены на количество плюс стоимость оформления заказа и проверка включения.

    Полей ORDERLINE может быть несколько, причем в equations возможен доступ к другим полям ORDERLINE, но это достаточно сложно и может быть сделано разработчиками сайта.

    Пример:
    a400|Cleaner A400|ORDERLINE||Price,$|2|(120*x.a400.value)*x.a400.status/x.a400.status|Quantity (1-99)

    Поле ordertotal

    Позволяет подсчитать общую сумму по всем предшествующим полям ORDERLINE с учетом НДС или без такового. Пересчет производится как по различным действиям с полями ORDERLINE, так и по кнопке "Пересчитать". В форме допускается только одно поле ORDERTOTAL, расположенное после всех полей ORDERLINE.

    xmmxxtotalamount|header|ORDERTOTAL||required|fieldsize|vatvalue|vatheader|netheader|calculate

    xmmxxtotalamount - название поля (должно быть именно таким, также внутри используются имена xmmxxnetamount и xmmxxonlyvat, которые не должны применяться в форме);
    header - название поля окончательной суммы;
    required - признак обязательного поля (иначе форма заказа будет отправлена с нулевым заказом);
    fieldsize - размер полей для вывода сумм;
    vatvalue - величина НДС в абсолютном значении (0.15 для 15%); если не задано, считается только общая сумма;
    vatheader - название для поля суммарного НДС;
    netheader - название для поля суммы без НДС;
    calculate - название кнопки "пересчитать".


    cms4site™ :: Функциональные модули. Руководство пользователя
    [20]



    Пример:

    xmmxxtotalamount|Total amount|ORDERTOTAL||required|12|0.16|16% VAT|Net amount|Calculate

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

    Поля submit, reset, print

    Описывают кнопки для выполнения действий с формой. Submit проверяет корректность заполнения и посылает корректную форму. Reset восстанавливает значения полей, поступившие при загрузке страницы. Print открывает стандартное окно печати для печати страницы с формой.

    name|header|SUBMIT
    name|header|RESET
    name|header|PRINT


    Поле header определяет текст внутри кнопки.

    Действия по submit

    Заполненные поля проверяются перед отправкой формы. Если поле необязательное, но содержит что-либо, проверка также проводится. Например:

    name|Non-required info|TEXT|||40|80||5|80

    поле должно или быть пустым или содержать не менее 5 и не более 80 символов.

    Адреса электронной почты проверяются на правильный синтаксис ([email protected] - это НЕ адрес) и, возможно, на правильный отклик указанного почтового сервера на запрос Mail Exchange (задается разработчиком).

    Если не все поля заполнены корректно, форма выводится снова с предупреждающим сообщением и окраской заголовков неверно заполненных полей. Правильно заполненная форма посылается по списку адресов и адресам из полей формы с признаком email. После этого на страницу выводится кнопка "Восстановить форму", которой желательно воспользоваться для отмены состояния POST, поскольку иначе форма может быть послана еще раз по перезагрузке страницы или по кнопке back броузера.

    Переменная ширина полей

    Для полей text, password, textarea и других можно задать точную ширину в пикселях (точках экрана) или переменную ширину в процентах. Например:

    product|Product name|TEXT|||40 STYLE="width:220px"|80|required,separate|3|80
    product|Product name|TEXT|||40 STYLE="width:100%"|80|required,separate|3|80
    product|Product name|TEXT|||40 STYLE="width:70%"|80|required,separate|3|80

    В первом примере ширина фиксирована, во втором и третьем может меняться при изменении ширины окна броузера.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [21]



    XMMORDER - ЭЛЕКТРОННЫЙ ЗАКАЗ


    Модуль предназначен для формирования корзины заказа на разных страницах сайта и отсылки заказа по электронной почте со специальной страницы.

    Включает в себя несколько модулей, часть из которых может вызываться разработчиком в шаблоне сайта, а часть (или все) может быть вызвана в файлах контента.

    xmmorder.php - назначение количества выбранных товаров, подсчет стоимости, заполнение реквизитов, отправка по электронной почте. Работает совместно с модулем xmmformsender, при этом файл данных для формопостроителя должен определять специальное поле xmmorderbasket (см. XMMFORMSENDER/textarea).

    Имя дополнительного файла данных базируется на имени основной страницы с вызовом модуля добавлением .formdata. Так для страницы en-order.dat потребуется файл контента с описанием формы en-order.formdata.dat. При вызове модуля из структуры сайта это имя совпадет с именем основного файла.

    xmmorderbasket.php - формирует корзину заказа, показываемую на страницах с заказом.

    xmmorderbasket.php label

    label - метка страницы с оформлением заказа в структуре сайта для обеспечения перехода на нее.

    xmmorderitem.php - добавление в корзину одного продукта.

    xmmorderitem.php code description price

    code - код продукта (уникален в пределах всей продукции);
    description - описание продукта (с пробелами);
    price - стоимость продукта (с десятичной точкой или '-' или 0) - последнее поле в строке.

    xmmorderitem.php 2322 Economy class 2 scheduler 22.90
    xmmorderitem.php 9900 Classic scheduler 0

    Допускаются продукты без цены ('-' или 0), подсчет по ним не производится, но количество назначается.

    Основное занесение продуктов в корзину выполняется, как правило, по прайс-листу. Перед таблицей прайс-листа вызывается специально написанный модуль, обеспечивающий добавление продукта в корзину из таблицы. Предполагается, что в таблице первая строка является заголовком, первая колонка содержит код продукта, вторая - описание, последняя - стоимость. Строки заголовка и подзаголовков таблицы пропускаются.

    Пример размещения вызова всех модулей в файлах контента

    а) на странице прайс-листа:

    myordertable.php
    xmmorderbasket.php ORDERSEND
    Code|Name|Weight|Price
    2001|Contemporary usability|16|42.97
    2002|Unstable virtue|11|13.60
    2014|Usable comments|23|22.00
    1011|Evaluatable fitness|22|16.22
    3000|Guided honour|11|67.99
    7000|Ununderstandable evaporator|19|77.77
    1111|Desirable unfortunization|7|11
    1222|Exclusively astonished|1|1


    б) на странице с одним продуктом:

    xmmorderitem.php 2322 Economy class 2 scheduler 22.90

    в) и на странице с меткой ORDERSEND:

    xmmorder.php


    cms4site™ :: Функциональные модули. Руководство пользователя
    [22]



    XMMAUTHORIZE - АВТОРИЗАЦИЯ


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

    Авторизуемые страницы задаются в структуре сайта признаком авторизации AUTHORIZED (или другим) в одном из полей данных (по стандартным настройкам - data1) и значением уровня доступа в другом поле данных (по стандартным настройкам - data2), например:

    <2>authorize|Авторизация||LOGOUT
        <3>authpage|Для дилеров||AUTHORIZED|0
            <4>sub1|Авторизованная подстраница уровня 2||AUTHORIZED|2
            <4>sub2|Авторизованная подстраница уровня 3||AUTHORIZED|3
            <4>sub3|Авторизованная подстраница уровня 4||AUTHORIZED|4

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

    Имеются два алгоритма авторизации, выбираемые в настройках: GE - больше или равно и EQ - равно. В режиме GE страница показывается пользователю, если его уровень авторизации больше или равен уровню страницы. В режиме EQ - только если уровни равны или уровень самой страницы равен 0.

    Рекомендуется организовать выход из авторизации на страницу, помеченную в примере LOGOUT. Для этого имеется функциональный модуль:

    xmmauthcontent.php mode word label

    mode - режим вывода: LOGOUT - построение выхода из авторизации; USER - вывод сведений о пользователе; BOTH - и то и другое;
    word - текст для ссылки выхода или * - стандартное значение;
    label - метка страницы перехода при выходе (для примера - LOGOUT).

    Пример:

    xmmauthcontent.php BOTH Отменить&nbsp;авторизацию LOGOUT

    построит примерно следующее:

    • Пользователь: ПРОГРЕСС [4] Иванов Сергей Ильич
    • Отменить авторизацию

    Файл данных для авторизации

    Пароли и сведения о пользователях хранятся в директории myuauth в файле authorized.php (или другом), имеющем следующий вид:

    <?/*
    идентификатор|пароль|уровень|сведения
    */?>

    Первая и последняя строки должны быть именно такими, внутренние строки содержат идентификатор пользователя, пароль, уровень доступа и сведения о пользователе, например:

    <?/*
    ПРОГРЕСС|YearTT201|4|Иванов Сергей Ильич
    РЕГРЕСС|ueyrueyreu|3|Отдел им. Маркетинга
    НЕВА-16|12345009|4|Егор Дралопупенко
    */?>

    Длина пароля должна быть не менее 8 знаков. Формат файла выбран таким по соображениям безопасности - его нельзя скачать с сайта по протоколу http, можно только помещать на сайт или редактировать на месте Администратором сайта.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [23]



    Рекомендации по применению

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

    В практическом применении механизм авторизации может быть применен разработчиком для показа модифицированной информации. Например, стоимость продукции пересчитывается по определенной формуле в зависимости от уровня авторизации (дилерские цены), поэтому один и тот же исходный прайс-лист показывается разным посетителям по-разному. Если же подобные действия уже реализованы (например, в MS Excel прайс лист содержит колонку базовой цены и несколько колонок дилерских цен, рассчитываемых по формулам или вручную), такой прайс-лист можно поместить на сайт целиком, показывая определенную ценовую колонку в зависимости от уровня авторизации.



    XMMCALENDAR - КАЛЕНДАРЬ


    Модуль предназначен для вывода календаря с учетом выходных, праздников и т.п. применительно к рабочему времени фирмы.

    1. Учитывается часовой пояс (временная зона), независимо от расположения хостинга. А для зарубежных посетителей крайне полезно знать, есть ли смысл звонить в фирму прямо сейчас или пятница уже кончилась, и придется ждать двое с половиной суток.
    2. Отсчет начинается с текущего или предыдущего дня/месяца, т.е. в реальном масштабе времени.
    3. Прошлое, будущее и сейчас учитываются и отражаются цветом. Текущий день инвертируется.
    4. Кроме стандартных выходных учитываются официальные праздники и продуманно сопутствующая им чехарда переносов рабочих дней.
    5. Отдельно могут назначаться рабочие и нерабочие дни самой фирмы, например субботы - рабочие, а понедельники - библиотечные:) дни.
    6. Также фирма может назначать свои собственные праздники (пикники, например) и переносы рабочих дней поверх официальных праздников.
    7. Начало и окончание рабочего дня тоже может назначаться в зависимости от дней недели.
    8. Количество выводимого можно менять: отдельно выбирая заголовок, время, календарь; задавать количество столбцов и строк календаря. В минимальном варианте можно вывести только календарь на текущий месяц или только время на сегодня.
    9. Цвета, шрифты, рамки и пр. настраиваются под дизайн сайта.

    xmmcalendar.php timezone HTC before columns rows text

    timezone - временная зона (часовой пояс) или * для значения из настроек - см. модуль xmmdatetime.php
    HTC - задает вывод заголовка (H), линейки дней (T), календаря по месяцам (C). Должно быть задано хотя бы одно значение.
    before - 1 или 0, при 1 линейка и календарь строятся начиная с предыдущего дня и месяца соответственно, иначе - с текущего.
    columns - число колонок, минимально на единицу больше before.
    rows - число строк в календаре, не менее 1.
    text - заголовок в одно слово (при выводе слэш заменяется на запятую с пробелом, подчеркивание на пробел), если не задано, используется timezone.

    xmmcalendar.php * HTC 1 5 1

         Europe, Moscow: 11.04.2008 03:27:52 MSD (10:00-18:00)     
     
    10
    Чт 10.04.2008
     
    11
    Пт 11.04.2008
     
    12
    Сб 12.04.2008
     
    13
    Вс 13.04.2008
     
    14
    Пн 14.04.2008
    Март 2008
    ПнВтСрЧтПтСбВс
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
    Апрель 2008
    ПнВтСрЧтПтСбВс
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
    Май 2008
    ПнВтСрЧтПтСбВс
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    Июнь 2008
    ПнВтСрЧтПтСбВс
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
    Июль 2008
    ПнВтСрЧтПтСбВс
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           


    cms4site™ :: Функциональные модули. Руководство пользователя
    [24]



    Дополнительные данные

    Задаются в дополнительном файле, общем или привязанном к текущей странице. Файл имеет специальный формат, хотя правила пропуска пустых и содержащих знак # строк стандартны. В файле имеются строки вида:

    код:значение,значение,...

    значения могут быть цифрой или датой в формате дд.мм.гггг, а могут быть не заданы вообще, код задается как показано далее.

    Обычные дни являются праздниками

    OH:23.02.2005,08.03.2005,01.05.2005,02.05.2005,09.05.2005,07.11.2005,12.12.2005


    Рабочие дни переносят на выходные из-за праздников

    OW:05.03.2005


    Когда у фирмы личные праздники

    CH:11.06.2005,13.06.2005,14.06.2005,15.06.2005,21.02.2005


    Рабочие дни фирмы в общие праздники

    CW:23.02.2005


    Обычная еженедельная работа фирмы в выходные, 0-вс,6-сб

    SW:6


    Еженедельные выходные фирмы по обычным рабочим дням, 1-пн,2-вт,3-ср,4-чт,5-пт

    SH:1


    Время начала рабочего дня по дням недели, последнее - для официальных праздников, index(0-вс,1-пн,2-вт,3-ср,4-чт,5-пт,6-сб,7-спецдень CW)
       0  1  2  3  4  5  6  7

    WS:0,10,10,10,10,10,11,12


    Время окончания рабочего дня по дням недели, последнее - для официальных праздников, index(0-вс,1-пн,2-вт,3-ср,4-чт,5-пт,6-сб,7-спецдень CW)
       0  1  2  3  4  5  6  7

    WE:0,18,18,18,18,18,17,16


    Данные необходимо периодически обновлять по мере появления постановлений о переносе выходных и естественного течения времени, следя за диапазоном выводимых месяцев.


    XMMCURRENCY - ВАЛЮТА


    Модуль обеспечивает вычисление кросс-курса между заданными валютами. Вызывается разработчиком сайта. Применяется для перевода цен по текущему курсу ЦБ РФ. Данные берутся с бесплатного сервиса РБК и дополнительно хранятся на сайте на случай неконнекта.

    xmmcurrency.php DEMO

    При вызове в демо-режиме выводит пример перевода случайной суммы из одной случайно выбранной валюты в другую (каждый раз разные):

    288.58 BYR = 0.08 EUR (0.0003) 2008-04-11


    XMMWEATHER - ПОГОДА


    Модуль обеспечивает вывод прогноза погоды по городам. Данные берутся с бесплатного сервиса РБК и дополнительно хранятся на сайте на случай неконнекта.

    xmmweather.php citieslist

    citieslist: список городов через запятую или SORTALL для вывода полного списка.

    +2..+4°CСанкт-Петербург (26063)
    +20..+22°CМосква (27612)
    +21..+23°CВашингтон (72405)
    +16..+18°CПекин (54511)


    cms4site™ :: Функциональные модули. Руководство пользователя
    [25]



    XMMECAT - КАТАЛОГ ПРОДУКЦИИ


    Модуль предназначен для работы с каталогом продукции, представленным несколькими файлами, экспортированными из 1С или Excel.

    xmmecat.php LAYOUT BASKET

    LAYOUT - строятся все вызовы составных частей (иначе это должен обеспечить разработчик)
    BASKET - подключается корзина заказа

    Работа модуля

    • Продукция снабжается кодом с произвольным количеством полей произвольной длины. Количество уровней и разрядность кода задается в настройках, например 1,2,2,3 предполагает код вида abbccddd, 2,2,2,2,4 - aabbccddeeee. Последнее ненулевое поле в коде обозначает "конечный" продукт, а там где последнее поле нулевое - это вершины дерева. Пример: 2,2,2,2 => 15020001, 15020000. Продукты могут появляться на любом уровне.

    • Код может быть и буквенно-цифровым, но "нулевое" требование должно соблюдаться, например: ЕЕ16АВ00, ЕЕ16АВRR. При обработке коды дополняются справа нулями, если их длина меньше требуемой и режутся, если больше.

    • Данные каталога готовятся в виде 2-х или более файлов. Файл с полностью нулевым именем - оглавление первого уровня. Остальные файлы определяются по оглавлению первого уровня, каждый из них содержит строки, описывающие и дерево (второго, третьего и т.д. уровней) и "конечные" продукты. Т.е., если в файле 00000000 указано 01000000, 02000000, то будут использоваться именно файлы 01000000 и 02000000. Наличие в этих файлах строчек со "старшим" кодом необязательно, но не помешает.

    • Каждая значащая строчка (пустые и содержащие # в первой позиции строки пропускаются) содержит несколько полей, отделенных вертикальной чертой |, первое поле - код. Прочие поля используются произвольно, но однотипно (подстановка в шаблоны вывода по номеру поля). Например, все вершины содержат вторым полем название, у продукта второе поле - наименование, третье - единица измерения, четвертое - цена, пятое - производитель. Все это позволяет легко экспортировать данные из 1С или MS Excel. Одно из полей (например, производителя) можно добавлять к наименованию в поиске.

    • Каталог обрабатывается по запросу, например 15025500. В результате выбирается текущее состояние дерева (все вершины первого уровня и раскрытые следующие уровни, если таковые имеются), а также все "конечные" продукты (если есть). Это позволяет построить деревообразное меню и страницу каталога с продуктами. Результаты сортируются по коду.

    • При поиске учитываются наименования старших вершин (номер поля и коэффициенты ранга по уровням задаются в настройках). Поиск является опциональным.

    • Строятся следующие системы навигации:
      • Дерево каталога с раскрытием и закрытием вершин одной ветки;
      • Форма поиска (опционально);
      • Текущая ветка (заголовок) со ссылками на старшие вершины (опционально);
      • Меню следующего уровня, если на текущем нет товарных позиций (опционально);
      • При поиске строятся ветки старших уровней по группам товаров и производится страничное разбиение результатов.

    • Можно использовать стандартный модуль электронного заказа.

    • Информация по отдельному продукту (опционально) вытаскивается на основе кода продукта или специального отдельного поля-идентификатора:
      • Определяется есть ли, что показывать (файл данных или картинка jpg, gif, png). Если уже найдена картинка jpg, gif и png не ищутся, если найден gif, не ищется png;
      • Если есть изображение и из него можно сделать превьюшку (требуется библиотека GD), она формируется как объект ссылки, иначе опционально берется искаженная картинка или стандартный объект. Превьюшки могут быть одинаковой ширины/высоты или одинаковых размеров с вырезом фрагмента исходной картинки и уменьшением;
      • Если есть файл данных, формируется открытие отдельного окна с вызовом обработчика контента (предполагается, что большая картинка вызвана в файле, там, собственно, можно много чего наворотить);
      • Если файла данных нет, формируется открытие отдельного окна для показа большой картинки.
      • Отдельные окна могут быть те же самые, а могут быть отдельными для каждого вызова (для картинок, правда, свое, а для текстов - свое).


    cms4site™ :: Функциональные модули. Руководство пользователя
    [26]



    • Информация по странице каталога выбирается по коду страницы (с нулевым окончанием).
      • Если есть файл код.dat, он показывается в отдельном окне.
      • Если есть файл код.i.dat, он выводится перед таблицей (ясно, что туда не надо много запихивать - например несколько картинок в линию или абзац текста).


    Замечания по работе

    Модуль имеет большое количество настроек и, скорее всего, будет интегрирован в шаблон сайта разработчиком.

    Предельный объем каталога зависит от мощности хостингового сервера. Реальные значения на 2006 год - 20000 записей, разбитых на 5-15 подразделов первого уровня.

    Поиск по каталогу идет 2-3 секунды при суммарном объеме файлов каталога около 2 Мб.


    XMMICAT - МИНИКАТАЛОГ ПРОДУКЦИИ


    Модуль предназначен для работы с каталогом продукции, представленным одним файлом, экспортированным из 1С или Excel. Возможно "раздельное" применение модуля для нескольких файлов на разных страницах сайта.

    xmmicat.php r orderlabel

    r - первый символ автоматически формируемого или нормализуемого кода продукции или *
    orderlabel - метка страницы заказа продукции, вызывает подключение корзины заказа

    Работа модуля

    В настройках модуля задается автоматическое формирование или нормализация кода продукта, колонка наименования, колонка цены (цена также нормализуется). Прочие колонки могут быть произвольными.

    Модуль строит следующие информационные блоки:
    • Меню по встретившимся буквам первого слова наименования (А,Б,В,...)
    • Форму для поиска
    • Меню по первым словам выбранной буквы
    • Фрагмент каталога по выбранному слову или букве или результат поиска
    • Корзину заказа (опционально)
    • Переключатель показа фрагмента каталога при выборе буквы (все слова/первое слово)
    • Переключатель показа "все слова выбранной буквы"
    • Дату обновления файла каталога и число строк в нем и в результате

    Требования к данным

    Минимально в строке каталога может быть только наименование продукта, однако практическое применение таких данных лишено смысла. Поэтому желательно присутствие в каталоге следующих полей:
    1. код продукции (может формироваться автоматически)
    2. наименование продукции
    3. единица измерения (штуки, комплект, метр погонный, литр и т.д.)
    4. стоимость единицы продукции

    Допускаются и другие поля, если это необходимо.

    В наименованиях продукции первым должно стоять значащее слово. Например, применительно к автозапчастям, опора шаровая обычно именуется работниками автосервиса просто как "шаровая", поэтому в каталоге желательно писать "шаровая опора" но не "опора шаровая".

    В настройках модуля задаются особенности фильтрации первого слова (по конкретным данным), например удаление кавычек, скобок и т.п., а также коррекция ошибок набора.

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

    В зависимости от мощности хостингового сервера, модуль легко справляется с 3-6 тысячами записей в файле.


    cms4site™ :: Функциональные модули. Руководство пользователя
    [27]



    XMMGALLERY - ФОТОГАЛЕРЕЯ


    Модуль предназначен для показа фотогалерей и обладает следующими особенностями:
    • Показ изображений в отдельном окне или прямыми ссылками в новое окно при выключенном javascript;
    • Автоматическое формирование изображений предпросмотра (превьюшек);
    • При отсутствии библиотеки GD берутся исходные изображения или превьюшки можно сформировать вручную;
    • На странице можно разместить несколько галерей, галерею можно выровнять вправо;
    • При вызове назначается количество колонок;
    • Изображения задаются списком или по маске (автоматический поиск по директории);
    • При вызове назначается вертикальное выравнивание превьюшек во избежание, например, отрезания голов;
    • Поверх превьюшки можно разместить иконку 'увеличить' или некое графическое обрамление.

    Вызов модуля

    xmmgallery.php modes image [image] ...
    xmmgallery.php modes mask

    modes - режимы - несколько символов подряд, если цифра - то первая:
    n - цифра - число колонок
    R - выровнять галерею вправо
    C - общий перевод строки после галереи типа R
    A - автоформирование списка по маске
    T - выравнивание превьюшек поверху
    B - выравнивание превьюшек понизу
    * - стандартные режимы (если ничего другого не задано)

    image - имя файла изображения или список имен

    mask - шаблон поиска для режима А, в шаблоне * означает любые символы, в фигурных скобках перечисляются варианты через запятую, например 400.{a,b,c}.big.{jpg,gif}

    Примеры:

    xmmgallery.php 3T 1.jpg 2.jpg 3.jpg 4.jpg 5.gif 6.png 7.png
    xmmgallery.php 1RA poll*.{jpg,png} - как на этой странице

    Примечание

    Аналогичная галерея может быть построена обработчиком контента по строкам вида
    1.jpg +
    2.jpg +
    3.jpg +
    и его настройке на показ изображений без перевода строки. Разница в том, что этот способ может более подойти для "резинового" дизайна сайта - изображения будут переноситься при изменении размеров окна броузера. Однако, функциональных возможностей тут меньше.


    XMMFIND - ПОИСК ПО СТРАНИЦЕ


    Модуль предназначен для поиска текстового фрагмента на текущей странице. Блок поиска размещается неподвижно относительно окна броузера и отслеживает все перемещения и скроллинги в нем. В настройках назначается размещение относительно одного из четырех углов окна, сообразно с шаблоном сайта.

    xmmfind.php text

    text - необязательный текст для формирования ссылки на открытие окна поиска

    Пример


    Действие модуля аналогично встроенному поиску броузера. Разница заключается не только во внешнем виде, но и в "подсказке" пользователю о самой возможности поиска на тех страницах, где это необходимо. Не секрет, что многие пользователи забывают или вообще не знают о встроенном поиске броузера (Ctrl-F).


    cms4site™ :: Функциональные модули. Руководство пользователя
    [28]



    XMMMYSITE - ЗАКЛАДКИ ПОСЕТИТЕЛЯ (МОЙ САЙТ)


    Модуль позволяет создавать и хранить список закладок страниц сайта каждому посетителю.

    xmmmysite.php

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

    Возможны следующие действия при переходе на страницу с вызовом модуля:
    1. С главной страницы сайта, по обычной ссылке (из карты сайта, например), по закладке броузера, по ссылкам с других сайтов (в том числе поисковиков) или напрямую - показ списка закладок (если есть).
    2. С других страниц сайта по специальной ссылке, обеспеченной разработчиком - показ списка имеющихся закладок, перед которым предлагается добавить в закладки ту страницу, с которой совершен переход или не добавлять ее.
    3. На самой странице можно удалять имеющиеся закладки (по отдельности или все) и переходить по ссылкам закладок на страницы сайта.
    4. При изменениях в структуре сайта устаревшие закладки удаляются автоматически.

    На странице закладок полезно разместить краткую подсказку по работе с ними.


    XMMVACANCY - РАБОТА СО СПИСКОМ ВАКАНСИЙ


    Упрощает работу с данными, позволяя свести их к таблице без избыточных повторов. Модуль умеет временно комментировать вакансии, опционально повторять текстовый блок (куда слать резюме) после каждой вакансии, а не только в конце, определять отсутствие вакансий на сегодняшний день, по-умному строить внутреннее оглавление вакансий и т.п.

    xmmvacancy.php

    Данные хранятся в таблице следующего формата:

    Строка 1: Заголовки пунктов описания вакансии. Первая колонка пустая, остальные колонки произвольны.
    Строка 2: Объединенная ячейка, содержащая вступительный текст.
    Строка 3: Объединенная ячейка, содержащая координаты для отсылки резюме.
    Строка 4: Объединенная ячейка, содержащая альтернативный текст на случай отсутствия вакансий.
    Строки 5 и далее: Описания вакансий:
    • колонка 1: признак действующей вакансии - вакансия не показывается, если поле пустое;
    • колонка 2: название должности - вакансия не показывается, если поле пустое;
    • колонки 3 и далее: в соответствии с заголовками пунктов, если поле пустое, оно пропускается для данной вакансии.

    Режимы настроек задаются разработчиком сайта или выносятся им в константы сайта:
    • автоматическое построение оглавления: всегда, никогда, если вакансий больше заданного количества.
    • повтор координат (заданных в строке 3) после каждой вакансии или в конце;
    • чистка html-тегов;