Новости

07.04.2011

Теперь при добавлении товара в скрипте интернет магазина не будет открыватся страница с корзиной.

подробнее...

04.03.2011

Глобальное исправление косяков, перекачайте скрипты.
Положил предварительную версию Quick.Cart

подробнее...

В этом боксе №1 можно что-то написать
A A A

Форма обратной связи для магазина

А как потенциальному покупателю это сделать? И вам как узнать мнение или вопрос посетителя? Не писать, в самом деле, свой E-mail на самом видном месте. Так давайте сделаем форму обратной связи, а  точнее страницу для контактов, если ваши посетители и будущие покупатели захотят с вами связаться. Как выглядит данная форма, вы можете увидеть на вкладке Контакты этого сайта. А ещё мне не понятно, почему разработчики скрипта зажали эту функцию.  Нет, конечно, я понимаю, что они хотят получить оплату за свою работу, но данная функция, уже есть в скрипте магазина, она нужна для отправки заказов.
Ну да ладно не будем злить разработчиков и напишем свою функцию.


В файл соответствующего языка, для русского это lang /ru.php добавим переменные:


$lang['Feedback_page']= "Страница обратной связи";

$lang['Shop_email']= "Email магазина";
$lang['Email']= "Ваш Email";
$lang['Contents_letter']= "Ваше сообщение";
$lang['Subject']= "Тема";
$lang['Captcha_code']= "Код проверки";
$lang['send']= "Отправить";
$lang['Your_message_is_sent']= "Ваше сообщение отправлено";
$lang['Мessage _send_error'] = "Произошла ошибка при отправке сообщения";


После:


// plugins


В файл templates/messages.tpl добавим, что будет выводиться при отправке сообщения или ошибке:


<!-- BEGIN FEEDBACK_OK -->

<div class="message" id="ok">
  <h3>
    $lang[Your_message_is_sent]
  </h3>
</div>
<!-- END FEEDBACK_OK -->
<!-- BEGIN FEEDBACK_NO -->
<div class="message" id="error">
  <h3>
    $lang['Мessage _send_error']<br />
    <a href="javascript:history.back();">&laquo; $lang['back']</a>
  </h3>
</div>
<!-- END FEEDBACK_NO -->


Капчу для этого дополнения мы будем использовать с проекта www.captcha.ru, ну не люблю я велосипеды изобретать.
Поместим папку с нашей капчей в папку plugins скрипта, теперь нам её надо подключить (с настройками самой капчи вы я думаю, разберётесь – там очень всё подробно).

Подключить капчу нам надо до старта сессии, для этого в файле index.php поместим следующую строку :


require_once DIR_PLUGINS.'kcaptcha/kcaptcha.php';


перед:


session_start( );


А теперь переместим обе строки под строку:

 
require DB_CONFIG_LANG;


Иначе ничего не получиться, так как сессия стартует до подключения конфигурации.

Всё капчу мы подключили, теперь пойдём дальше.

Переменную, отвечающую за соответствие странице выводимого нами кода, мы будем хранить в файле config/lang_ru.php, а для другого языка в соответствующем файле. Откроем файл и вставим нашу переменную:


$config['feedback_page'] = 2;

$config['feedback_email'] = "1@1.ru";


Перед:


$aMenuTypes[1]


Выбор нашей страницы обратной связи из административной части скрипта, будет находиться в установках на вкладке страницы, за отображение установок и вкладок отвечает файл templates/admin/settings.tpl, откроем его и вставим:

<tr>
   <td>$lang[Feedback_page]</td>
   <td>
    <select name="feedback_page">
     <option value="">$lang['none']</option>
     $sFeedbackPageSelect
    </select>
   </td>
</tr>


Перед:

<!-- tab pages -->

А после:

 
<!-- pass end -->

Вставим

 <!-- feedback start -->
  <tr class="l1">
   <th>
    $lang[Shop_email]
   </th>
    <td>
    <input type="text" name="feedback_email" value="$config[feedback_email]" class="input" size="40" alt="feedbackemail" />
   </td>
</tr>
<!-- feedback end -->


Откроем файл actions_admin/settings.php и вставим:


$sFeedbackPageSelect = $oPage->throwPagesSelectAdmin( $config['feedback_page'] );


После:


$sWysiwygSelect     = throwTrueFalseSelect( $config['wysiwyg'] );


Теперь нам осталось сделать функцию отображения нашей формы обратной связи в клиентской части.
Открываем файл actions_client/p.php и вставляем:


if( isset( $config['feedback_page'] ) && is_numeric( $config['feedback_page'] ) && $iContent == $config['feedback_page'] ){

      $sFeedback = isset( $_POST['sSend'] ) ? mailFeedbac ( $_POST ): $oTpl->tbHtml( $aData['sTemplate'], 'FEEDBACK' );
    }
    else{
      $sFeedback = null;
    }


