» На главную »RuSupport Форум » Файловый Архив » Ссылки партнеров
  Категории Раздела

  Реклама

  Последние темы форума

  Вход на сайт
:

:



Регистрация

  Кто он-лайн

Привет!


  Visit It

  Nucleus Info
Последняя версия: 3.65
Скачать можно здесь:
Powered by Nucleus CMS

  Статистика
Яндекс цитирования

  Nucleus Ru Support Staff

  Поиск по сайту


  Кнопки
RSS



» Создаем дополнительные поля в формах

В стандартной версии Nucleus присутствует функция отправки писем админам\зарегистрированным пользователям прямо через форму на сайте (кто не понял о чем я, такую форму можно увидеть здесь.

ИМХО, вещь довольно удобная, т.к. это своеобразный feedback, с помощью которого можно получать письма от посетителей сайта не открывая свой имейл. Также в настройках такие сообщения можно запретить совсем, или запретить незарегистрированным пользователям.

Использовать эту форму или нет, решать конечно же, вам. Ну а в этой статье будет разобран небольшой хак этой самой формы отправки писем для незарегистрированных пользователей.



В первую очередь, если вы хотите использовать функцию отправки писем, вам необходимо ее включить.

Идем в админку - Основные настройки (global settings) - Настройки мемберов (Member Settings), ставим Да для Разрешить мембер-ту-мембер сообщения и Разрешить не-мемберам посылать сообщения (Allow Member-2-Member Service и Allow non-members to send messages).

Теперь о том что мы будем делать, и что для этого нам понадобится. В форме membermailform-notloggedin мы добавим дополнительное поле URL, а также приведем к должному виду письма, которые будут приходить при заполнении этой формы.

Редактированию будут подвержены следующие файлы:
1. ../nucleus/forms/membermailform-notloggedin.template (а также можно и membermailform-loggedin.template чтобы привести все к единому стилю).
2. ../nucleus/libs/ACTION.php

Если вы собираетесь редактировать файлы непосредственно с вашего веб-хостинга, то обязательно сделайте резервные версии файлов. Мало ли что

Значит так, переходим теперь к редактированию.
Открываем membermailform-notloggedin.template любым текстовым редактором (советую Crimson Editor) и заменяем все что там есть на:

<div class="my" id="margin">
<form method="post" action="<%formdata(actionurl)%>">
<input type="hidden" name="memberid" value="<%formdata(memberid)%>">
<input type="hidden" name="action" value="sendmessage">
<input type="hidden" name="url" value="<%formdata(url)%>">
Ваше имя: <br><input id="but" class="formfield" style="width:150px" type="text" name="user"><br>
Ваш и-мейл: <br><input id="but" class="formfield" style="width:150px" type="text" name="frommail">
<br>
Ваш сайт: <br><input id="but" class="formfield" style="width:150px" type="text" name="site">
<br><br>
Сообщение<br>
<textarea class="formfield" name="message" rows="<%formdata(rows)%>" cols="<%formdata(cols)%>"></textarea><br><input class="formbutton" type="submit" value="<%text(_MEMBERMAIL_SUBMIT)%>">
</form>
</div>


Примечание: все использованные стили будут указаны в конце.

Сохраняем и закрываем membermailform-notloggedin.template. Открываем ACTION.php, ищем (примерно строка 98 )

function sendMessage() {
global $CONF, $member;

$error = $this->validateMessage();
if ($error != '')
return array('message' => $error);
if (!$member->isLoggedIn()) {
$fromMail = postVar('frommail');
$fromName = _MMAIL_FROMANON;
} else {
$fromMail = $member->getEmail();
$fromName = $member->getDisplayName();
}
$tomem = new MEMBER();
$tomem->readFromId(postVar('memberid'));
$message = _MMAIL_MSG . ' ' . $fromName . "\n"
. '(' . _MMAIL_FROMNUC. ' ' . $CONF['IndexURL'] .") \n\n"
. _MMAIL_MAIL . " \n\n"
. postVar('message');
$message .= getMailFooter();
$title = _MMAIL_TITLE . ' ' . $fromName;
mail($tomem->getEmail(), $title, $message, 'From: '. $fromMail);
if (postVar('url')) {
redirect(postVar('url'));
} else {
$CONF['MemberURL'] = $CONF['IndexURL'];
if ($CONF['URLMode'] == 'pathinfo')
$url = createMemberLink($tomem->getID());
else
$url = $CONF['IndexURL'] . createMemberLink($tomem->getID());
redirect($url);
}
exit;


Меняем на:

function sendMessage() {
global $CONF, $member;

$error = $this->validateMessage();
if ($error != '')
return array('message' => $error);

if (!$member->isLoggedIn()) {
$fromMail = postVar('frommail');
if (!isValidMailAddress($fromMail))
doError(_ERROR_BADMAILADDRESS);
$fromName = postVar('user');
$fromSite = postVar('site');
} else {
$fromMail = $member->getEmail();
$fromName = $member->getDisplayName();
$fromSite = $member->getURL();
}

$tomem = new MEMBER();
$tomem->readFromId(postVar('memberid'));

$message = _MMAIL_MSG . ' ' . $fromName . "\n"
. '[' . $fromSite . "]\n\n"
. _MMAIL_MAIL . " \n\n"
. postVar('message');
$message .= getMailFooter();

$title = _MMAIL_TITLE . ' ' . $fromName;
mail($tomem->getEmail(), $title, $message, 'From: '. $fromMail);

if (postVar('url')) {
redirect(postVar('url'));
} else {
$CONF['MemberURL'] = $CONF['IndexURL'];
if ($CONF['URLMode'] == 'pathinfo')
$url = createMemberLink($tomem->getID());
else
$url = $CONF['IndexURL'] . createMemberLink($tomem->getID());
redirect($url);
}
exit;


Сохраняем и заливаем все на сервер.

Для того чтобы, как упоминалось выше, все соответствовало стилю, можно отредактировать и membermailform-loggedin.template (хотя действие хака на него не распространяется). У меня содержимое membermailform-loggedin.template следующее:
<div class="my" id="margin">
<form method="post" action="<%formdata(actionurl)%>">
<input type="hidden" name="memberid" value="<%formdata(memberid)%>">
<input type="hidden" name="action" value="sendmessage">
<input class="formfield" type="hidden" name="url" value="<%formdata(url)%>">
Сообщение: <br>
<textarea class="formfield" name="message" rows="<%formdata(rows)%>" cols="<%formdata(cols)% >"></textarea>
<br>
<input class="formbutton" type="submit" value="<%text(_MEMBERMAIL_SUBMIT)%>">
</form></div>


Что же все эти операции дают?
Во-первых, в форме отправлений сообщений появляется новая графа “URL”, во вторых письма которые приходят вам на имейл выглядят лучше (см. скриншот 1), в третьих, для зарегистрированных пользователей автоматически выставляется сайт, указанный при регистрации (см. скриншот 2).


Увидеть данную форму в действии можно ЗДЕСЬ

Использованные стили: (для использования таких же стилей, которые указаны в примере, добавьте следующие строки в свой .css файл)

.my {font-size:10px; font-family:verdana;}
#margin {margin-left:40px;}
#but {font-size:10px;}
.formbutton {width:90px; font-size:10px; font-family:Verdana; background-color:#bfbfbf; border:1px solid #a9a9a9; color:#353535;}
.formbutton:hover {background-color:#fbc44f; border:1px solid #000000; color:#000000;}
.formfield {font-family:Verdana; background-color:#f4f4f4; border:1px solid #9f9f9f; color:#4a4a4a; margin:1px;}
.formfield:focus {background-color:#ffffff; border:1px solid #000000;}


Скриншот 1:

Скриншот 1


Скриншот 2:

Скриншот 2

Желаю удачи.
По всем вопросам, обращайтесь

Скачать все необходимые файлы в архиве можно здесь (19 KB)
Этеншен! Файлы для версии 3.21! На 3.22 не проверялось.


Комментарии:

Пропачил! Дополнительные поля не появились! Версия проги 3.33





Оставить комментарий:

:

:
:


© 2005-2011 Nucleus.com.ru - Design by Suvoroff