Модуль "Обратная связь": данные доступные в шаблонах

Главная страница ([раздел]_main.tpl)

Этот тип шаблона содержит данные текста и описание набора полей для формы отправки.

$content

Форматированный текст.

$fields

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

  • field - строковой идентификатор поля (он же является ключом для всей записи).
  • name - название поля.
  • type - тип поля, принимает одно из значений, доступных в редакторе полей.
  • property - сопутствующее свойство для типа поля, например допустимое количество символов для типа string.
  • value - начальное значение для элемента ввода в форме.
  • fill - значение свойства «Обязательно для заполнения», принимает значения Y/N.

$form

Массив данных для начальных значений формы (аналог value в записях $fields). По сути является копией $_REQUEST, поэтому при выводе важно защищать значения с помощью escape. Если на сайте используется раздел на базе модуля "Пользователи", то значения массива с ключами name и email будут замещаться на имя пользователя и его email соответственно, в случае если он авторизирован на сайте.

$captcha

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

$errors.captcha

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

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

<h1>{$section_name}</h1>
 
{$content} {* Текст на странице. *}
 
{if $errors.captcha}
<p><font color="red">Неверно введены контрольные цифры, попробуйте еще раз.</font></p>
{/if}
 
{* Скрипт валидации формы. *}
{literal}
<script type="text/javascript">
function valid_form(form)
{ {/literal}{foreach from=$fields item=field}
  {if $field.fill=="Y" && $field.type!="bool" && $field.type!="select"}
  if(form.{$field.field}.value.replace(/\s+/, '').length==0)
  {literal}{{/literal} alert("Пожалуйста, заполните поле '{$field.name}'"); return false;{literal}}{/literal}
  {/if}
  {/foreach}
  {literal}
  if(form.captcha.value.replace(/\s+/, '').length<4)
  { alert('Пожалуйста, укажите код на картинке.'); return false; }{/literal}{literal}
  return true;
}
</script>
{/literal}
 
<h3>Отправить сообщение:</h3>
 
<form method="post" enctype="multipart/form-data" onsubmit="return valid_form(this)">
 
{foreach from=$fields item=field} {* Обход массива с данными о полях формы. *}
 
{if $field.type=="string"}
<p>{$field.name}:{if $field.fill=="Y"}<b>*</b>{/if}</p>
<p>{editbox name=$field.field max=$field.length text=$field.value width="40%"}</p>
 
{elseif $field.type=="int" || $field.type=="float"}
<p>{$field.name}:{if $field.fill=="Y"}<b>*</b>{/if}</p>
<p>{editbox name=$field.field max=10 width=60 text=$field.value}</p>
 
{elseif $field.type=="bool"}
<p><input type="checkbox" name="{$field.field}"{if $field.value=="Y"} checked{/if}>&nbsp;{$field.name}</p>
 
{elseif $field.type=="text"}
<p>{$field.name}{if $field.fill=="Y"}<b>*</b>{/if}:</p>
<p>{textarea name=$field.field rows=$field.property text=$field.value}</p>
 
{elseif $field.type=="select"}
<p>{$field.name}:{if $field.fill=="Y"}<b>*</b>{/if}</p>
<p>
<select name="{$field.field}">
{if $field.fill=='N'}<option value="0">Не выбрано</option>{/if}
{html_options options=$field.options selected=$field.value}
</select>
</p>
 
{elseif $field.type=="mselect"}
<p>{$field.name}:{if $field.fill=="Y"}<b>*</b>{/if}</p>
<p>{html_checkboxes name=$field.field options=$field.options checked=$field.value separator=", "}</p>
 
{elseif $field.type=="file"}
<p>{$field.name}:</p>
<p><input type="file" name="{$field.field}"></p>
{/if}
{/foreach}
 
<p>
Введите цифры на рисунке:<b>*</b>
{editbox name="captcha" max=4 width="50"}
{captcha} {* Вывод картинки с контрольными цифрами. *}
</p>
 
{submit caption="Отправить"}
{hidden name="action" value="send"}
</form>

Страница сообщения ([раздел]_message.tpl)

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

$fields

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

  • field - строковой идентификатор поля (он же является ключом для всей записи).
  • name - название поля.
  • type - тип поля, принимает одно из значений, доступных в редакторе полей.
  • value - значение.

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

<h1>{$section_name}</h1>
 
<h2>Ваше сообщение отправлено.</h2>
 
<h4>Вы указали следущие данные:</h4>
{foreach from=$fields item=field}
<b>{$field.name}</b>: {$field.value|escape}<br>
{/foreach}
 
modules/feedback/templates.txt · Последние изменения: 22.08.2010 20:47 От aristoc