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

  Реклама

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

  Вход на сайт
:

:



Регистрация

  Кто он-лайн

Посетителей: 0



За день:
  • Всего: 3
  • Мемберов: 0
  • Посетителей: 3


  •   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