Главное меню
Обратная связь
Модуль, как компонент отлично работает, почту шлёт, нареканий не вызывает. Спасибо! Но возникла потребность использовать модуль, как статичный элемент страницы (встроенным в шаблон). Простым копирование из 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']. Потому и шаблон пустой.