понедельник, 28 января 2008 г.

МОЙ LINUX 2

 


МОЙ LINUX 2

Основы работы в ОС Linux.

Естественные сочетания клавиш и обозначения

*Ctrl + Alt + F1 - Переключение на первый консольный терминал
*Ctrl + Alt + F# - Переключение на #ый консольный терминал (#=1..6)
*Ctrl + Alt + F7 - Переключение на графический терминал (если таковой запущен)
*Tab - Дополнение текущей последовательности символов, набранной в консоли, до исполняемой команды. Эта особенность сильно облегчает жизнь при наборе команд! Это работает также и при загрузке компьютера через LILO!
*ArrowUp - Просмотр и редактирование буфера истории команд.
Для исполнения команды нажмите Enter.
*Shift + PgUp - Просмотр текста выведенного на консольный терминал и ушедшего за приделы экрана. Перемещение вверх.
*Shift + PgDown - То же что и выше. Перемещение вниз.
*Ctrl + Alt + + - (в X-window) Изменение разрешения. Переключение к следующей конфигурации.
*Ctrl + Alt + - - (в X-window) Изменение разрешения. Возврат к предыдущей конфигурации.
*Ctrl + Alt + BkSpc - (в X-window) Убить текущий сервер X-window (выйти из графической оболочки уничтожив все процессы).
*Ctrl + Alt + Del - Перезагрузка компьютера.
*Ctrl + c - Убить текущий процесс.
*Ctrl + d - Выход из текущего терминала.
*Ctrl + d - Посылка текущему процессу сигнала [Конец-файла] (конец файла).
*Ctrl + s - Остановка вывода на терминал.
*Ctrl + q - Возобновление вывода на терминал. Попробуйте эту комбинацию клавиш, если ваш терминал непонятно почему перестал отвечать на ваши запросы.
*Ctrl + z - Послать текущий процесс в background.
*reset (команда) - Восстановление значений по умолчанию для «запорченного» терминала (терминал показывает странные символы и неадекватно реагирует на нажатие клавиш). Используйте эту команду если вы попытались вывести на экран бинарный файл.
Вероятно вы не сможете увидеть эту команду в процессе ее набора.
*Средняя кнопка мыши - Вставка выделенного курсором текста (это не работает в WordPerfect).
*~ (тильда) - домашняя директория. Например cd ~/моя_поддиректория.
*. (точка) - Текущая директория.
*.. (две точки) - Родительская директория для текущего каталога.

МОЙ LINUX 2

Стандартные команды и команды, дающие информацию по системе

Команды всегда набираются в одной строке.


*pwd - Вывести текущую директорию.
*hostname - Вывести или изменить сетевое имя машины.
*whoami - Ввести имя под которым я зарегистрирован.
*date - Вывести или изменить дату и время. Например, чтобы установить дату и время равную 2000-12-31 23:57, следует выполнить команду: date 123123572000
*time - Получить информацию о времени, нужного для выполнения процесса + еще кое-какую информацию.
Не путайте эту команду с date.

Например:

Определить как много времени требуется для вывода списка файлов в директории, набрав последовательность:


time ls


*who - Определить кто из пользователей работает на машине.
*rwho -a - Определение всех пользователей, подключившихся к вашей сети. Для выполнения этой команды требуется, чтобы был запущен процесс rwho. Если такого нет - запустите «setup» под суперпользователем.
*finger [имя_пользователя] - Системная информация о зарегистрированном пользователе. Попробуйте: finger root
*uptime - Количество времени прошедшего с последней перезагрузки.
*ps a - Список текущих процессов.
*top - Интерактивный список текущих процессов отсортированных по использованию cpu.
*htop - практически то же что и top, но в псевдо графическом виде(требует установки соответствующего пакета)
*uname - Вывести системную информацию.
*free - Вывести информацию по памяти.
*df -h (=место на диске) - Вывести информацию о свободном и используемом месте на дисках (в читабельном виде).
*du / -bh | more (=кто сколько занял) - Вывод детальной информации о размере файлов по директориям начиная с корневой (в читабельном виде).
*cat /proc/cpuinfo - Системная информация о процессоре. Заметьте, что файла в /proc директории - не настоящие файлы. Они используются для получения информации, известной системе.
*cat /proc/interrupts - Используемые прерывания.
*cat /proc/version - Версия ядра Linux и другая информация
*cat /proc/filesystems - Вывести используемые в данный момент типы файловых систем.
*cat /etc/printcap - Вывести настройки принтера.
*lsmod (как root) - Вывести информацию о загруженных в данный момент модулях ядра.
*set|more - Вывести текущие значения переменных окружения.
*echo $PATH - Вывести значение переменной окружения «PATH»
Эта команда может использоваться для вывода значений других переменных окружения. Воспользуйтесь командой set, для получения полного списка.
*dmidecode - Узнать о точном названии и версии BIOS, возможностях BIOS и другой интересной информации. Пишем под su. Весьма познавательно, и не нужно перезагружаться и входить в BIOS.
*fdisk -l /dev/hda - Сведения о ёмкости и геометрии винчестера запскаем через sudo.
*sudo hdparm -I /dev/hda - Запросить информацию о винчестере и его возможностях.
*hddtemp /dev/hda - Текущая температура винчестера.
*smartctl -a /dev/hda - Возможный выход винчестера из строя помогает засечь эта команда, с помощью которой так же можно протестировать жёсткий диск. Диагностический вывод весьма подробный.
*cat /proc/cpuinfo - Узнать подробности о процессоре. В результате получим весьма подробную информацию о процессоре.

