Главное меню
все форумы все темы форума добавить тему
Обратная связь
Модуль, как компонент отлично работает, почту шлёт, нареканий не вызывает. Спасибо! Но возникла потребность использовать модуль, как статичный элемент страницы (встроенным в шаблон). Простым копирование из tpl файлов модуля в tpl шаблона должного эффекта не достигается. Каким образом его можно использовать в данной ситуации? Если мне нужно его использовать в двух местах на одной странице - достаточно ли форматирования полей ввода или нужно менять что-то ещё ?
P.S. Я наверное уже успел надоесть своими глуповатыми вопросами о непонятном использовании некоторых модулей). Так уж сложилось, что я больше знаком с вёрсткой и оформлением, нежели с тех. стороной. Посему обязательно, как закончу свой сайт, покажу то, над чем работал, порадуемся вместе. Спасибо!
Если я правильно понял, то можно просто встроить форму в шаблон, а в качестве action у нее указать страницу модуля обратной связи. В этом случае страница с модулем будет проводить валидацию и отправку формы и так же выводить заполненные поля в случае ошибки.
Loki, действительно сработало. И отправляет. Только на странице обратной связи, с сообщением об успешной отправке сообщения всплывает предупрежденение:
Warning: Invalid argument supplied for foreach() in /www/kernel/modules/feedback/feedback.php on line 28
Посмотрев указанную строчку в php файле обратной связи не понял, что может там вызвать ошибку.
UPD: Пишет об успехе, даже если отправляешь пустую форму.
А у Вас нет обязательных для заполнения полей, потому и ошибку выдает, потому и об успехе рапортует
Чтобы ошибку не выдавал измените 28 строчку таким образом:
PHP
if (is_array($_POST['obl'])) foreach($_POST['obl'] as $var)
А как сделать требуемые поля обязательными?
В родном шаблоне как раз есть комментарий на эту тему:
Smarty
{*
        все обязательные для заполнения поля помещаются в массив obl
        все прочие поля помещаются в массив nobl
        *}

То есть если хотим сделать обязательное для заполнения поле, то делаем
Smarty
Имя*<br />
<input type="text" name="obl[name]" value="{$smarty.post.obl.name|escape}" />

 
если же необязательное, то
Smarty
Фамилия<br />
<input type="text" name="nobl[surname]" value="{$smarty.post.nobl.surname|escape}" />

Дело в том, что модуль некорректно шлёт сообщения с сайта, отправленные не со страницы модуля. Постараюсь обьяснить - у меня в шаблоне задуманы две формы c feedback'ом. Так вот если пользоватся ими, а не формой по адресу /feedback, шлётся что-то вида :
Text
<> отправил соо=B1щение с сайта htt=://test1.ru

Если же со страницы фидбека - то нормально :
Text
Дмитрий <mail@mail.ru> о=82правил сообщ=B5ние с
сайта http://test1.ru
Текст сообщения

Подозреваю, что ошибка кроется в 47-ой строке feedback.php, но так ли это точно не знаю.
И вместо букв "б" и "т" вставляются непонятные символы, что видно на вышеприведённом примере.
 
По поводу obl/nobl - видел это в родном шаблоне и вставлено в моём шаблоне было с обязательными для заполнения параметрами. Просто я не знал, что это значит Тем не менее ошибку выдавало, пока не заменил строку, на указанную Вами.
Как я понимаю, тестируете на денвере? А просматриваете в аутлуке?
Попробуйте преобразовать в сгенерированном письме окончания строки из \n в \r\n тогда письмо будет отображаться нормально.
На реальном сервере все это шаманство будет не нужно - почтовый сервер сам сделает все преобразования.
Версия есть на хостинге, и есть на денвере. То, что редактируется и требует проверки непосредственно сейчас, тестится в денвере, так быстрее. Описанная ошибка именно из денвера, и открывал аутлуком, да Проверю на норм хостинге.
Посмотрел на хостинге. Письмо отображается нормально. Но данные всё-равно не шлются
Приходит письмо вида:
<> отправил сообщение с сайта
http://75279.****.web.hosting-test.net

 
Вот как я встроил форму в шаблон, с java-скриптом, думаю понятно:
Text
<form method="post" action="http://75279.****.web.hosting-test.net/feedback">
                            <input type="text" size="28" name="location obl[name]" id="downhours" onclick="this.value='{$smarty.post.obl.name|escape}'" value="Ваше имя" />
                <input type="text" size="28" name="type obl[email]" id="downemail" onclick="this.value='{$smarty.post.obl.email|escape}'"  value="Ваш E-mail" />
 
                <textarea name="details obl[msg]" rows="4" id="downdetails" onclick="this.value='{$smarty.post.obl.msg|escape}'" cols="30">Детали</textarea>
                                <input type="hidden" name="token" value="{$_user->token}" />
                        <div class="cb"></div>
          <input type="submit" class="quote" value="Отправить"></input>
                  </form>

Пробовал с различными компоновками, размещениями и комбинациями {$smarty.post.obl.msg|escape} и т.д. в шаблоне (с js и без), но результата нету   
 
UPD: Попробовал внаглую скопировать содержимое tpl файла из модуля фидбека. Всё заработало. Буду смотреть, подганять. Первое предположение, что всё из-за поля name в форме. Сейчас проверим.
UPD2: Предположение оказалось верным. Почему-то считал, что obl/nobl система берёт от сюда: {$smarty.post.obl.email|escape}, а не из поля name. Сейчас всё работает как часы, на нормальном хостинге. Спасибо Вам, Александр, что Ваша система позволяет мне совершенствоваться. Сделана для людей.
mushtat:
name="location obl[name]"
...
name="type obl[ email]"
...
name="details obl[msg]"

В общем-то, ничего удивительного: сервер ждет два массива $_POST['obl'] и $_POST['nobl'], а Вы ему вместо этого присылаете три других: $_POST['location_obl'], $_POST['type_obl'] и $_POST['details_obl']. Потому и шаблон пустой.