Jump to content
Sign in to follow this  
miwany

Контактная форма в футер

Recommended Posts

Заморочился с размещением контактной формы и всей контактной информации в футере ( index.php?route=information/contact ).

Как всегда вылазят всякие заморочки. С информацией все понятно, а вот с формой бяда...

Пробовал копировать всякие строчки из contact.php в footer.php.

Сама форма вроде работает, но не дают покоя пару строк:

$this->response->redirect($this->url->link('information/contact/success'));

$data['action'] = $this->url->link('information/contact', '', true);

 

первая, я так понимаю, перекидывает на страницу с сообщением об отправке;

второе - куда ??!!

 

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

 

Комрады, укажите путь ??

Share this post


Link to post
Share on other sites
5 минут назад, miwany сказал:

второе - куда ??!!

action  для формы

Share this post


Link to post
Share on other sites

Понятно.

При размещении кода в футере:

 <div class="col-12"> <?php echo $contact; ?> </div>

на странице только это:

index.php?route=information/contact

 

Как вывести всю страницу contact в футере ?

Share this post


Link to post
Share on other sites
38 минут назад, miwany сказал:

Как вывести всю страницу contact в футере ?

никак.  потому что страница контактов,  это полноценная страница,  с хедером, футером и т.д. 

Share this post


Link to post
Share on other sites
56 минут назад, miwany сказал:

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

в footer.tpl  вставляете  html  формы

пишите на javascript   аякс отправку формы

в контроллере footer.php  пишите метод обработчик формы

отправляете данные из формы на этот метод

обрабатываете данные, шлете ответ на клиент

на клиенте выводите результат

как-то так, в общих чертах

Share this post


Link to post
Share on other sites

ищем модуль custom footer  для опенкарт и закрывает 99% вопросов, 1% оставляет на очумелые ручки для охкакиххотелок

Share this post


Link to post
Share on other sites

Добавить например в самый конец файла  файл content_bottom.tpl, что то типа
 

<div class="row">
    <div class="col-md-6">
        <div class="bottom-image"></div>
	</div>
    <div class="col-md-6">
        <div class="bottom-form">
            <h2>Написать нам</h2>
            <div class="form-group required">
                <form method="post" enctype="multipart/form-data" action="/contact-us/" id="contact-form">
                    <input type="hidden" name="enquiry" value="Форма отправлена с <?php echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; ?>">
                    <div>
                        <input type="text" name="name" value="" placeholder="Телефон" data-mask="+7 (999) 999-99-99" required>
					</div>
                    <div>
                        <input type="email" name="email" value="" placeholder="Email" required>
					</div>              
                    <div class="buttons">
						<span id="agreement_checkbox-bottom"><label><input type="checkbox" name="agreement-bottom" value="1" checked="checked">Я прочитал и согласен с правилами <a class="agree" href="http://ваш_сайт/index.php?route=information/information/agree&amp;information_id=...." alt="Пользовательское соглашение"><b>Пользовательское соглашение</b></a></label>&nbsp;</span>
                        <input class="btn btn-primary" type="submit" value="Отправить" />
					</div>
				</form>
			</div>
		</div>
	</div>
</div>
<script type="text/javascript">
    $('#contact-form').submit(function(event){
        if(! $('input[name=email]', this).val().match( /^[^\@][email protected]*.[a-z]{2,15}$/i )){
            event.preventDefault();
		}
	})
</script>

А дальше стилями, слева какую нибудь фон картинку например, справа сама форма.

http://joxi.ru/vAWeMELt1NeK5m

Share this post


Link to post
Share on other sites

или так,  ajax.  

это в footer.tpl

<div class="col-sm-12">
	<form id="contact-form" action="" method="post" enctype="multipart/form-data" class="form-horizontal">
		<fieldset>
			<legend>Напишите нам</legend>
			<div id="result"></div>
			<div class="form-group required">
				<label class="col-sm-2 control-label" for="input-name">Ваше имя</label>
				<div class="col-sm-10">
					<input type="text" name="contact_name" value="" id="contact-name" class="form-control" />
				</div>
			</div>
			<div class="form-group required">
				<label class="col-sm-2 control-label" for="input-email">Ваш Email</label>
				<div class="col-sm-10">
					<input type="text" name="contact_email" value="" id="contact-email" class="form-control" />
				</div>
			</div>
			<div class="form-group required">
				<label class="col-sm-2 control-label" for="input-message">Сообщение</label>
				<div class="col-sm-10">
					<textarea name="contact_massage" rows="10" id="contact-message" class="form-control"></textarea>
				</div>
			</div>
		</fieldset>
		<div class="buttons">
			<div class="pull-right">
				<input id="contact-button" class="btn btn-primary" type="button" value="Отправить" />
			</div>
		</div>
	</form>
</div>
<script>
$(function(){
	$('#contact-button').click(function(){
		var dataContact = $('#contact-form').serialize();
		
		$.ajax({
			url:'index.php?route=information/contact/ajaxSend',
			data: dataContact,
			type:'post',
			dataType:'json',
			success: function(response){
				if(response['success']){
					$('#result').html(response['success']);
				}
			}
		})
	})
})
</script>

это в  catalog/controller/information/contact.php

public function ajaxSend() {
	if ($this->request->server['REQUEST_METHOD'] == 'POST') {
		$mail = new Mail();
		$mail->protocol = $this->config->get('config_mail_protocol');
		$mail->parameter = $this->config->get('config_mail_parameter');
		$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
		$mail->smtp_username = $this->config->get('config_mail_smtp_username');
		$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
		$mail->smtp_port = $this->config->get('config_mail_smtp_port');
		$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

		$mail->setTo($this->config->get('config_email'));
		$mail->setFrom($this->config->get('config_email'));
		$mail->setReplyTo($this->request->post['contact_email']);
		$mail->setSender(html_entity_decode($this->request->post['contact_name'], ENT_QUOTES, 'UTF-8'));
		$mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['contact_name']), ENT_QUOTES, 'UTF-8'));
		$mail->setText($this->request->post['contact_massage']);
		$mail->send();
				
		$json['success'] = 'Cообщение успешно отправлено.';
	

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
			
	}
}

это по простому, без проверок полей, без переменных локализации

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.