Файловая система /proc является "слепком" состояния системы и её переменных, там хранится множество полезных сведений о системе. В каталоге /proc, хранятся и обновляются сведения о скоростях вращения вентиляторов, заряде батарей и прочем (если это поддерживается для вашего оборудования ядром).
Вот, к примеру, как можно узнать состояние батарей ноутбука:


cat /proc/acpi/battery/BAT0/info


Отсюда берут данные все графические утилиты мониторинга, типа klaptop_check (в KDE висит в трее и показывает состояние батареи). Весьма полезная, и главное - постоянно обновляемая информация.

*dmesg - Команда предоставляет доступ к логам ядра - того, что происходило при загрузке и того, что происходит в процессе работы. При загрузке устройства инициализируются и опознаются системой, и если что-то идёт не так, в логах обязательно это будет отражено.
Лог dmesg как правило очень длинный и изобилует подробностями работы с оборудованием. Читать его полностью довольно утомительно, поэтому стоит воспользоваться потоковой утилитой поиска grep.

Например, чтобы узнать подробности только о процессоре, нужно написать:


dmesg | grep CPU


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

Лог dmesg и многие другие логи хранятся в /var/log/ хотя часть из них доступна только привилегированному пользователю - воспользуйтесь sudo.

*lshw - Расширенная информация о конфигурации железа. Эта утилита по умолчанию, как правило, не устанавливается, но в репозиториях она должна быть (устанавливаем при помощи aptitude install lshw). Утилита lshw выводит структурированный список оборудования вместе с информацией об устройствах. Очень полезна для анализа оборудования.

Работа с сетью

*netconf (как root) - Очень хорошая программа настройки сети, использующая для интерактивной работы с пользованием, текстовое меню.
*ping [имя_машины] - «Проверка на вшивость». Есть или нет контакта с другой машиной (в качестве параметре команде можно передавать сетевое имя машины или IP адрес), нажмите <Ctrl_c> когда вся требуемая информация будет получена.
*route -n - Вывести таблицу маршрутизации (the routing table).
*ipfwadm -F -p m - Настроить firewall.
*ifconfig (как root) - Вывести информацию о текущих сетевых интерфейсах (ethernet, ppp, и т.д.) Ваша первая ethernet плата плата будет показана как eth0, вторая как eth1, первый ppp модем как ppp0 и так далее. «lo» - расшифровывается как «loopback only» сетевой интерфейс, который должен быть постоянно активирован. Используйте соответствующие опции (смотрите результат выполнения ifconfig –help) для настройки сетевых интерфейсов.
*ifup [имя_сетевого_интерфейса] - Активизация соответствующего сетевого интерфейса (/sbin/ifup при работе под обычным пользователем).
Пользователь может активизировать и выключить сетевое интерфейс ppp только когда установлены соответствующие права доступа (права можно установить в процессе настройки ppp через «netconf»).

Например:


ifup eth0
ifup ppp0


*ifdown [имя_сетевого_интерфейса] - Диактивизация соответствующего сетевого интерфейса (/sbin/ifdown при работе под обычным пользователем).

Простейшие действия

