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

Главная страница ([раздел]_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 · Последние изменения: 14.02.2018 11:03 (внешнее изменение)