Потребовалось на сайте с CMS DLE 8.2 организовать форму бронирования квартиры, которая просто отравляет на админский e-mail заявку.
Т.е. фактически дополнительную форму обратной связи.
Решил организовать это как модуль для DLE.
1. Напишем php код модуля.
<?
/*
=====================================================
DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
http://dle-news.ru/
-----------------------------------------------------
Copyright (c) tudimon.com
=====================================================
Файл: bronirovanie.php
-----------------------------------------------------
Назначение: дополнительная форма обратной связи для DLE
=====================================================
*/
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
//загрузка шаблона
$tpl->load_template('bronirovanie.tpl');
//проверка корректрости е-майла
function check_email($value) {
return eregi( "^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $value );
}
if ($_POST['f']==1)
{
$stop = "";
// --------------------------- конфигурирование -------------------------- //
$adminemail="admin@site.ru"; // емайл админа - кому отсылать
$date=date("d.m.Y"); // число.месяц.год
$time=date("H:i:s"); // часы:минуты:секунды
// ---------------------------------------------------------------------- //
// считываем данные формы:
$adr=$_POST['adr'];
$fio=$_POST['fio'];
$email=$_POST['email'];
if( empty( $email ) ) {
$stop .= $lang['feed_err_2'];
} elseif( ! check_email( $email ) ) {
$stop .= $lang['feed_err_3'];
}
if( $stop ) {
msgbox( $lang['all_err_1'], "$stop<br /><br /><a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>" );
} else {
// отправка админу сообщения
$headers=null; // Настройки для отправки писем
$headers.="From: Система бронирования <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
// Собираем всю информацию в теле письма
$allmsg="ФИО: $fio
Адрес: $adr
...
* Это сообщение сгенерировано и отправлено роботом. Отвечать на него ненужно.";
// Отправляем письмо майлеру на съедение если разрешена отправка;-)
mail("$adminemail", "Заказ на бронь $date $time.", $allmsg, $headers);
$bronirovanie = "<br><center><b>Заявка на бронь отправлена Администратору.</b></center><br>";
}
} else {
//сформируем форму
$adr=$_POST['adr'];
$bronirovanie = "
<center>
<b>Заявка на бронирование квартиры</b><br><br>
</center>
<FORM name='bronir' action='".$_SERVER['REQUEST_URI']."' method='post'>
<TABLE align=center cellSpacing=0 cellPadding=5 width='550' border=0>
<TR>
<TD width='200' vAlign='top' align='left'><B>Адрес:</B></TD>
<TD align='left'> $adr</TD>
</TR>
<TR>
<TD width='200' vAlign='top' align='left'><B>Ф.И.О.</B></TD>
<TD align='left'> <INPUT maxLength='255' size='60' name='fio'></TD>
</TR>
<TR>
<TD width=200 vAlign=top align=left><B>E-mail</B></TD>
<TD align=left> <INPUT maxLength=255 size=60 name=email></TD>
</TR>
<TR>
<TD width=200 vAlign='top' align='left' colspan='2'>
<input name='submit' type='image' src='{THEME}/images/send.png' value='submit' onclick='submit();return false;'>
<input type='hidden' name='f' value='1'>
<input type='hidden' name='adr' value='$adr'></TD>
</TR>
</TABLE>
</FORM>";
}
$tpl->set('{bronirovanie}',$bronirovanie);
$tpl->compile( 'content' );
$tpl->clear();
?>
Принцип действия такой:
- если переменная
f (передается через post) не равна
1, то необходимо отобразить форму.
- если равна
1, то значит форма была заполнена и юзер нажал кнопку отправить. Т.е. нужно сформировать письмо и отправить его на мыло.
PHP-код модуля запихиваем в файл
bronirovanie.php.
Файл кладем в папку с модулями
/engine/modules/bronirovanie.php2. Создаем файл tpl для модуля.<table width="100%">
<tr>
<td class="news">{bronirovanie}</td>
</tr>
</table>
Здесь
{bronirovanie} - переменная которую формирует файл
bronirovanie.php.
В одном случае это форма, в другом сообщение о том, что заявка отправлена.
Файл кладем в папку с нашим шаблоном.
3. Регистрируем модуль в движке.Открываем файл
/engine/engine.php.
Находим строку:
case "feedback" :
include ENGINE_DIR . '/modules/feedback.php';
break;
после нее добавляем описание нашего модуля:
case "bronirovanie" :
include ENGINE_DIR . '/modules/bronirovanie.php';
break;
Эти блоки кода описывают реакцию движка на разные параметры, указанные в адресной строке после
index.php?do=, а точнее - какой модуль подгружать.
Т.е. если теперь написать в адресной строке
index.php?do=bronirovanie, то система подгрузит наш модуль и отобразит форму.
4. Делаем кнопку, нажав на которую, пользователь попадет на страничку бронирования.Можно просто:
<a href="/index.php?do=bronirovanie">забронировать квартиру</a>
Но мы сделаем кнопку которая будет передавать параметр
adr в форму, дабы пользователю не пришлось забивать адрес квартиры.
Сделаем это вставив в файл шаблона
fullstory.tpl следующий код:
<FORM name="bronir" action="/index.php?do=bronirovanie" method="post">
<input name='submit' type='image' src='{THEME}/images/send_bron.png' value='submit' onclick='submit();return false;'>
<input type="hidden" name="adr" value="{title}">
</FORM>
Ну вроде бы все.
Замечания, коментарии?
Группа: Гости
Регистрация: --
Статус:
По Распоряжению Правительства РФ №1555-р от 17.10.2009, мне на сайте нашего ведомства надо создать дополнительную форму обратной связи. У Вас всё написано понятно, но вопрос вот в чём: как для этой формы на dle 8.2. сделать ссылку типа: http://xxxxx.ru/gto/
Спасибо.