*ls - Список файлов в текущей директории.
При выполнении команды dir выполняется команда ls.
*cd [директория] - Сменить директорию.
*cp [что_копировать] [куда_копировать] - Копировать файлы.
*mcopy [что_копировать] [куда_копировать] Копировать файлы при работе с файловой системой dos (монтировать диска dos необязательно). Например: mcopy a:\autoexec.bat ~/junk . Для дополнительной информацией по подобным командам (mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat …) ознакомьтесь с man mtools.
*mv [что_перемещать] [куда_перемещать] - Переместить или переименовать файл.
*ln -s [на_что_сделать_ссылку] [имя_ссылки] - Создать символическую ссылку.
*rm [файлы] - Удалить файлы.
*mkdir [директорию] - Создать новую директорию.
*rmdir [директорию] - Удалить пустую директорию.
*rm -r [файлы и/или директории] (рекурсивное удаление) - Удалить файлы, директории и их поддиректории. ОСТОРОЖНЕЙ с этой командой если у вас права суперпользователя! Пока у Linux нет системы полного восстановления удаленных файлов (если вы не пользуетесь специальными программами для помещения удаленный файлы в специальный каталог - a la корзинка под W95).
*cat [имя_файла] | more - Просмотр содержимого текстового файла по одной странице за раз.
*less [имя_файла] - Просмотр содержимого текстового файла с возможностью вернуться к предыдущим страницам. Нажмите q когда захотите выйти из программы. «less» - аналог команды DOS «more», хотя очень часто «less» бывает более удобной чем «more».
*pico [имя_файла] - Редактировать текстовый файл.
*lynx [html_файл или ссылка] - Просмотр файла html или WWW ссылки с помощью текстового браузера Lynx.
*tar -zxvf [файлы] - Распаковать архив tgz или tar.gz, который вы вытянули из сети.
*find / -name «имя файла» - Найти файл с именем «имя файла». Поиск начинается с директории / . «имя файла» может содержать маску для поиска.
*pine - Хорошая текстово - ориентированная программа для чтения электронной почты. Еще одна подобная программа называется «elm». Netscape считывает ваши письма с вашего Internet адреса, а pine позволяет вам просматривать «локальную» почту - то есть ту почту, которую вам посылает вам процесс son или cron.
*mc - Запустить программу оправления файлами «Midnight Commander» (Выглядит как «Norton Commander», но по своим возможностям ближе к far или dn).
*telnet [сервер] - Связаться по telnet с другой машиной. Используйте имя машины или ее IP адрес. Войдите с помощью вашего пароля (вы должны быть зарегистрированы на этой удаленной машине). Это позволит вам войти на другую машину и работать на ней, как будто вы сидите за ее клавиатурой (почти никаких отличий).
*ftp [сервер] - Связаться по ftp с удаленным компьютером. Этот тип связи хорош для копирования файлов с/на удаленную машину.
*minicom - Minicom - программа (выглядит как «Procomm для Linux»).
*./Имя_Программы - Запустить исполняемый файл в текущей директории, которая нет в списке директорий, указанных в переменной окружения PATH.
*startx - Запустить X-window сервер и установленный по умолчанию оконный менеджер. Похоже на то как вы набираете «win» под DOS с Win3.1
*xterm (в X терминале) - Запустить простой терминал в графической оболочке X-windows. Для того чтобы выйти из него наберите «exit».

Контроль процессов

*ps (=print status) - Вывести список текущих процессов с их IDs (PID) идентификаторами.

Используйте


ps axu


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

*fg [PID] - Вернуть фоновый или приостановленный процесс в интерактивное (высокоприоритетное) состояние;
*bg [PID] - Сделать процесс фоновым. Обратная функция от fg. Может следовать вслед за комбинацией <Ctrl_z>.
*kill [PID] - «Убить» процесс. Для начала определите PID «убиваемого» процесса при помощи ps.
*killall [имя_программы] - «Убить» все процессы по имени программы.
*xkill (в терминале X window) - «Убить» процесс, на окно которого укажите курсором.
*lpc (как root) - Проверить очередь принтера.
*lpq - Вывести список очереди заданий на печать.
*lprm [номер_задания] - Удалить задание из очереди на печать.
*nice [имя_программы] - Запустить процесс, установив его приоритет.
*renice [PID] - Изменить приоритет процесса.

Обратите внимание на комбинации клавиш: <Ctrl_c>, <Ctrl_z>, <Ctrl_s>, и <Ctrl_q>. Они описаны выше.

Основные Команды Администрирования

*printtool (как root в X терминале) - Сконфигурировать ваш принтер. setup (как root) Сконфигурировать мышь, звуковую карту, клавиатуру, графическую оболочку X-windows и системные службы.
Очень простая в пользовании программа.

*alias ls=«ls -Fskb –color» - Создать alias - псевдоним для того чтобы одной командой можно было запустить более сложную комбинацию команд. Поместите создание alias в файл /etc/bashrc если вы хотите, чтобы эти псевдонимы были доступны всем пользователям вашей системы.
*adduser [имя_пользователя] - Зарегистрировать нового пользователя (у вас должны быть права суперюзера).

Например:


adduser ivanov


Не забудьте следующим делом настроить пароль пользователя. Директория пользователя находится в каталоге /home/имя_пользователя.