После:


$aData['sDescriptionFull'] = $aData['sDescriptionShort'];


Открываем файл templates/pages_default.tpl и вставляем переменную, в которую будет передаваться  форма обратной связи.

$sFeedback

После:

<h3>$aData[sName]</h3>

А так же вставить после:

<!-- END BANNER -->

Саму форму обратной связи


<!-- BEGIN FEEDBACK -->
<script type="text/javascript" src="$config[dir_core]checkForm.js"></script>
<form action="$aData[sLinkName]" method="post" onsubmit="return checkForm( this );" id="Feedback">
  <fieldset>
    <input type="hidden" name="sSend" value="" />
      <label for="contactName">$lang[Name]:</label><br>
      <input type="text" name="sName" class="input" alt="simple" /><br><br />
      <label for="contactEmail">$lang[Email]:</label><br>
      <input type="text" name="sMailer" class="input" alt="email" /><br> <br />
      <label for="contactTopic">$lang[Subject]:</label><br>
      <input type="text" name="sSubject" class="input" alt="simple" /><br><br />
      <label for="contactContent">$lang[Contents_letter]:</label><br>
      <textarea cols="25" rows="8" name="sContentsLetter" title="simple" /></textarea><br><br />
      <img src="plugins/kcaptcha? $session_name=$session_id"/> <br /><br />
      <label for="contactContent">$lang[Captcha_code]:</label><br />
      <input type="text" name="keystring"  class="input" alt="simple" id="keystring" /> <br /><br /><br />
    <input type="submit" value="$lang[send]" class="submit" id="submitt" />
  </fieldset>
</form>
<!-- END FEEDBACK -->

В скрипте  в файл core/common.php уже присутствует функция обратной связи и правильность написания Email. Но мы её использовать не будем и вставим свою, правда проверку проверки Email оставим - хотя кто хочет может переписать взяв из этой статьи про скрипт сайта.


/**
*
* Функция отправки мыла
*/function mailFeedbac ( $aForm, $sFile = 'messages.tpl', $sFeedbackmail = null ){
  extract( $aForm );
  $oTpl =& TplParser::getInstance( );
  if( !empty( $sSubject ) && !empty( $sContentsLetter )  && checkEmail( $sMailer ) === 1 ){
    if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']){
    if( !isset( $sFeedbackmail ) )
    $sFeedbackmail = $GLOBALS['config']['feedback_email'];
    $sName  = "=?".$GLOBALS['config']['charset']."?B?".base64_encode( $sName )."?=";
    $headers  = "MIME-Version: 1.0rn";
    $headers .= "Content-Type: text/plain; charset=".$GLOBALS['config']['charset']."rn";
    $headers .= "Date: ".date('r', time())."rn";
    $headers .= "From: "".$sName."" <".$sMailer.">rn";
    $headers .= "X-Mailer: Quick.Cms.Lite Send E-mailrn";

     mail($sFeedbackmail,$sSubject,$sContentsLetter,$headers);
              unset($_SESSION['captcha_keystring']);
              return $oTpl->tbHtml( $sFile, 'FEEDBACK_OK' );
     }
    else{
              return $oTpl->tbHtml( $sFile, 'FEEDBACK_NO' );
        }
    }
}// Конец функции обратной связи


Вставляем после:


// end function displayDate


Теперь можем заняться оформлением нашей формы обратной связи, для этого в файл стилей templates/ plugins.css после:

/*
Quick.Cms default plugins stylesheet
/*/

Вставим:


#Feedback{float: left;width:195px;margin: 10px 15px 10px 5px;}
#Feedback .input,#Feedback textarea{width:180px;font-size:1em;
    padding: 9px;
    border: solid 1px #E5E5E5;
    outline: 0;
    background: #FFFFFF url('bg_form.png') left top repeat-x;
    background: -webkit-gradient(linear, left top, left 25, from(#FFFFFF), color-stop(4%, #EEEEEE), to(#FFFFFF));
    background: -moz-linear-gradient(top, #FFFFFF, #EEEEEE 1px, #FFFFFF 25px);
    box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
    -moz-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
    -webkit-box-shadow: rgba(0,0,0, 0.1) 0px 0px 8px;
    }
#Feedback .input:focus, #contactPanel textarea:focus {
    border-color: #C9C9C9;
    -webkit-box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 8px; }
#Feedback .submit  {
    width: auto;
    padding: 9px 15px;
    background: #586c89;
    border: 0;
    font-size: 14px;
    color: #FFFFFF;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    }


Менее пяти минут работы и вы сможете отвечать на вопросы ваших потенциальных покупателей или партнёров.

 

  • icomailshop.txt, Страница с кодом в текстовом формате

Комментарии