WTG Zebra 1.00. Управление данными.
Содержание раздела:
1. Записи
2. Подпрограммы
2.1. Параметры
2.2. Редактирование процедур
2.3. Регулярные процедуры
3. Пользователи
3.1. Параметры настройки
3.2. Параметры пользователя
3.3. Пользовательские формы
4. ЧПУ
В данный раздел включена информация об управлении данными, которые
неограниченно размножаются в ходе эксплуатации Zebra. Заметим, что Zebra
оперирует двумя основными видами данных: постоянными, которым могут быть
сопоставлены заранее заданные идентификаторы, и динамическими, идентификаторы
которых могут быть либо образованы по неким правилам, либо перечислены в
каком-то из постоянных параметров. Постоянные, в свою очередь, также разделяются
на несколько видов, отличающихся, в частности, способами их изменения
некоторые можно изменить явно, осуществив непосредственное редактирование,
другие изменяются самой Zebra для реализации общей последовательности своего
существования. В конечном счете все упомянутые категории данных становятся
той совокупностью условий, в комбинации которых с программной реализацией
Zebra проявляется существование вашего сайта и служб на нем.
Ускользающий смысл предыдущего абзаца станет более понятен после
ознакомления с данным разделом документации.
1. Записи
Записи в Zebra понятие весьма субъективное. Есть записи такие,
есть записи сякие... Вообще говоря, используются два типа записей. Первый
записи в классическом понимании этого слова. То есть некий элемент в
базе данных, в котором хранится определенная информация, извлекаемая по запросу
для приготовления дальнейшего блюда.
Второй тип записей представляет собой
именованные объекты, которые могут неограниченно использоваться внутренними
или внешними процедурами, хранить некоторые относительно статические данные и
прочую информацию.
Относительно статическую потому, что она в любой
момент может быть изменена некой специально предназначенной для такой
модификации процедурой.
Упоминание в специальном формате записи в Zebra, как правило,
приводит к тому, что она в конечном продукте жизнедеятельности Zebra заменяется
на сопоставленный ей текст. Отличие записи от ключа (см.
«Работа с Zebra Site. Описание
страницы») в том, что ключи контекстно зависимы, их корректная
интерполяция в описании страницы производится только при наличии такого
определенного ключа. Записи же, будучи упомянуты, подлежат обязательной
подстановке (если, разумеется, такая запись существует).
Создание или редактирование записей штука исключительно простая.
Достаточно зайти в раздел администрирования основного меню «Записи»,
затем выбрать запись на редактирование или добавление. При этом существенны
установки языка и профиля. Обращаем ваше внимание на то, что выбор записи
при рендеринге страницы осуществляется согласно установленному порядку поиска
(см.
«Разделение ресурсов»).
При соответствующих настройках вы можете видеть
сводную таблицу зарегистрированных записей, в которой указывается
идентификатор записи (коим оная запись должна отмечаться при ее
упоминании; правила наименования записей отвечают пункту
«Наименования»), комментарий, а
также размер.
Записи можно распределить по группам. Явное создание групп не предусмотрено,
группы добавляются автоматически, если в идентификаторе записи присутствует
разделитель
_. Тогда часть идентификатора, идущая до разделителя, принимается
за идентификатор группы. Например, если создается запись с идентификатором
testgroup_teststring, то Zebra полагает, что это запись
teststring
в группе
testgroup, и делает соответствующие изменения. При этом для корректного
рендеринга необходимо указать полный идентификатор записи (существуют особые
случаи, подробнее см.
«Работа с Zebra Site.
Описание страницы»). Многоуровневая вложенность групп не
предусмотрена, записи можно распределить по группам в глубину только на один
уровень.
Примечания. 1. Создание новой записи на базе уже существующей
можно осуществить простым заданием нового идентификатора (как и во многих
других разделах администрации Zebra, хотя есть и особые случаи). 2. Обратите особое внимание
на недопустимость саморекурсии записи. Хотя Zebra поддерживает практически
неограниченную вложенность записей, процедур, ключей и т. д., опасайтесь
получить ссылку внутри записи на саму себя, поскольку в таком случае
произойдет зацикливание рендеринга, и генерация страницы будет прервана по
таймауту, а клиент ничего не получит.
Существуют некоторые заранее
зарезервированные записи Zebra. Их изменять либо не рекомендуется, либо
допускается, но оч-чень, оч-чень осторожно. Эти записи расположены в группе
Zebra.
В процессе эксплуатации Zebra возможны сбои, в результате которых происходит
утеря некоторых данных, в том числе кумуляторов (списков) записей, по которым
происходит верификация интерполируемой записи. Для таких случаев предусмотрена процедура
регенерации кумуляторов, вызываемая кнопкой «Восстановить». Обратите внимание,
что в прочих разделах администрирования также может присутствовать такая кнопка, и выполняет
она схожую функцию.
2. Подпрограммы
Некоторые параметры Zebra могут быть определены в виде обычного
программного кода на языке Perl, являющемся базовым языком Zebra. При известной
сноровке и квалификации вполне реально воспользоваться и другими языками,
особенно если это касается внешне-запускаемых программ. Тем не менее,
разработчики рекомендуют при необходимости придерживаться Perl. Достаточно
подробная документация по интерфейсу программирования для Zebra приведена
в разделе
«Руководство по API».
Частично информация об использовании подпрограмм в Zebra изложена
в главе
«Работа с Zebra Site. Процедура». Здесь же
более пристально рассматривается поддержка процедур ядром Zebra, а также
определение произвольных регулярных действий.
2.1. Параметры
Элементы.
Выполнять регулярные процедуры.
Разрешает выполнение процедур по расписанию. Или запрещает их. При разрешении
Zebra пытается установить в очередь системного Cron запуск модуля Zebra Cron,
который осуществляет все манипуляции, необходимые для выполнения процедур. Если
Zebra не удается это сделать, пользователю рекомендуется командная строка для
явного запуска.
Частота сканирования регулярностей, раз/час.
Параметр устанавливает частоту, с которой Zebra Cron будет запускаться
посредством системного Cron. Эта частота является определяющей, никакие другие
события Zebra, назначенные для выполнения через Zebra Cron, не могут выполняться
чаще определенной глобальной частоты. Любые регулярности, подразумевающие
б
ольшую частоту, будут сводиться к данной. Величину рекомендуется
задавать целочисленную, в пределах 1-60. При значении 1 выполнение производится
один раз в час, при значении 60 60 раз в час, т. е. каждую минуту.
По умолчанию устанавливается значение 1.
Выполнять сервисные процедуры. В Zebra имеется несколько
специальных процедур, предполагаемых к периодическому обязательному применению,
таких как, например, упаковка или резервирование баз. Каждую такую процедуру можно
тонко настроить индивидуально (см. ниже). Данный параметр однозначно
отключает выполнение всех их независимо от прочих условий.
Расписание сервисных процедур. В
данном параметре предполагается глобальное определение расписания выполнения
сервисных процедур. Все определения прочих сервисных процедур, не укладывающиеся
в указанное расписание, будут проигнорированы или сведены к нему.
Формат расписания задается следующими правилами:
BB:BB-EE:EE
BB:BB-EE:EE #XX
BB:BB-EE:EE CC:CC-DD:DD #XX
CM #XX (или просто
#XX)
BB:BB-EE:EE &XX CC:CC-DD:DD &YY FF:FF-GG:GG &ZZ
Здесь
BB:BB время начала действия процедур,
EE:EE окончания, в часах и минутах;
#XX
частота выполнения процедур в сутки (значочек
# в дальнейшем
довольно часто будет обозначать именно частоту, и именно в сутки).
Если же вместо символа
# использовать
&, то указанное
число будет восприниматься как частота в пределах обозначенного времени.
Обозначение
CM, равно как и
00:00-24:00, соответствует
круглосуточному контролю и может быть опущено. В качестве частоты допускается
указание
ALWAYS, тогда процедура будет выполняться каждый раз
при сходимости глобальных критериев регулярности.
Если частота не определена, принимается либо частота, выставленная после всех
интервалов, либо значение
1.
Примеры:
01:30-03:00 осуществить процедуры в промежутке между
1:30 и тремя утра.
01:30-03:00 #24 осуществить процедуры в том же промежутке,
при этом учесть выполнение процедуры каждый час, то есть максимально процедуры
будут выполнены дважды в течение суток во время указанного промежутка.
#240 выполнить процедуры 240 раз в течение суток. На самом
деле они могут быть выполнены и меньшее количество раз, если вам недоступно
использование Cron, и его функции переназначаются Zebra. В таком случае
запуск процедур возможен только по факту активации Zebra (например, посредством
Zebra Site). По поводу организации выполнения процедур через Cron или Zebra
см.
«Запуск регулярных процедур».
00:00-01:00 &2 02:00-04:00 &5 07:30-12:00 &20 выполнить
процедуры в обозначенные промежутки времени по столько-то раз максимально
в каждом конкретном случае.
01:30-02:30 13:30-15:00 23:30-00:30 #24 выполнить
процедуры в указанные промежутки времени, исходя из того предположения,
что процедуры выполняются один раз в час.
05:00-06:00 &2 07:00-08:00 #48 09:00-10:00 &ALWAYS 12:00-14:00 15:00-17:00 23:00-01:00 #24
выполнить процедуры по следующему расписанию: с 5 до 6 утра дважды,
с 7 до 8 утра из расчета 48-кратного выполнения в течение суток,
с 9 до 10 утра каждый раз при возможности выполнения; с 12 до 14,
15 до 17 и с 11 вечера до 1 утра выполнять из расчета 24-кратного выполнения
процедур в течение суток.
Если определен критерий регулярности, но опущен один из двух параметров
(время или частота), то опущенные по умолчанию приравниваются круглосуточному
слежению и однократному применению соответственно.
Паковать базы. Включает регулярную сервисную процедуру
упаковки баз освобождения их от мусора, постепенно накапливающегося
в процессе работы. Данную процедуру не рекомендуется разрешать для выполнения
посредством Zebra, если есть возможность назначить ее Cron. Более того,
излишняя частота ее осуществления тоже ни к чему, и наиболее правильным
вариантом нам представляется ручной старт этой процедуры.
расписание упаковки. В этом поле
задается расписание упаковки баз, формат параметра описан выше.
Автоматическое резервирование баз. Включается регулярная
сервисная процедура, осуществляющая резервное копирование баз Zebra с
предварительной конвертацией их в текстовый формат. Базы, подлежащие
регулярному резервированию, необходимо отметить в разделе администрирования
«Ядро. Резервирование и обновление». Для
резервного копирование баз наилучшим вариантом тоже является запуск через
Cron, однако при отсутствии такового можно выбрать и Zebra.
расписание резервирования.
Задается расписание резервного копирования баз. Излишняя частота здесь вредна,
достаточно раз в две-три недели. При наличии достаточно серьезных данных
раз в сутки.
хранить копий. Задается
количество последних сохраняемых копий резервных баз. Может потребовать
довольно много места на жестком диске.
при сбое известить по e-mail. Иногда в процессе функционирования
Zebra при стечении обстоятельств возможно повреждение рабочих баз данных, что способно
привести к возникновению ошибок и постепенной или немедленной потере работоспособности
Zebra. Некоторые сбои могут быть распознаны самой Zebra при осуществлении процедур
резервирования или сжатия баз, и в таком случае она может отправить ответственному администратору
по электронной почте сообщение о возникшей проблеме. Данный параметр указывает, на какой
адрес посылать такое сообщение.
Запустить сейчас регулярные
процедуры. При необходимости можно заказать выполнение регулярных процедур
немедленно. При этом предоставляется выбор процедур для запуска всех,
только кронированных или только зебрированных.
при этом учитывать ограничения времени. Накладывает
ограничения на выполнение заказанных процедур.
2.2. Редактирование процедур
Элементы.
Подпрограмма. Указывается идентификатор подпрограммы. По сравнению
с прочими идентификаторами, используемыми в Zebra, к идентификатору подпрограммы предъявляются
более жесткие требования, он должен быть сформулирован по правилам
наименования подпрограмм языка Perl, и при этом совпадать с указанным
в программном коде процедуры наименованием самой подпрограммы.
Комментарий. Какой-либо комментарий для упрощения жизни администратора.
Программный код. Конечный программный код процедуры
на языке Perl. Рекомендуется придерживаться следующих правил: все изменяемые
в процессе отработки переменные должны быть локальными для этой подпрограммы,
дабы не затронуть структуру данных Zebra. Если процедура создана для
добавления какой-либо информации в конечный код интерполируемой страницы,
она должна элементарным образом возвращать искомую информацию посредством
return в конце выполнения. Создание более интегрированных с Zebra
процедур возможно при определении других встроенных подпрограмм, а также
собственного инструментария Zebra, описание к которому представлено в разделе
«Руководство по API».
Включить подпрограмму в список конверторов. Включает
процедуру в список, доступный для выбора при форматировании страниц Zebra Site
(см.
«Работа с Zebra Site. Редактирование
страницы»,
«Работа с Zebra Site.
Схемы форматирования»).
Включить в группу старт-запуска.
Включает процедуру в список процедур, запускаемых при старте сеанса Zebra.
Включить в группу пост-запуска.
Аналогично предыдущему, но перед завершением сеанса.
Процедура использует ресурсы Zebra.
Параметр процедуры, используемый при режиме прегенерации сайта. В этом режиме
процедуры записываются в отдельные cgi-файлы и исполняются посредством
SSI-инструкций. Данный параметр сообщает прегенератору, что процедуру
необходимо запускать в режиме Zebra-included, поскольку она использует внутренние
ресурсы Zebra («Всегда»); либо вывести в отдельный cgi-скрипт и
выполнять независимо («Не использует»), если процедура не использует
неявным образом никакие модули Zebra, записи, прочие процедуры,
предопределенные параметры и базы данных. Кроме того, если процедура генерирует
всегда один и тот же контент для страницы, зависящий только от страницы,
целесообразно выбрать пункт «Однократно», поскольку в таком случае
этот контент будет внесен прямо в тело генерируемого ресурса, и ресурсоемких
вызовов внешних или встроенных процедур производиться не будет.
Следующие параметры связаны с регулярностью выполнения данной процедуры.
Метод регулярного вызова. Подробнее о формате данного
параметра см.
«Запуск регулярных процедур».
Регулярность. Указываются параметры сроков запуска
процедуры. Формат строки полностью аналогичен описанной
немного ранее.
В числе активных кнопок данной формы есть кнопка «Тест», которой
можно воспользоваться для тестирования написанной процедуры. Некорректно
написанная процедура будет распознана, описание ошибки отобразится в строке
статистики. Для тестирования процедуры ее предварительное сохранение не
требуется.
2.3. Регулярные процедуры
Регулярные процедуры в нашем случае подпрограммы, запускаемые
в соответствии с некоторым заданным расписанием.
Zebra может работать с двумя вариантами таких процедур: вызываемыми
посредством штатных средств Zebra и запускаемыми при помощи Cron. Cron
системная программа в Unix-подобных ОС, позволяющая автоматизировать запуск
заранее заданных программ в установленное время. Далеко не все платные
провайдеры разрешают использовать своим клиентам Cron, не говоря уже о
бесплатных. Поэтому, хотя Cron в случае регулярных процедур предпочтительнее,
однако может быть недоступен, а значит, придется использовать штатное выполнение.
(Для операционных систем семейства Windows выбора, увы, нет вообще, доступен только первый режим.)
Штатное выполнение регулярных процедур инициируется после завершения всех операций по
обработке и возврату пользователю запрошенной информации.
В свойствах процедуры можно определить режим, в котором будет запускаться
подпрограмма, назначить его либо только на Cron, либо только на Zebra. Либо
на оба варианта, но вообще старайтесь снизить нагрузку системы. Zebra
максимально оптимизируется по системным требованиям, однако в ваших силах
свести на нет все наши старания.
Формат расписания запуска процедуры подробно описан в главе
«Параметры подпрограмм».
Для выполнения процедур, специфицированных к запуску посредством Zebra,
не требуется никаких дополнительных усилий. Zebra сама рассматривает их
наличие и при сходимости условий выполняет. В случае использования Cron
ситуация немного усложняется.
В поставку Zebra входит модуль Zebra Cron (
zcron.cgi), вызов
которого необходимо определить в параметрах системного Cron с нужной вам
периодичностью. При достаточном уровне прав это может сделать сама Zebra, однако
такое не всегда возможно, и в таком случае потребуются умелые действия администратора
с правами суперпользователя.
3. Пользователи
В конце концов, практически любой мало-мальски опытный вебмастер приходит
к выводу, что с пользователями можно и нужно работать
индивидуально. Однако вряд ли кто-то в состоянии себе хотя бы представить
человека, способного ежедневно общаться с тысячью и более человек, помнить
их имена, прозвища, более того дни рожденья, адреса e-mail и Web-страниц,
интересы и пристрастия... Даже если такие люди и возможны, их все равно не
наберется столько, чтобы бесплатно обслуживать каждый из сотен тысяч web-сайтов,
претендующих на персонализированную работу с клиентами.
В таких случаях на помощь приходят автоматизированные программные средства.
В результате более или менее сложного взаимодействия комплекса программ,
включающего в себя серверное программное обеспечение, браузер и прочие
прибамбасы у пользователя, какие-то промежуточные шлюзы или firewall'ы,
при условии некоторого соответствия принятым и общепринятым стандартам,
эти средства способны в какой-то мере заменить такого гениального пророка
и эйдетика. В какой-то мере никоим образом не претендуя на полноту
действий, ибо ни одна программа в мире не способна заменить живое человеческое
внимание и общение. И тем не менее...
В Zebra включен пакет процедур, реализующих сохранение и восстановление,
опознание и аутентификацию пользователя, а также предоставляющих ему возможность
изменить некоторые параметры взаимодействия с сайтом в тех пределах, которые очертил
администратор или редактор сайта. Кроме того, в состав Zebra входит модуль Zebra User,
реализующий так называемый «Кабинет пользователя». Обязанности «кабинета»
состоят в представлении информации о пользователе сайта в удобном для восприятия виде,
осуществлении индивидуальной обратной связи, а также некоторых других мелких, но приятных
вещей.
Изменение параметров пользователя доступно администратору через пункт
«Пользователи» главного меню администрирования.
3.1. Параметры настройки
Элементы.
Регистрация пользователей в базе
сайта. Включает механизмы регистрации. Это первичный переключатель, его
положение влияет на все модули Zebra, способные регистрировать пользователей.
Варианты: «Отключено» регистрация без ведома администратора
не производится; «Немедленная» регистрация осуществляется
сразу же, как только пользователь введет свои данные, и они будут проверены
Zebra на предмет уникальности и валидности; «С верификацией»
метод, позволяющий «отсечь» недобросовестных пользователей от
серьезных разделов сайта. При этом варианте регистрации создается временная запись,
содержащая введенные пользователем данные, а по указанному адресу электронной
почты высылается письмо со случайным ключом. Проследовав по указанной в письме
ссылке, пользователь
переводит свой аккаунт из потенциального в активный.
ожидание верификации, сут.
Определяет максимальный срок (в сутках), в течение которого ожидается
подтверждение регистрации пользователя. Если в течение этого срока верификация
не будет осуществлена, запись удаляется.
Генерировать сложный идентификатор пользователя. Как правило,
при автоматической регистрации пользователя Zebra использует генерацию
идентификатора из заданного имени, проводя некоторое его преобразование.
Если рекомендовано генерировать сложны идентификатор, то он составляется
преобразованием имени, объединенного с адресом e-mail.
Запрашивать подтверждение изменения адреса E-mail. Возможны
случаи, когда пользователь меняет активный адрес электроной почты, что приводит к
необходимости изменить соответствующую запись в его параметрах на сайте. Такая возможность
предоставляется. Однако для пресечения недобросовестных действий на такое изменение
отправляется запрос подтверждения, и создается временная запись об изменении. Если в течение
обозначенного пунктом «Ожидание верификации» срока подтверждение будет получено,
изменение задействуется. В противном случае адрес останется неизменным.
Пресекать многократные регистрации. Возможно установить ограничение на
регистрацию нескольких аккаунтов от одного и того же пользователя. Кроме того, настраиваются
способы такого ограничения:
отслеживать по имени. Предписывает системе регистрации следить,
чтобы новые пользователи не могли зарегистрироваться под именем, которое уже использует
один из зарегистрированных пользователей.
отслеживать по адресу e-mail. Предписывает системе регистрации
следить, чтобы на один адрес e-mail было зарегистрировано не более одного аккаунта.
отслеживать по IP-адресу. Предписывает системе регистрации
пресекать повторные регистрации пользователей, имеющих IP-адреса, уже отмеченные в системе.
Данное ограничение представляется весьма спорным, поскольку у провайдеров удаленного доступа
один и тот же IP-адрес в разное время могут иметь совершенно разные пользователи.
Опознавать пользователя по cookie. Наиболее приоритетный механизм
опознания пользователя у Zebra анализ значения cookie, переданного браузером.
Zebra воспринимает единственное значение cookie, содержащее в себе идентификатор
(правда, для модулей это значение может варьироваться во имя осуществления
дополнительного разделения ресурсов). Все данные пользователя, отвечающие
такому-то идентификатору, хранятся в базе (базах) пользователей Zebra, а
потому утеряны быть не могут. Опознание через cookie, если оно включено,
имеет высший приоритет.
Примечание. Некоторые модули могут реализовывать собственную систему
хранения данных и взаимодействия с пользователем. В таком случае следует придерживаться
рекомендаций, предлагаемых этими модулями.
Опознавать пользователя по IP. Более низкий приоритет имеет
опознание пользователя по IP-адресу. Для каждого пользователя регистрируется
IP-адрес, с которого он в последний раз был опознан на сайте. Если невозможно
определить пользователя по cookie (мало ли что например, переустановил
систему, в результате все cookie утратились для грядущих поколений), это
производится сравнением IP-адресов.
учитывать proxy. Данный параметр рекомендует при обнаружении
двойного IP-адреса (что возможно у пользователя, приходящего на сайт через
proxy-сервер) сохранять IP-адрес как комбинацию этих двух. Это существенно повышает
гарантию идентификации клиента.
Таймаут уникального посещения, с. Если от пользователя поступит
новый запрос спустя срок, меньший, нежели указанный, то такое посещение не будет считаться
новым.
Реиндексировать соответствия. Сервисная регулярная
процедура, связанная с реиндексацией соответствий зарегистрированных пользователей
их IP-адресам и адреса электронной почты. По этим соответствиям производятся основные процедуры
опознания посетителей.
расписание реиндексирования. Устанавливается расписание,
согласно которому будет проводиться реиндексирование соответствий.
Аутентификация.
Zebra предоставляет возможность различных способов запроса логина и пароля
от пользователя, если такое потребуется для каких-то нужд. Предусмотрены
запросы обычной html-формой и специальным окном браузера наподобие серверной
аутентификации.
Включить ограничение доступа по IP-адресу.
Позволяет ограничить доступ к ресурсам сайта по указанным IP-адресам. При этом в списке
адресов воспринимаются шаблоны, например, при указании фрагмента адреса
196.154.122
будут отключены все адреса, начинающиеся на
196.154.122.
Включить ограничение доступа по адресу e-mail.
Позволяет ограничить доступ к ресурсам сайта по указанным адресам электронной почты.
3.2. Параметры пользователя
Отличие страницы параметров пользователя от всех других страниц
администрирования заключается в нефиксированном количестве параметров,
предлагаемых для изменения. То есть их количество может изменяться, подчиняясь
требованиям новых или старых модулей. Ниже описаны элементы, присутствие которых
обязательно для корректного функционирования некоторых служб Zebra.
Идентификатор. Идентификатор пользователя генерируется из его
имени путем некоторых преобразований и приведений к общему знаменателю.
В зависимости от неких установок может быть сгенерирован сложный идентификатор
с использованием имени и адреса e-mail. Идентификатор генерируется автоматически,
передается пользователю посредством cookie, и в дальнейшем однозначно
сопоставляется прочим характеристикам пользователя в базе.
Имя. Реальное имя или псевдоним пользователя, под которым он
представляется остальным пользователям сайта при возможном общении.
Адрес e-mail. При дальнейшем использовании адрес модифицируется
с учетом изъятия неформатных символов, заведомо не используемых при организации
адресов электронной почты. Такая фильтрация ввода осуществляется в целях
обеспечения безопасности сайта.
Пароль. Некоторые проблемы генерации пароля описаны в главе
«Лица».
Язык,
профиль. Установки пользователя по
умолчанию, на которые в первую очередь будет ориентироваться Zebra при выборе
параметров (см.
«Ядро. Разделение
ресурсов»).
IP-адрес. Последний зарегистрированный IP-адрес, с которого
пользователь явился на сайт.
Дата регистрации. Дата регистрации пользователя в системе.
Дата последнего посещения. Дата последнего зарегистрированного
появления пользователя на сайте.
3.3. Пользовательские формы
Для взаимодействия с пользователем на сайтах часто
применяют всевозможные опросы, анкеты, голосования и т.д. Организуются
такие вещи при помощи форм, в которых посетитель сайта может впечатать
свое мнение, указать жизненные интересы или еще как-то обозначить
свою позицию в мире.
В Zebra предусмотрена особая обработка форм, составленных
в соответствии с некоторыми правилами Zebra, рассмотренными ниже.
Элементы форм в формах Zebra могут быть заданы несколькими
способами: посредством мнемонических идентификаторов, мнемонического
сборника
$useroptions, в явной форме. При открытии раздела
«Пользовательские
формы» предлагается изменить или добавить мнемонические идентификаторы.
Мнемонический идентификатор обычный идентификатор Zebra,
сопоставленный параметру формы, и охарактеризованный в Zebra некоторыми
свойствами. Основной признак параметра тип. Параметры могут быть
нескольких типов:
Комментарий выводится текстовая информация,
заданная администратором;
Текст поле ввода типа
text;
Пароль поле ввода типа
password,
в нем вводимые символы обычно отображаются звездочками;
Регион поле ввода типа
textarea;
Информация некоторая информация о пользователе
(
registerdate дата регистрации пользователя,
lastdate дата последнего посещения);
Выпадающее меню выпадающее меню типа
select;
Внутреннее меню выпадающее меню типа
select, образованное с использованием системных значений
Zebra.
Для каждого типа характерна своя конфигурация параметра.
Комментарий
Значение. Текст комментария.
Текст
Ширина поля. Ширина текстового поля ввода (атрибут
size).
Требовать заполнение. Если параметр включен, то
при получении данных заполненной посетителем формы Zebra проверяет,
указано значение параметра или нет, и если нет, то форма выдается
повторно с требованием ввести значение.
Комментарий. Вводится комментарий к параметру, который
может быть приведен непосредственно рядом с полем ввода.
Пароль
Параметры поля аналогичны полю
Текст.
Регион
Высота и
ширина. Значения, определяющие
размер региона, соответствуют атрибутам тега
textarea:
высота (в строках)
rows, ширина (в символах)
cols.
Выпадающее меню
Значения. Список, формирующий выпадающее меню, записанный
в формате:
option1=value1|option2=value2|...|optionN=valueN,
здесь
optionX значение поля типа
select, которое
будет передаваться на сервер,
valueX текст, сопоставляемый
в выпадающем меню этому значению.
Внутреннее меню
Список системных значений. Системный список типа
select, определяемый самой Zebra. Возможен выбор из двух вариантов:
Список языков и
Список профилей.
Элементы
Пользовательские формы служат для предоставления посетителю сайта
возможности передать на сервер некоторую информацию. Zebra предоставляет
собственный инструментарий для обработки форм, при этом может самостоятельно
учитывать наличие обязательных полей в отправленных данных, сохранять, а
затем восстанавливать указанные значения индивидуально для каждого пользователя.
Однако для правильного функционирования этого механизма необходимо составить
форму с соблюдением некоторых правил. В общем случае рекомендуется в качестве
образца использовать формы, с начала времен присутствующие в Zebra
(
system,
forum_options).
Идентификатор. Уникальный идентификатор формы. Может
также служить для ее внедрения в страницу. Форму можно внедрить несколькими
способами:
%userform{FORMID}userform%
%embed{userform;FORMID}embed%
Здесь
FORMID идентификатор.
Название. Название формы, под которым она будет отображаться
в администрировании.
Содержимое. Собственно тело формы, должно быть составлено
в соответствии с обычными правилами составления описаний страниц Zebra.
Однако формы обрабатываются особо, поскольку подразумевают установку полей
форм.
Поля формы, соответствующие определенным в начале раздела
администрирования «Пользовательские формы» параметрам, внедряются
в форму посредством мнемонических идентификаторов. Часть из них должна
обязательно быть определена в конфигурации Zebra для корректного функционирования,
часть пользователь может настроить самостоятельно. В целом, системные пользовательские
параметры Zebra определяются идентификатором из трех-пяти символов, начинающихся
с буквы
z. Все остальные идентификаторы считаются дополнительными
(в том числе установленные модулями расширения).
Некоторые из системных идентификаторов Zebra:
$znm (zName) имя пользователя на сайте;
$zem (zEMail) адрес электронной почты
пользователя;
$zpw (zPassWord) пароль пользователя;
$zlc (zLoCale) локаль (язык интерфейса),
выбранная пользователем как приоритетная;
$zpr (zPRofile) профиль, выбранный
пользователем как приоритетный;
$zct (zCiTy) населенный пункт, указанный
посетителем в качестве своего места проживания (или рождения);
$zpn (zPhoNe) номер телефона;
$zad (zADdress) физический адрес;
$zlk (zLinK) адрес личного сайта
пользователя;
и так далее.
Кроме того, для обработки результатов встроенными средствами Zebra
обязательно наличие одного из нескольких параметров:
ненулевое значение параметра
saveuser, предписывающее
Zebra задействовать систему верификации и сохранения полученных данных,
например:
<input type="submit" name="saveuser" value="Сохранить">;
ненулевое значение параметра
edituser, предписывающее
Zebra сгенерировать форму с установкой в нее сохраненных ранее параметров,
соответствующих этому посетителю, например:
<input type="submit" name="edituser" value="Редактировать">;
ненулевое значение параметра
authorize, предписывающее
Zebra задействовать систему аутентификации пользователя, при этом обязательно
наличие полей
login и
password, например:
<input type="hidden" name="authorize" value="1">.
Также рекомендуется указание ключа
$locpro, ответственного
за наследование установок текущего языка и профиля.
Список параметров. В форме можно явным образом перечислить
внедряемые параметры, а можно указать кумулятор
$useroptions,
который будет подразумевать подстановку сразу ряда параметров, перечисленных
в данном пункте. В перечислении следует указать мнемонические идентификаторы
параметров.
Шаблон параметра. Поля формы генерируются по некоторому
шаблону, составленному согласно обычным правилам Zebra. В этом шаблоне
обязательно должны присутствовать следующие специальные ключи:
$name, для установления наименования параметра;
$value, для установления в качестве начального
значения поля сохраненного значения параметра;
Дополнительные ключи, обрабатываемые при генерации поля:
$required, устанавливается в значение 1, если
данный параметр является обязательным для заполнения;
$info, содержит в себе комментарий к параметру.
Помимо мнемонического указания полей, допустимо явным образом
указать их в теле формы. Для этого применяется следующая форма записи атрибута
name в поле:
Xopt_MNEMONIC
Здесь
X признак обязательности заполнения данного поля, может
принимать два значения:
u необязательное и
n
обязательное;
MNEMONIC мнемонический идентификатор параметра.
При явном указании поля формы «Шаблон параметра» не используется.
4. ЧПУ
Реальные пути к ресурсам в Zebra могут оказаться очень
заковыристыми. Во-первых, необходимо для вызова самой Zebra как минимум
ввести полный путь к исполнимому файлу программы, например:
http://www.yourhost.com/cgi-bin/zs.cgi
И это только в самом простом случае, а если Zebra кроется в глубинах сервера?
Да и кто сможет сразу запомнить, что за отображение ресурсов отвечает
модуль
zs.cgi, за форумные проблемы
zf.cgi, а другие
не менее важные задачи выполняют еще какие-то иные модули?
Далее, для получения конкретного ресурса, а не установленного по
умолчанию, требуется указать параметры адресной строки, которые уж и вовсе
никто запоминать не будет. Ибо не фиг.
Конечно, процент людей, вручную набирающих адрес ресурса в адресной
строке браузера очень мал, обычно посетители приходят по ссылкам с других
сайтов либо пользуясь закладками. Однако и в этом случае прилично
оформленный адрес не будет лишним, поскольку способствует имиджу аккуратности
и изящества сайта.
Такое явление сопоставление фиктивных, но лаконичных и
интуитивных адресов реальным длинным неудобоваримым композициям называется
«ЧПУ», что значит «человеко-понятный урл». Zebra
поддерживает два способа ведения ЧПУ.
Параметры
Адресация ЧПУ. Если выбрать «Включить»,
то ЧПУ будет настраиваться на уровне конфигурации сервера. Функционирует
только в том случае, если сервером является Apache, при этом в общей
конфигурации сервера допускается изменение необходимых величин пользователем
«под себя». Вариант «Эмулировать» функционирует,
только если на сервере разрешено выполнение SSI. В таком случае Zebra
создает разветвленную структуру каталогов, соответствующую элементам ЧПУ,
в которых организует прозрачный вызов соответствующих модулей.
Страница при отсутствии соответствий. Выбирается один из
трех вариантов выводимых страниц, если запрошенный ресурс отсутствует.
Элементы
Указатель. Виртуальный адрес на сервере, который будет
сопоставляться элементу ЧПУ. Например, для эмулируемого пути:
http://www.yourhost.com/internal/variable/
указатель будет выглядеть:
/internal/variable
Завершающий слэш не нужен.
Ссылка-псевдоним. В описаниях Zebra применяются универсальные
ссылки, особо обрабатываемые при рендеринге конечного контента (см.
«Работа с Zebra Site. Ссылка»).
При указании ссылки-псевдонима и совпадении ее значения с универсальной ссылкой
будет подставляться соответствующий указатель ЧПУ. Соответственно, не должно
быть одинаковых ссылок-псевдонимов для разных ЧПУ, поскольку это приведет
к потере одного из них. Отметим также, что в ссылке-псевдониме слеши допускаются
только внутри ссылки, но не в начале и не в конце. Ну и, наконец, данный
параметр может быть не указан.
Реальный адрес. То, на что реально направляет указатель ЧПУ.
Это может быть как обычная ссылка (на внутренний или внешний ресурс), так
и вызов Zebra с заранее установленными параметрами. При вызове Zebra путь
к модулям можно опускать, например:
zs.cgi?p=zebra/manipulations&l=ru
zf.cgi?fid=wtg/support&style=tree&mpp=100
Комментарий. Можно ввести комментарий к указателю. Функциональной
нагрузки он не несет.
Маскировать. В случае реализации ЧПУ через переконфигурирование
сервера существует два варианта действия ЧПУ: обязательным редиректом на
реальный адрес (маскировать нет) и прозрачным парсингом
(максировать да) по запросу. В первом случае Zebra
вернет браузеру реальный адрес, по которому тот сделает новый запрос. Во втором
случае управление будет немедленно передано модулю, отвечающему за обработку
запроса, и браузеру сразу вернется конечный результат. Недостаток второго
варианта в том, что велика вероятность некорректной обработки запроса.