*useradd [имя_пользователя] - То же, что и adduser.
*userdel [имя_пользователя] - Удалить пользователя из системы (вы должны зайти как root). С пользовательским каталогом и не прочитанными письмами удаленного пользователя нужно разбираться отдельно.
*groupadd [имя_группы] - Создать новую группу пользователей на вашей системе. Не обязательно создавать группу непосредственно на основной машине.
*passwd - Изменить пароль. Если вы суперпользователь, то вы можете изменить пароль любого зарегистрированного пользователя набрав команду:


passwd имя_пользователя


*chmod [права доступа] [файл] (=change mode) * Изменить права доступа файлов, чьим владельцем вы являетесь (если вы не root, в этом случае вы можете изменить права доступа для любого файла). Есть три способа доступа к файлу: чтение - read ®, запись - write (w), исполнение - execute (x) и три типа пользователей: хозяин файла - owner (u), члены той же группы, что и хозяин файла (g) и все остальные (o). Поверить текущие права доступа можно следующим способом:


ls -l имя_файла


Если файл доступен всеми способами всем пользователям, то напротив имени файла будет следующая комбинация букв:


rwxrwxrwx


Первые три буквы - это права доступа для хозяина/хозяйки файла, второй триплет - права доступа для его/ее группы, следующая тройка - права доступа для остальных. Отсутствие права доступа показывается как »-».;

Например:

Эта команда позволит вам установить права доступа на чтение для файла «junk» для всех (all=user+group+others):


chmod a+r junk


Эта команда отнимет право доступа на исполнение файла у всех кроме пользователя и группы:


chmod o-x junk


Для получение дополнительной информации наберите:


chmod –help или man chmod или почитайте любое руководство по Linux.


Вы можете установить права доступа по умолчанию для создаваемых вами файлов с помощью команды «umask» (наберите man umask).

*chown [новый_хозяин] [файлы]
*chgrp [новая_группа] [файлы] - Изменить хозяина и группу для файла.
Вы можете использовать эти две команды, после того как сделали копию файла для кого-либо.
*su (=super user) - Вход в систему как суперпользователь (у вас спросят ваш пароль).
Набрав «exit» вы вернетесь в вашу предыдущую пользовательскую оболочку.
Пользователь root существует для администрирования системы и команда su дает быстрый доступ к возможностям суперпользователя, когда вам это потребуется.

Установка Drupal

Установка


среда, 23 января 2008 г.

MODx Специальные теги

Специальные теги


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


Системные


[(site_name)] - название сайта
[(base_url)] или [(site_url)] - адрес сайта (http://www.modx-cms.ru)
[(modx_charset)] - используемая кодировка
[^qt^] - время на запросы к базе данных
[^q^] - запросов к базе данных
[^p^] - время на работу PHP скриптов
[^t^] - общее время на генерацию страницы
[^s^] - источник содержимого (база или кэш)


Стандартные


[*pagetitle*] - заголовок документа
[*longtitle*] - расширенный заголовок документа
[*description*] - описание документа
[*introtext*] - аннотация документа
[*content*] - содержимое документа
[*alias*] - псевдоним документа
[*id*] - идентификатор (номер) документа
[*pub_date*] - дата публикации дкоумента
[*unpub_date*] - дата завершения публикации
[*createdby*] - Идентификатор пользователя создавшего документ
[*createdon*] - Дата создания документа
[*editedby*] - Идентификатор пользователя редактировавшего документ
[*editedon*] - Дата редактирования документа
[~идентификатор~] - URL указанного документа


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


[*type*] - вариант (документ, папка или ссылка)
[*contentType*] - тип содержимого (например, text/html)
[*published*] - опубликован ли документ (1|0)
[*parent*] - номер (ID) родительского документа
[*isfolder*] - является ли документа папкой (1|0)
[*richtext*] - используется ли при редактировании документа визуальный редактор
[*template*] - номер (ID) используемого шаблона для документа
[*menuindex*] - порядковый номер отображения в меню
[*searchable*] - доступен ли документ для поиска (1|0)
[*cacheable*] - Кэшируется ли документ (1|0)
[*deleted*] - Документ удален (1|0)
[*deletedby*] - Идентификатор пользователя удалившего документ
[*menutitle*] - Заголовок меню. Если не используется, то заголовок документа
[*donthit*] - Слежение за количеством посещений отключено (1|0)
[*haskeywords*] - Документ содержит ключевые слова (1|0)
[*hasmetatags*] - Документ имеет метатеги (1|0)
[*privateweb*] - Документ входит в частную группу пользовательских документов (1|0)
[*privatemgr*] - Документ входит в частную группу менеджерских документов (1|0)
[*content_dispo*] - Вариант выдачи содержимого (1 - для отображения | 0 - для скачивания)
[*hidemenu*] - Документ не отображается в меню (1|0)


Параметры TV, сниппеты и чанки


[*НазваниеПараметраTV*] - выводит значение параметра в документе.
{{НазваниеЧанка}} - возвращает содержимое чанка.
[[НазваниеСниппета]] - возвращает результат работы сниппета. Также можно передавать сниппету дополнительные параметры, перечисляя их при вызове - [[НазваниеСниппета? &параметр1=`значение1` &параметр2=`значение2` &параметрN=`значениеN`]
[+НазваниеПеременной+] - встречается в чанках, которые используются для обработки (Ditto, eForm и т.д.). После обработки вместо них вставляются значения. Таким образом, это тоже вроде мини-языка, но для сниппетов.


Нюансы


1) На самом деле есть два варианта вызова сниппета:
[[НазваниеСниппета]] - кэшируемый вызов сниппета
[!НазваниеСниппета]] - некэшируемый вызов сниппета

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


