Worobei55 0 Опубликовано 3 марта, 2017 Жалоба Share Опубликовано 3 марта, 2017 Хотел поделиться некоторой информацией и задать вопрос. У меня возникла необходимость дублировать страницу с обратной связью. Как я это сделал: 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х заполненных полях. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 4 марта, 2017 Жалоба Share Опубликовано 4 марта, 2017 Вот этот кусок отвечает за проверку 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; Но лучше конечно переписать условие. Ссылка на сообщение Поделиться на другие сайты
Worobei55 0 Опубликовано 4 марта, 2017 Автор Жалоба Share Опубликовано 4 марта, 2017 Если я полностью убираю этот кусок ошибки не выдает, но и подсказки о том что сообщение успешно отправлено тоже к сожалению не выдает. Есть еще один вариант, только без Вас опять таки не справлюсь.. В файле 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 ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 4 марта, 2017 Жалоба Share Опубликовано 4 марта, 2017 Попробуйте код, что выше, поменять на: 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; //} Ссылка на сообщение Поделиться на другие сайты
Worobei55 0 Опубликовано 5 марта, 2017 Автор Жалоба Share Опубликовано 5 марта, 2017 Да! Получилось!) После миллиарда вариантов!))) А самое забавное что на локалке всё хорошо работало, но как только заливал на хостинг - те же проблемы...(не появлялось уведомление о успешной отправке). В общем надо изменить одну строчку из кода, что Вы прислали 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 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 5 марта, 2017 Жалоба Share Опубликовано 5 марта, 2017 Хорошо, что разобрались. Спасибо, что поделились кодом. Ссылка на сообщение Поделиться на другие сайты
Worobei55 0 Опубликовано 6 марта, 2017 Автор Жалоба Share Опубликовано 6 марта, 2017 пока тестировал обнаружил ошибку. Если прописать эти строки - всё хорошо работает на 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, думаю сделает его короче. Но тем не менее теперь сообщения отправляются с обеих страниц и стили никуда не пропадают. Ссылка на сообщение Поделиться на другие сайты
Worobei55 0 Опубликовано 6 марта, 2017 Автор Жалоба Share Опубликовано 6 марта, 2017 Появилось 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']); но незнаю как правильно и лучше прописать. Подскажите пожалуйста... Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 6 марта, 2017 Жалоба Share Опубликовано 6 марта, 2017 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']); Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения