Перейти к содержанию
Форум поддержки пользователей VamShop

Дубликат страницы обратной связи


Рекомендуемые сообщения

Хотел поделиться некоторой информацией и задать вопрос. У меня возникла необходимость дублировать страницу с обратной связью. Как я это сделал:

1. В админе - разное - информационные страницы, создаем новую страницу и называем "Заказать обратный звонок"  .

Этой странице автоматически присваевается свой уникальный coID, но об этом позже.

2. Создал дубликат файла Contact_us.html и присвоил имя Contact_us2.html , для редактирования содержимого страницы. ВНИМАНИЕ! Клон создается в той же директории что и сontact_us.html

3. САМОЕ ВАЖНОЕ! В исходном коде contact_us.html т.е в shop_content.php ищем следующий код:

if ($_GET['coID'] == 7) {
   $error = false;
      $spam_flag = false;
      if ( trim( $_POST['anti-bot-q'] ) != date('Y') ) { // answer is wrong - maybe spam
         $spam_flag = true;
         if ( empty( $_POST['anti-bot-q'] ) ) { // empty answer - maybe spam
            $antispam_error_message .= 'Error: empty answer. ['.$_POST['anti-bot-q'].']<br> ';
         } else {
            $antispam_error_message .= 'Error: answer is wrong. ['.$_POST['anti-bot-q'].']<br> ';
         }
      }
      if ( ! empty( $_POST['anti-bot-e-email-url'] ) ) { // field is not empty - maybe spam
         $spam_flag = true;
         $antispam_error_message .= 'Error: field should be empty. ['.$_POST['anti-bot-e-email-url'].']<br> ';
      }
   if (isset ($_GET['action']) && ($_GET['action'] == 'send') && $spam_flag == false) {
      if (vam_validate_email(trim($_POST['email']))) {
         vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, nl2br($_POST['message_body']), $_POST['message_body']);
         if (!isset ($mail_error)) {
            vam_redirect(vam_href_link(FILENAME_CONTENT, 'action=success&coID='.(int) $_GET['coID']));
         } else {
            $vamTemplate->assign('error_message', $mail_error);
         }
      } else {
         // error report hier einbauen
         $vamTemplate->assign('error_message', ERROR_MAIL);
         $error = true;
      }
   }
   $vamTemplate->assign('CONTACT_HEADING', $shop_content_data['content_title']);
   if (isset ($_GET['action']) && ($_GET['action'] == 'success')) {
      $vamTemplate->assign('success', '1');
      $vamTemplate->assign('BUTTON_CONTINUE', '<a class="button" href="'.vam_href_link(FILENAME_DEFAULT).'">'.vam_image_button('submit.png', IMAGE_BUTTON_CONTINUE).'</a>');
   } else {
      if ($shop_content_data['content_file'] != '') {
         ob_start();
         $file_name = basename ($shop_content_data['content_file']);
          $isTextFile = strpos($file_name, '.txt');
         if ($isTextFile)
            echo '';
         include (DIR_FS_CATALOG.'media/content/'.$shop_content_data['content_file']);
         if ($isTextFile)
            echo '';
      $contact_content = ob_get_contents();
      ob_end_clean();
      } else {
         $contact_content = $shop_content_data['content_text'];
      }
      require (DIR_WS_INCLUDES.'header.php');
      $vamTemplate->assign('CONTACT_CONTENT', $contact_content);
      $vamTemplate->assign('FORM_ACTION', vam_draw_form('contact_us', vam_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID'])));
      $vamTemplate->assign('INPUT_NAME', vam_draw_input_field('name', ($error ? $_POST['name'] : $first_name)));
      $vamTemplate->assign('INPUT_EMAIL', vam_draw_input_field('email', ($error ? $_POST['email'] : $email_address)));
      $vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, $_POST[''],''));
      $vamTemplate->assign('BUTTON_SUBMIT', vam_image_submit('submit.png',  IMAGE_BUTTON_CONTINUE));
      $vamTemplate->assign('FORM_END', '</form>');
   }
   $vamTemplate->assign('language', $_SESSION['language']);
   $vamTemplate->caching = 0;
   $main_content = $vamTemplate->fetch(CURRENT_TEMPLATE.'/module/contact_us.html');

} ........else и тд.

Так вот! чтобы создать клон страницы обратная связь надо внести в этот код некоторые изменения. А именно: копируем вышеизложеный код (!полностью в плоть до последней "}"!)

и вставляем в последней строке (после скобки, перед else, тоесть вместо многоточия)     "  } ........else и тд.  "

и вносим несколько строк изменений в скопированный код. А именно в первую и последнюю строку. Мой скопированный код выглядит так:

else if ($_GET['coID'] == 14) {

    $error = false;

    $spam_flag = false;

    if ( trim( $_POST['anti-bot-q'] ) != date('Y') ) { // answer is wrong - maybe spam
        $spam_flag = true;
        if ( empty( $_POST['anti-bot-q'] ) ) { // empty answer - maybe spam
            $antispam_error_message .= 'Error: empty answer. ['.$_POST['anti-bot-q'].']<br> ';
        } else {
            $antispam_error_message .= 'Error: answer is wrong. ['.$_POST['anti-bot-q'].']<br> ';
        }
    }
    if ( ! empty( $_POST['anti-bot-e-email-url'] ) ) { // field is not empty - maybe spam
        $spam_flag = true;
        $antispam_error_message .= 'Error: field should be empty. ['.$_POST['anti-bot-e-email-url'].']<br> ';
    }

    if (isset ($_GET['action']) && ($_GET['action'] == 'send') && $spam_flag == false) {
        if (vam_validate_email(trim($_POST['email']))) {

            vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, nl2br($_POST['message_body']), $_POST['message_body']);

            if (!isset ($mail_error)) {
                vam_redirect(vam_href_link(FILENAME_CONTENT, 'action=success&coID='.(int) $_GET['coID']));
            } else {
                $vamTemplate->assign('error_message', $mail_error);

            }
        } else {
            // error report hier einbauen
            $vamTemplate->assign('error_message', ERROR_MAIL);
            $error = true;
        }

    }

    $vamTemplate->assign('CONTACT_HEADING', $shop_content_data['content_title']);
    if (isset ($_GET['action']) && ($_GET['action'] == 'success')) {
        $vamTemplate->assign('success', '1');
        $vamTemplate->assign('BUTTON_CONTINUE', '<a class="button" href="'.vam_href_link(FILENAME_DEFAULT).'">'.vam_image_button('submit.png', IMAGE_BUTTON_CONTINUE).'</a>');

    } else {
        if ($shop_content_data['content_file'] != '') {
            ob_start();
            $file_name = basename ($shop_content_data['content_file']);
            $isTextFile = strpos($file_name, '.txt');
            if ($isTextFile)
                echo '';
            include (DIR_FS_CATALOG.'media/content/'.$shop_content_data['content_file']);
            if ($isTextFile)
                echo '';
            $contact_content = ob_get_contents();
            ob_end_clean();
        } else {
            $contact_content = $shop_content_data['content_text'];
        }
        require (DIR_WS_INCLUDES.'header.php');
        $vamTemplate->assign('CONTACT_CONTENT', $contact_content);
        $vamTemplate->assign('FORM_ACTION', vam_draw_form('contact_us', vam_href_link(FILENAME_CONTENT, 'action=send&coID='.(int) $_GET['coID'])));
        $vamTemplate->assign('INPUT_NAME', vam_draw_input_field('name', ($error ? $_POST['name'] : $first_name)));
        $vamTemplate->assign('INPUT_EMAIL' , vam_draw_input_field ('email', ($error ? $_POST['email'] : $email_address)));
        $vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, $_POST[''],''));
        $vamTemplate->assign('BUTTON_SUBMIT', vam_image_submit('submit.png',  IMAGE_BUTTON_CONTINUE));
        $vamTemplate->assign('FORM_END', '</form>');
    }

    $vamTemplate->assign('language', $_SESSION['language']);

    $vamTemplate->caching = 0;
    $main_content = $vamTemplate->fetch(CURRENT_TEMPLATE.'/module/contact_us2.html');

}

Вся суть в добавлении условия else if Меняем "7ку" исходного кода на coID созданной страницы в админке. У меня это coID=14. Далее листаем код до самого конца и находим строчку

$main_content = $vamTemplate->fetch(CURRENT_TEMPLATE.'/module/contact_us.html');

в ней меняем contact_us.html на contact_us2.html . 

Поздравляю, вы создали клон! Теперь просто назначьте ссылку на эту страницу и всё будет работать.

 

Теперь вопрос!

На клоне странице у меня естественно те же поля input т.е Введите имя, Введите Email, Ваше сообщение.

Мне надо избавиться от проверки Email так как если я удаляю строку:

<p>{#text_email#} {$INPUT_EMAIL} </p>

из contact_us2.html проверка на заполненное поле Email всё равно присутствует и сообщение конечно не отправляется, выдает ошибку - "проверьте введенные данные"

В общем подскажите пожалуйста как избавиться от проверки заполненного поля Email, чтобы сообщения успешно отправлялись при 2х заполненных полях.

 

 

Ссылка на сообщение
Поделиться на другие сайты

Вот этот кусок отвечает за проверку email:

		if (vam_validate_email(trim($_POST['email']))) {

			vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, nl2br($_POST['message_body']), $_POST['message_body']);

			if (!isset ($mail_error)) {
				vam_redirect(vam_href_link(FILENAME_CONTENT, 'action=success&coID='.(int) $_GET['coID']));
			} else {
				$vamTemplate->assign('error_message', $mail_error);

			}
		} else {
			// error report hier einbauen
			$vamTemplate->assign('error_message', ERROR_MAIL);
			$error = true;
		}

Нужно либо переписать этот кусок, либо убрать его вообще, если отправка почты не нужно.

Либо попробовать самое простое, просто поменять $error = true; на $error = false;

Но лучше конечно переписать условие.

Ссылка на сообщение
Поделиться на другие сайты

Если я полностью убираю этот кусок ошибки не выдает, но и подсказки о том что сообщение успешно отправлено тоже к сожалению не выдает. 

Есть еще один вариант, только без Вас опять таки не справлюсь..

В файле contact_us.html, а в моем случае в contact_us2.html есть следующая строка:

<p>{#text_email#} {$INPUT_EMAIL} </p>

$INPUT_EMAIL - эта метка и есть моё поле input. само содержимое метки находится файле shop_content.php и выглядит так (насколько я понял): 

$vamTemplate->assign('INPUT_EMAIL' , vam_draw_input_field ('email', ($error ? $_POST['email'] : $email_address)));

Идея заключается в чем:

1. Я хочу добавить полю инпут - value=""  и внести туда собственно какую-нибудь свою почту. Проверка правильности заполнения в свою очередь будет думать что всё хорошо заполнено.

2. В файле contact_us2.html тегу <p> задам класс (Например <p class="invisibl">) и в css для этого класса задам opacity: 0; Тоесть сделаю этот блок невидимым.

Получится, что все поля будут заполнены, тем самым я как бы обману майл проверку - почта то уже будет вписана) пользователь будет видеть только 2 поля - Имя и Телефон. И при нажатии кнопки "submit", мне на почту будет приходить сообщение с заказом обратного звонка, с почты которую я впишу в value. 

Теорию расписал, проблема только в том, что я не могу понять как именно в содержимое метки добавить VALUE ?

Ссылка на сообщение
Поделиться на другие сайты

Попробуйте код, что выше, поменять на:

		if (trim($_POST['email']) != '') {

			vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, nl2br($_POST['message_body']), $_POST['message_body']);

			if (!isset ($mail_error)) {
				vam_redirect(vam_href_link(FILENAME_CONTENT, 'action=success&coID='.(int) $_GET['coID']));
			} else {
				$vamTemplate->assign('error_message', $mail_error);

			}
		//} else {
          }
			// error report hier einbauen
			//$vamTemplate->assign('error_message', ERROR_MAIL);
			//$error = true;
		//}

 

Ссылка на сообщение
Поделиться на другие сайты

Да! Получилось!) После миллиарда вариантов!))) А самое забавное что на локалке всё хорошо работало, но как только заливал на хостинг - те же проблемы...(не появлялось уведомление о успешной отправке).

В общем надо изменить одну строчку из кода, что Вы прислали

if (trim($_POST['email']) != '') {

на

if (trim($_POST['email']) == '') {

но и этого было мало. Надо в файле shop_content.php найти следующие строчки

//$breadcrumb->add($shop_content_data['content_title']);
if ($_GET['coID'] != 7) {
    require (DIR_WS_INCLUDES.'header.php');
}

if ($_GET['coID'] == 7 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

и изменить их на 

//$breadcrumb->add($shop_content_data['content_title']);
if ($_GET['coID'] != 7 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

if ($_GET['coID'] == 7 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

Теперь и на хостинге всё отлично работает - отправляются сообщения в почту и появляется сообщение об успешной отправке ) Спасибо за помощь!) 

Если кто-то что-нибудь не поймет прикрепляю свой файл shop_content.php

shop_content.php

Ссылка на сообщение
Поделиться на другие сайты

пока тестировал обнаружил ошибку. Если прописать эти строки - всё хорошо работает на coID=7 и coID=14, но при переходе на coID других страниц, пропадают стили CSS.  В общем окончательный вариант таков. Меняем вот эти строки

//$breadcrumb->add($shop_content_data['content_title']);
if ($_GET['coID'] != 7 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

if ($_GET['coID'] == 7 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

на

if ($_GET['coID'] != 7 && $_GET['action'] == 'success') {
      require (DIR_WS_INCLUDES.'header.php');
} elseif ($_GET['coID'] != 14 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
} elseif ($_GET['coID'] == 1) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 2) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 3) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 4) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 5) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 6) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 8) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 9) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 10) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 11) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 12) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 13) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 15) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 16) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 17) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 18) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 19) {
    require (DIR_WS_INCLUDES.'header.php');
}elseif ($_GET['coID'] == 20) {
    require (DIR_WS_INCLUDES.'header.php');
}

if ($_GET['coID'] == 7 && $_GET['action'] == 'success') {
      require (DIR_WS_INCLUDES.'header.php');
} elseif ($_GET['coID'] == 14 && $_GET['action'] == 'success') {
    require (DIR_WS_INCLUDES.'header.php');
}

прошу прощения за нагромождение кода. Просто в php не очень силен поэтому так и написал. Тот кто знаком с php, думаю сделает его короче.

Но тем не менее теперь сообщения отправляются с обеих страниц и стили никуда не пропадают.

Ссылка на сообщение
Поделиться на другие сайты

Появилось 2 новых вопроса. Пишу сюда так как по этой же теме отправки писем.

1. Я в этой теме описывал свою идею по обходу проверки мэйла - где я хотел добавить полю инпут - value . Скажите пожалуйста, это можно осуществить как-нибудь, 

да даже не просто value , а например еще  placeholder , или  required

2. Ни как не соображу, как сделать так, чтобы когда пользователь вводит своё имя и телефон, сообщение на почту приходило не только с содержанием message_body ,но и имя чтобы там тоже писалось

$vamTemplate->assign('INPUT_NAME', vam_draw_input_field('name', ($error ? $_POST['name'] : $first_name))); // Имя
$vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, $_POST[''],'')); // Телефон

на сколько я понял проблема не в этих строках, которые выше, а в этой:

vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, 
CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, 
nl2br($_POST['message_body']), $_POST['message_body']);

но незнаю как правильно и лучше прописать. Подскажите пожалуйста...

Ссылка на сообщение
Поделиться на другие сайты

1. Второй параметр функции vam_draw_input_field - value, третий - любые значения.

Это видно в /inc/vam_draq_inpur_filed.inc.php

т.е. что-то типа нужно писать:

$vamTemplate->assign('INPUT_NAME', vam_draw_input_field('name', ($error ? $_POST['name'] : $first_name), "placeholder="test" required")); // Имя

2. Если уж совсем грубо, то как-то так:

vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, 
CONTACT_US_FORWARDING_STRING, $_POST['email'], $_POST['name'], '', '', CONTACT_US_EMAIL_SUBJECT, 
nl2br($_POST['message_body'].$_POST['name']), $_POST['message_body'].$_POST['name']);

 

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...