Где использовать


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


Пример шаблона



<html>
<head>
<title>[(site_name)] | [*pagetitle*]</title>
<meta http-equiv="Content-Type" content="text/html; charset=[(modx_charset)]" />
<base href="[(site_url)]"></base>
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="[(site_url)][~11~]" />
</head>
<body>

<div id="header">
<h1><a id="logo" href="[~[(site_start)]~]" title="[(site_name)]">[(site_name)]</a></h1>
<div id="ajaxmenu"> [[Wayfinder?startId=`0` &outerTpl=`mh.OuterTpl` &innerTpl=`mh.InnerTpl` &rowTpl=`mh.RowTpl` &innerRowTpl=`mh.InnerRowTpl` &firstClass=`first` &hereClass=``]] </div>
</div>

<h2>News:</h2>

[[Ditto? &startID=`2` &summarize=`2` &total=`20` &commentschunk=`Comments` &tpl=`nl_sidebar` &showarch=`0` &truncLen=`100` &truncSplit=`0`]]

<div id="content">
<h2>[*longtitle*]</h2>
[*#content*]
</div>

</body>
</html>

На эту информацию опирается все остальное.

MODx eForm



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

Текст получается очень объемный, так как возможностей очень много.

Описание

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

Обязательные параметры


&formid

Идентификатор формы, который используется при отправке данных. Этот параметр необходим если на странице используется более одной формы. Шаблон вашей формы должен иметь скрытое поле с тем же идентификатором: <input type="hidden" name="formid" value="formName" /> или (начиная с eForm 1.4.x) вы можете установить идентификатор прямо в теге формы: <form id="formName"...>;

&tpl


Название чанка (не число) или идентификатор документа (число) для используемого шаблона (новое в 1.4.4) Вы можете также использовать сниппет как источник шаблона. При этом никакие параметры не передаются. Для регулярных полей формы вам не нужно включать переменные, так как они автоматически включаются eForm, исключая случаи когда вы сами задаете значения. Доступны специальные переменные: [ +validationmessage+], [ +postdate+],[ +verimageurl+] и [ +debugText+]. Каждая форма должна содержать переменную [ +validatiomessage+].

&report

Название чанка (не число) или идентификатор документа (число) для шаблона отчета. Должна содержать каждая форма.

Дополнительные параметры

&to (необязательно)

Адрес Email на который будет послана информация. Можно использовать несколько адресов разделяя их запятой (,). Если не указано, то будет использован системный адрес.

&from (необязательно)

Устанавливает адрес отправителя письма.

&fromname (необязательно)

Устанавливает имя отправителя письма.

&replyto (необязательно)

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

&sendirect (необязательно)

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


  • 1 - включение

  • 0 - выключение (по умолчанию)

&cc (необязательно)

Также как &email но для Cc:

&bcc (необязательно)

Также как &email но для Bcc:

&ccsender (необязательно)

Послать копию данных формы пользователю. По умолчанию установлено в 0. eForm ищет адрес пользователя в поле с названием email.

  • 1 - включить

  • 0 - отключено (по умолчанию)

&subject (необязательно)

Тема сообщения, которая может включать [ .поля формы.]. Например: Спасибо за ваш заказ [ .firstname.] [ .lastname.]

&noemail (необязательно)

Защищает eForm от посылки писем.
  • 1 - отключить отправку писем

  • 0 - включить отправку писем (по умолчанию)
&mailselector (необязательно)

Устанавливает поле формы, которое будет использоваться при выборе единственного адреса из списка адресов разделенных запятой (,) для использования в параметре &to. Значения поля будет определять номер используемого почтового адреса. Номер 1 соответствует первому адресу и N - последнему.

Пример: &to =`sales@me.com,support@me.com,billing@me.com` &mailselector=`topic` В форме используется поле topic в виде выпадающего списка. Когда пользователь выбирает значение, то тем самым он определяет один адрес, по которому будут посланы данные формы.
&mobile
(необязательно)

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

&mobiletext (необязательно)

Сообщение для отправки на мобильное устройство. Может содержать [ .поля формы.]. Например: Заказ для [ .firstname.].

&thankyou (необязательно)

Название чанка (не число) или идентификатор документа (число) для используемого шаблона сообщения выводимого пользователю после отправки данных формы. Теги как у &tpl

&gotoid (необязательно)

Идентификатор документа на который будет совершен переход после отправки данных формы. Смотрите также &thankyou.

&category (необязательно)

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

&keywords (необязательно)

Разделяемые запятой (,) ключевые слова или [ +поле формы+] используемое при поиске банка данных. Например: [ +firstname+], [ +lastname+], [ +email+]

&autosender (необязательно)

Адрес электронной почты, который показывается при отправке сообщения автоответчика. Например: no-reply@mydomain.com


&autoSenderName (необязательно)


Имя, используемое в сообщении автоответчика.


&automessage (необязательно)


Название чанка (не число) или идентификатор документа (число) для используемого шаблона в сообщении автоответчика. Может содержать [ .поля формы.].


&allowhtml (необязательно)


Включает использовании пользователями HTML в сообщении.



  • 1 - включено

  • 0 - выключено (по умолчанию)

&language (необязательно)


Устанавливает используемый язык сообщений и проверки. Название языков совпадает с MODx.


&vericode (необязательно)


Включает код проверки. Шаблон должен содержать поле для проверки и переменную [ +vericode+].


&debug (необязательно)


Включает расширенные сообщения об ошибках в проверке формы. В основном для отладки #LIST и #SELECT.


&sendAsHtml (необязательно)


Определяет, какие сообщения будут использовать формат html.



  • 1 - все сообщения

  • report, autotext, mobile - конкретные типы сообщений

&sendAsText (необязательно)


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



  • 1 - все сообщения

  • report, autotext, mobile - конкретные типы сообщений

&sessionVars (необязательно)


Названия переменных сессии $_SESSION, разделенные запятой (,). Они будут добавлены в список значений полей перед отображением формы и может быть использована качестве скрытых полей. Если вы используете этот параметр, то убедитесь, что вы не раскрываете важную информацию сессии (скрытые поля не защищают информацию!).


Так как eForm не выполняет самостоятельную обработку таких значений, то вам необходимо включить их в шаблон. Например: [ !eForm &sessionVars=`jobID` ... ]] и <input type="hidden" value="[<!-- -->+jobID+]" />


