avatar

Дополнительное поле в форме обратной связи

Опубликовал в блог Дополнения и модули для Simpla CMS
0
Добавляем дополнительное поле в форме обратной связи, например телефон или номер заказа, вся информация видна в админке.

Начнем с правки файла feedback.tpl вашего шаблона в папке /design/ваш_шаблон/html.
В форме вставляем нужное вам поле, в нашем случае поле номер телефона:
после

<label>Email</label>
<input data-format="email" data-notice="Введите email" value="{$email|escape}" name="email" maxlength="255" type="text"/>

вставляем

<label>Номер телефона</label>
<input format=".+" notice="Введите номер телефона" value="{$phone|escape}" name="phone" maxlength="255" type="text"/>

Если нужно сделать данное поле обязательным, чуть выше поправим код вывода ошибок:
<div class="message_error">{if $error=='captcha'}
Неверно введена капча
{elseif $error=='empty_name'}
Введите имя
{elseif $error=='empty_email'}
Введите email
{elseif $error=='empty_phone'}
Введите номер телефона
{elseif $error=='empty_text'}
Введите сообщение
{/if}</div>

Далее правим файл FeedbackView.php в папке /view/
после
$feedback->email        = $this->request->post('email');

вставляем
$feedback->phone        = $this->request->post('phone');

далее, в этом же файле, после
$this->design->assign('email', $feedback->email);

вставляем
$this->design->assign('telephone', $feedback->phone);

и после
elseif(empty($feedback->email))
		$this->design->assign('error', 'empty_email');

вставляем
elseif(empty($feedback->phone))
                $this->design->assign('error', 'empty_ phone');


Теперь сделаем маленькое изменение в таблице базы данных s_feedbacks, вставим пустую строку phone с параметрами: varchar(20), Null Нет.
ALTER TABLE `s_feedbacks` ADD `phone` VARCHAR( 20 ) NOT NULL ;


Все, закончили с фронтэндом, теперь переходим к админке.

Для нормальной работы дизайна админки в simpla/design/css/style.css добавляем
div.comment_tel{
font-size: 12px;
color: #000000;
padding-bottom:5px;
}

Далее в файле feedbacks.tpl, папки /simpla/design/html/ вставляем код:
после
<div class='comment_name'>
<a href="mailto:{$feedback->name|escape}<{$feedback->email|escape}>?subject=Вопрос от пользователя {$feedback->name|escape}">{$feedback->name|escape}</a>
</div>

добавляем
<div class="comment_tel">Телефон: {$feedback->phone|escape}</div>

Для того чтобы заработало поле вывода номера телефона в админке, редактируем файл Feedbacks.php в папке /api
меняем
$query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.message, f.date FROM __feedbacks f WHERE id=? LIMIT 1", intval($id));

на
$query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.phone, f.message, f.date FROM __feedbacks f WHERE id=? LIMIT 1", intval($id));

далее, в этом же файле, меняем
$query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.message, f.date
										FROM __feedbacks f WHERE 1 $keyword_filter ORDER BY f.id $sort $sql_limit");

на
$query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.phone, f.message, f.date
										FROM __feedbacks f WHERE 1 $keyword_filter ORDER BY f.id $sort $sql_limit");


Теперь у нас есть поле ввода номера телефона и отображается в админке. Теперь, чтобы приходило письмо админу с номером телефона нужно в файле simpla/design/html/email_feedback_admin.tpl после
<tr>
    <td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
      Email
    </td>
    <td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
      <a href='mailto:{$feedback->email|escape}?subject={$settings->site_name}'>{$feedback->email|escape}</a>
    </td>
  </tr>

вставить
<tr>
    <td style='padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;'>
      Номер телефона:
    </td>
    <td style='padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;'>
       {$feedback->phone|escape}</a>
    </td>
  </tr>

Все. По аналогии можно вывести другие параметры, например номер заказа и т.д.
2 комментария RSS
avatar
Подскажите пожалуйста, как сделать дополнительное поле селект, с выбором из списка нужного.
Например, с 2 темами на выбор: вопрос, жалоба.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.