Respayn 1 Опубликовано: 17 ноября 2011 Рассказать Опубликовано: 17 ноября 2011 Знаю что подобная тема уже обсуждалась неоднократно но все же подниму ее снова. И так в общем чтобы создать вторую форму обратной связи по мимо основной которую предлагает CMS DLE 9.4. Я проделал следующие шаги. 1. Скопировал файлы feedback.tpl, feedback.php (modules), feedback.php (ajax), в те же директории где лежат оригинальные файлы. Они у меня имели теже названия с припиской "Копия". 2. Переименовал скопированные файлы - advertise.tpl, advertise.php (modules), advertise.php (ajax). 3. Отредактировал файл advertise.tpl для нужного отображения формы, а именно добавил два новых текстовых поля - "Домашний телефон", "Сотовый телефон". Файл приобрел след. код. <table width="100%" align="center"> <tr> <td align="left"><img src="{THEME}/images/techhelp.png"/></td> </tr> </table> <div class="pheading"><h7>Дать бесплатное объявление</h7></div> <table width="100%" align="center"> [not-logged] <tr> <td class="label"> Ваше имя:<span class="impot"><font color="#FF0000">*</font></span> </td> <td><input type="text" maxlength="35" name="name" class="f_input" /></td> </tr> <tr> <td class="label"> Ваш E-Mail:<span class="impot"><font color="#FF0000">*</font></span> </td> <td><input type="text" maxlength="40" name="email" class="f_input" /></td> </tr> [/not-logged] <tr> <td class="label"> Кому:<span class="impot"><font color="#FF0000">*</font></span> </td> <td>{recipient}</td> </tr> <tr> <td class="label"> Тема:<span class="impot"><font color="#FF0000">*</font></span> </td> <td><input type="text" maxlength="60" name="subject" /></td> </tr> <tr> <td class="label" valign="top"> Сообщение: </td> <td><textarea name="message" style="width: 380px; height: 160px" class="f_textarea" /></textarea></td> </tr> <tr> <td class="label"> Домашний телефон (Пример: +7123456789):<span class="impot"><font color="#FF0000">*</font></span> </td> <td><input type="text" maxlength="40" name="homenumber" class="f_input" /></td> </tr> <tr> <td class="label"> Сотовый телефон (Пример: +7123456789):<span class="impot"><font color="#FF0000">*</font></span> </td> <td><input type="text" maxlength="40" name="sotnumber" class="f_input" /></td> </tr> [sec_code]<tr> <td class="label"> Введите код:<span class="impot"><font color="#FF0000">*</font></span> </td> <td> <div>{code}</div> <div><input type="text" maxlength="45" name="sec_code" style="width:115px" class="f_input" /></div> </td> </tr>[/sec_code] [recaptcha]<tr> <td class="label"> Введите два слова, показанных на изображении:<span class="impot">*</span> </td> <td> <div>{recaptcha}</div> </td> </tr>[/recaptcha] </table> <div class="fieldsubmit"> <button name="send_btn" class="fbutton" type="submit"><span>Отправить</span></button> </div> <table width="100%" align="center"> <tr> <td align="right"> " <font color="#FF0000">*</font> " - Поля обязательного ввода информации!</td> </tr> </table> 4. Отредактировал файл engine.php - а именно обозначил новую переменную. case "feedback" : include ENGINE_DIR . '/modules/feedback.php'; break; case "advertise" : include ENGINE_DIR . '/modules/advertise.php'; break; 5. Отредактировал файл advertise.php из папки modules изменив там след строки. Вид письма отправляемого на мое мыло. $subject = strip_tags( stripslashes( $_POST['subject'] ) ); $message = stripslashes( $_POST['message'] . "\n".'Сотовый телефон: '.$_POST ['sotnumber'] . "\n".'Домашний телефон: '.$_POST ['homenumber'], $config['charset'] ); $recip = intval( $_POST['recip'] ); Обозначил подгружаемый tpl файл для скрипта. $tpl->load_template( 'advertise.tpl' ); 6. Подобным образом отредактировал advertise.php из папки ajax (Примечание: В статье которую я читал на этом форуме, было описано что именно данный файл отвечает за отправку данных из дополнительных полей. В этой же статье есть ссылка на основные действия по созданию доп. полей в форме обратной связи, на которую опирался автор), изменил строки как в шаге номер 5. Изменил вид отправляемого письма, и обозначил прогрузку tpl файла для скрипта. 7.Теперь исходя из проделанных действий итог нашей работы должен был выглядеть след. образом: Юзер пишет объявление в форме обратной связи где помимо стандартных полей "Ваше имя", "Кому", и "Ваш email адрес" (Для не регнутых пользователей), "Поле для написания сообщения", присутствую дополнительные поля с названиями "Домашний телефон" и "Сотовый телефон". После заполнения всех полей и проверки капчи, при отправке на мою почту должно прийти письмо след. вида: Администратор, данное письмо вам отправил Вася Пупкин с сайта вашсайт.ru --------------------------------------- Текст сообщения: --------------------------------------- Какое-то объявление --------------------------------------- Домашний телефон: -------------------------------------- 123456789 -------------------------------------- Сотовый телефон: -------------------------------------- 123456789 -------------------------------------- Но приходит письмо след вида: Администратор, данное письмо вам отправил Вася Пупкин с сайта вашсайт.ru --------------------------------------- Текст сообщения: --------------------------------------- Какое-то объявление Т.е. нет данных с дополнительных полей. А теперь вопрос! - Как эту лабуду исправить? Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 17 ноября 2011 Рассказать Опубликовано: 17 ноября 2011 проще юзать JS Цитата Ссылка на сообщение Поделиться на других сайтах
Respayn 1 Опубликовано: 17 ноября 2011 Рассказать Опубликовано: 17 ноября 2011 Автор А ответить по существу не судьба? А не просто так постить "проще юзать JS"?! Да будет известно JS не всегда уместен - так как подгружаемость сайта сразу вырастает из-за кучи скриптов, которые выполняются на стороне клиента, а не сервера. Цитата Ссылка на сообщение Поделиться на других сайтах
notbugme 0 Опубликовано: 18 ноября 2011 Рассказать Опубликовано: 18 ноября 2011 Respayn тебе нужно отредактировать файл advertise.php в папке engine/ajax и вместо в 122 и 123 строки написать свои доп поля вот приведу код который я делал у себя (php знаю плохо, поэтому сам подправишь как надо) $not_allow_symbolp = array ("\x22", "\x60", "\t", '\n', '\r', "\n", "\r", '\\', ",", "/", "¬", ";", ":", "~", "[", "]", "{", "}", "^", "%", "$", "<", ">", "?", "!", '"', "'" ); $phone = trim( str_replace( $not_allow_symbolp, '', strip_tags( stripslashes( $_POST['phone'] ) ) ) ); $city = trim(strip_tags( stripslashes( convert_unicode( $_POST['city'], $config['charset'] ) ) ) ); $from_know = trim(strip_tags( stripslashes( convert_unicode( $_POST['from_know'], $config['charset'] ) ) ) ); $subject = trim(strip_tags( stripslashes( convert_unicode( $_POST['subject'], $config['charset'] ) ) ) ); //$message = stripslashes( $_POST['phone'] ) . " " . $email . "" . stripslashes( $_POST['message'] ); $message = "Имя: " . $name . " e-mail: " . $email . " Телефон: " . $phone /* trim(stripslashes( convert_unicode($_POST['phone'], $config['charset'] ) ) ) */ . " Город: " . $city . " От куда о нас узнали: " . $from_know . " Тема сообщения: " . $subject . " Текcт сообщения: " . trim(stripslashes( convert_unicode($_POST['message'], $config['charset'] ) ) ); $recip = intval( $_POST['recip'] ); так же в этом же файле нужно сделать что б он выдавал ошибку, что эти поля не заполнены поэтому я после if( empty($subject) OR dle_strlen($subject, $config['charset']) > 200 ) { $stop .= $lang['feed_err_4']; } вставил if( empty( $phone ) OR dle_strlen($phone, $config['charset']) > 200 ) { $stop .= $lang['feed_err_phone']; } if( empty( $from_know ) OR dle_strlen($from_know, $config['charset']) > 100 ) { $stop .= $lang['feed_err_from_know']; } if( empty( $city ) OR dle_strlen($city, $config['charset']) > 200 ) { $stop .= $lang['feed_err_city']; } также нужно добавить данные ошибки в языковой файл website.lng из language/Russian/ 'feed_err_phone' => "<li>Вы не указали свой телефон.</li>", 'feed_err_city' => "<li>Вы не указали город.</li>", 'feed_err_from_know'=> "<li>Вы не указали от куда о нас узнали.</li>", главное потом не забыть при обновлении движка потом эти ошибки опять добавить ну или можно в самом php вставить $stop .= "ошибка такая-то"; Цитата Ссылка на сообщение Поделиться на других сайтах
Respayn 1 Опубликовано: 22 ноября 2011 Рассказать Опубликовано: 22 ноября 2011 Автор Спасибо большое - хоть какая-то помощь. буду проверять и тестить. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.