&postOverides (необязательно)


Используется в комбинации с &sessionVars. Переменные сессии будут переписаны введенными в форму значениями. При установке значения 1 полученные в форме данные получают приоритет.


&reportAbuse (необязательно)


При установке значения `1` будут посылаться сообщения на специальный электронный адрес если будет замечена попытка инъекции eForm (используйте умеренно).


&cssStyle (необязательно)


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


Примеры:


[ !eForm &cssStyle=`assets/site/forms.css,chunkName` ... ]] [ !eForm &cssStyle=`chunkName` ... ]] [ !eForm &cssStyle=`http://mysite.com/assets/styles/forms.css` ... ]]


Чанки (и документы, если установлен идентификатор документа) могут использовать значения в форме:



  1. как встроенный блок : /*какие-то стили*/

  2. как ссылка на таблицу стилей:

  3. как разделенный запятой (,) список ссылок на таблицы стилей: assets/site/forms.css,assets/site/more.css,assets/site/gone_overboard.css

&jScript (необязательно)


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


&protectSubmit (необязательно) по умолчанию - 1 (включено)


Защита формы от повторной отправки с теми же данными. Отправка данных формы автоматически отключается после первой успешной попытки пока ключ формы является одним и тем же. Для этого используется переменной сеанса с md5 хэшем в качестве ключа. Какие поля используются для сравнения задается в параметре &protectSubmit. Возможные значения:



  • 0 - выключено

  • 1 - используются все поля `required`

  • Список полей - список используемых полей через запятую.

Чтобы гарантировать, что используются соответствующие поля для разных форм переменная сессии основана на &formid ({ formid}_hash).


&submitLimit (необязательно) по умолчанию - 0 (выключено)


Устанавливает лимит времени (в минутах) между отправками данных формы. После первой успешной отправки данных запрещает отправку других данных на определенное время. При использовании совместно с &protectSubmit этот параметр имеет приоритет, позволяя повторную отправку данных независимо от установки &protectSubmit (будет сброшена сессионная переменная). Как и &protectSubmit этот параметр использует сессионную переменную основанную на &formid.


&requiredClass (необязательно)


Название класса. Добавляет класс в определенные поля формы при проверке. Существующие классы будут сохранены.


Если вы уже определили класс для полей или меток (label) и получили неожиданные результаты, то проверьте порядок определения классов. &requiredClass устанавливается в начало любых классов, которые уже установлены.


&invalidClass (необязательно)


Название класса. Добавляет класс к неправильно заполненным полям формы, которые выявились при проверке. Существующие классы будут сохранены.


&runSnippet (новое в 1.4.4) (необязательно)


Определяет имя сниппета. Сниппет будет выполнен перед всеми обработками eForm. Один параметр &&formid, будет опущен для сниппета. Любые возвращенные значения из сниппета не будут учитываться. Это может быть использовано как альтернатива использования функций в документе. К сожалению eForm молча проигнорирует результат работы сниппета, так как $modx->runSnippet не возвращает никаких значений.


&snipFolder (новое в 1.4.4) (необязательно)


Для тех кто хочет использовать оставить другие версии eForm активными. Теперь вы можете сохранить все файлы eForm и соответственно установить &snipFolder. Например вы можете сохранить версию 1.4.4 в папку assets/snippets/eform/1.4.4 и установить &snipFolder=`eform/1.4.4`. К значению автоматически добавится путь 'assets/snippets/'. Не нужно использовать закрывающий слэш (/)!


Функции событий


Функции событий eForm теперь включены в параметры.


&eFormOnBeforeMailSent (необязательно)


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


&eFormOnMailSent (необязательно)


Определяет название функции. Эта функция будет запущена после обработки всех шаблонов и любое сообщение будет послано.


&eformOnBeforeFormParse (необязательно)


Определяет название функции. Эта функция будет запущена после загрузки шаблонов и определения идентификатора формы. Функции передаются следующие параметры: &$templates - массив всех шаблонов с индексами 'tpl', 'report','thankyou' и 'autotext'. Последние три будут иметь значение только после отправки формы.


&eFormOnBeforeFormMerge (необязательно)


Определяет название функции. Эта функция будет запущена только при показе форм и до определения всех переменных шаблона. Функции передаются следующие параметры: &$fields - массив полей и значений переменных.


&eFormOnValidate (необязательно)


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



  • &$fields - массив полей и значений переменных

  • &$vMsg - числовой массив ошибок проверки данных формы

  • &$rMsg - числовой массив пропущенных обязательных полей

Примеры:


[ !eForm? &to=`me@mydomain.com` &gotoid=`1` &tpl=`orders` &report=`orderreport` ]] [ !eForm? &to=`sales@mysuppliers.com` &category=`Purchase Order` &tpl=`chunkPurchaseOrder` &report=`chunkPurchaseReport` ]]


Переменные шаблона


Для многих стандартных полей формы eFrom автоматически вставляет соответствующие переменные шаблона. Также вы можете определить их самостоятельно:



  • [ +validationmessage+] - Необходимо использовать в каком-то месте вашего шаблона или документа. С версии 1.4.2 эта переменная шаблона подверглась изменениям. Во-первых теперь ее не обязательно использовать в шаблоне. Теперь вы можете разместить ее в любом месте вашего документа. Во-вторых вам необязательно устанавливать какие-то тэги вокруг этой переменной. Теперь все html окружение включается в значение $_lang[ 'ef_validation_message'] в языковом файле eForm.

  • [ +vericode+] и [ +verimageurl+] - необходимы если вы собираетесь использовать в форме графическую проверку (capthca). Смотрите в примерах как это использовать.

  • [ +postdate+] - эта переменная будет использована в отчете и сообщении для пользователя после отправки данных формы и установит текущую дату и время.

  • [ +debug+] - начиная с версии 1.4.1, автоматически устанавливается, если включен режим отладки, в форме и сообщении для пользователя после отправки. Не помещается автоматически в шаблон отчета. Необходимо избегать отправку технической информации через сервер. Если вы хотите протестировать отправку писем, то можете включить эту переменную самостоятельно.

Типы и форматы данных


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


<input type="text" name="color" eform="A Color:string:1"/>


Базовый вид параметра eform следующий:


[ description/title]:[ datatype]:[ required]:[ validation message]:[ validation rule]


Data types


Вы можете устанавливать только эти типы данных. Другие определяются автоматически.


Все поля автоматически проверяют на пустоту значений.



  • string - не имеет специальной проверки кроме пустоты и обязательности заполнения.

  • date - проверяется на правильность формата даты (основано на функции strtotime())

  • integer - проверяется на числовое значение (не проверяется, если оно целое)

  • float - проверка на числовое значение

  • email - проверяет правильность адреса email с использованием регулярных выражений

  • file - (для поля загрузки файла) - проверяет соответствие разрешенному размеру, на текущий момент не имеет проверки типов файлов.

  • html - также как тип string только перенос строки преобразуется в тэг

Выпадающие списки, чекбоксы, и радиобатоны не требуют определения типа. eForm определяет их автоматически.


Extended Server Validation


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


Например: eform="Year of Birth:integer:1:Must be between 1950 and 2002:#RANGE 1950-2002"


Правила проверки:


#LIST - перечисленные через запятую возможные значения. Например: #LIST красный,зеленый,оранжевый,синий


#RANGE - разделенные запятой возможный числовые значения или числовые диапазоны. При установке диапазона порядок не имеет значения. 1~10 и 10~1 будут одинаково определять числа между 1 и 10 (включительно). Можно использовать как положительные так и отрицательные числа.


Например: #RANGE 1,3,-5~-15,60~82


#SELECT - определяет правильность значений, которые будут возвращены из базы при запросе. Запрос должен возвращать значения только одной колонки (функция проверяет только первую колонку). Вы можете использовать { DBASE} { PREFIX} тэги. Они будут автоматически заменены на название базы MODx и используемый префикс таблицы.


Например: #SELECT keyword FROM { PREFIX}site_keywords


#EVAL - строка кода PHP. Может возвращать true или false. Внимание! Хотя #EVAL все еще используется в eForm 1.4, но в будущих версиях они скорее всего больше не будут поддерживаться. Взамен используйте #FUNCTION.


#FUNCTION - название функции. Функция должна использовать только одно значение (значение поля) и возвращать TRUE или FALSE. Смотрите примеры, чтобы разобраться как это действует.


Например: #FUNCTION myValidationFunction


#REGEX - регулярное выражение. Синтаксис preg_match() в PHP.


Пример: #REGEX /^[ a-z]+ [ a-z0-9_]+/i


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



  • #FILTER #LIST Используйте две вертикальные черты для разделения заменяемых и заменяющих слов. Например: #FILTER #LIST badword,verybadword||goodword,verygoodword

  • #FILTER #EVAL Например: #FILTER #EVAL return myFilterFunction($value); (естественно вы должны быть уверены в существовании указанной функции) Примеры применения фильтра: function myFilterFunction($value){ $badWords = array('scribble','coding'); $goodWords = array('design','sleep'); return str_replace($badWords,$goodWords,$value); }

  • #FILTER #REGEX

Регулярное выражение замены. Синтаксис preg_replace() в PHP. Поиск и выражение замены разделяется двумя вертикальными чертами (||)


Поля select, radio и checkbox


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


Скрытые поля


По умолчанию скрытые поля присутствуют как защита от подделки формы при сравнении используемых значений (как в полях select, radio и checkbox). Но в некоторых местах это может быть ненужно. Например если вы используете обработку javascript, которая хранит свои значения в скрытых полях. В это случае вы можете изменить это поведение используя параметр eform (включая или выключая проверку).


Скрытое поле пример 1:


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


<input type="hidden" name="docId" value="31" />


Скрытое поле пример 2:


Если вы используете javascript, который хранит значения в скрытых полях, то вам необходимо убрать проверку поля так: <input type="hidden" name="calculatedField" value="" eform="::0::" />


Скрытое поле пример 3:


Пример похожий на 2, но вы хотите убедиться, что возвращенные значения лежат в допустимом диапазоне чисел. Установим для параметра eform заголовок, числовой тип данных, обязательность заполнения, сообщение об ошибке и проверку на диапазон. Это будет выглядеть так: <input type="hidden" name="calculatedField" value="" eform="Calculated Value:integer:1:Calculation out of range:#RANGE 1-10" />


Пример полей с проверкой



  1. Выпадающий список - обязательное поле (не требуется проверка) <select name="mySelect" eform_options="Select Country::1" /> (тип данных не определен) <option value="en-au">Australia</option> <option value="en-us">USA</option> </select>

  2. Текстовое поле - обязательное поле и формат данных для дат. <input type="text" name="dobDate" eform_options="Date of Birth:date:1:@EVAL return (strtotime($value)!==-1)?true:false;" />

  3. Много чекбоксов - обязательное поле, можно выбрать только одно значение. <input type="checkbox" name="myColors[]" value="Red" eform_options="Colors::1" /> (тип данных не определен) <input type="checkbox" name="myColors[]" value="Green" /> (тип данных не определен)

Оригинал: eForm - управление формами