Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Передача UTM меток в форме обратной связи


djnick

Recommended Posts

Пытаюсь передать utm метки в форме обратной связи. 

Создал в форме скрытые поля:

 <input type="hidden" name="source" class="source" value="<?php echo isset($this->request->get['utm_source']) ? $this->request->get['utm_source'] : 'нэт билэт' ;?>" />

Прописал в контроллере формы нужные строчки.

На почту приходит : нэт билет...

 

Так вот, может кто подскажет, как "выдернуть" utm метки из url ? 

 

Читал, что заносят в куки, потом из кук пилят и распихивают....

 

Рылся в коде seo_pro. Нашел там строки, где сеопро берет урл, тримит, пилит и пихает в массив для подмены, пробовал по аналогии, не пашет...

Может есть у кого рабочий кусочек кода, который позволяет "распилить" урл или вытащить метки из него?

 

Надіслати
Поділитися на інших сайтах


Потому что её в урле то нет

Надіслати
Поділитися на інших сайтах

мож я чего-то не понимаю, но вот урл:

/index.php?route=product/product&path=162&product_id=751?utm_source=istochneg&utm_term=keyword

 и вне опенкарта решение работает:

<input type="hidden" name="source" class="source" value="<?php echo isset($_GET['utm_source']) ? $_GET['utm_source'] : '' ;?>" />

потом передается переманная в обработчик и mail и все приходит

Змінено користувачем djnick
Надіслати
Поділитися на інших сайтах


Это в контроллер к товару или где она там у Вас

$data['utm_source'] = isset($this->request->get('utm_source')) ? $this->request->get('utm_source') : ' ... ';

а в форме <?= $utm_source; ?>

Надіслати
Поділитися на інших сайтах

Это в контроллер к товару или где она там у Вас

$data['utm_source'] = isset($this->request->get('utm_source')) ? $this->request->get('utm_source') : ' ... ';

а в форме <?= $utm_source; ?>

 

get не функция, круглые скобки заменить на квадратные. isset не нужен

  • +1 1
Надіслати
Поділитися на інших сайтах

get не функция, круглые скобки заменить на квадратные. isset не нужен

постоянно путаю  :? эти скобки 

Надіслати
Поділитися на інших сайтах

 

Опять же возвращает пустое значение...

if(!empty($this->request->get['utm_source'])) { 
        $data['utm_source'] = $this->request->get['utm_source']; 
		} else { $data['utm_source'] = '...'; 
							};

При таком условии значение не может быть пустым по определению

Надіслати
Поділитися на інших сайтах

урл смотрите 

 

route=product/product&path=162&product_id=751?utm_source=istochneg&utm_term=keyword

 

должен быть амперсант 

Надіслати
Поділитися на інших сайтах

Опять же возвращает пустое значение...

if(!empty($this->request->get['utm_source'])) { 
        $data['utm_source'] = $this->request->get['utm_source']; 
		} else { $data['utm_source'] = '...'; 
							};
У вас seo_pro?

В нем есть фикс, чтобы метки не отбрасывались?

Добавите к любой ссылке utm-метку и перейдите по ней. В адресной строке они остались?

Надіслати
Поділитися на інших сайтах


урл смотрите 

 

route=product/product&path=162&product_id=751?utm_source=istochneg&utm_term=keyword

 

должен быть амперсант 

Так амперсанд - это не то, что вы выделили))))

Надіслати
Поділитися на інших сайтах

Так амперсанд - это не то, что вы выделили))))

Ну так я выделил знак вопроса 

 

строка должна быть 

http://site.com/index.php?route=product/product&product_id=43 & utm_source=istochneg&utm_term=keyword

А щяс 

http://site.com/index.php?route=product/product&product_id=43 ? utm_source=istochneg&utm_term=keyword

Ну и что бы не гадать сделайте в контролере 

print_r($this->request->get);
Надіслати
Поділитися на інших сайтах

Контроллер формы ( popup_call_phone.php - модуль всплывающей формы )

public function index() {
		$data = array();

		$this->load->model('catalog/product');
		
		$this->load->language('module/popup_call_phone');

    $popup_call_phone_data = (array)$this->config->get('popup_call_phone_data');
    $data['popup_call_phone_data'] = $popup_call_phone_data;

		$data['heading_title'] = $this->language->get('heading_title');
		$data['button_close'] = $this->language->get('button_close');
		$data['button_send'] = $this->language->get('button_send');
		$data['enter_name'] = $this->language->get('enter_name');
		$data['enter_telephone'] = $this->language->get('enter_telephone');
		$data['enter_comment'] = $this->language->get('enter_comment');
        $data['enter_time'] = $this->language->get('enter_time');
        $data['text_select'] = $this->language->get('text_select');
        $data['text_loading'] = $this->language->get('text_loading');

		$data['name'] = ($this->customer->isLogged()) ? $this->customer->getFirstName() : '';
		$data['telephone'] = ($this->customer->isLogged()) ? $this->customer->getTelephone() : '';
		$data['comment'] = '';
		//$data['term'] = '';
		//$data['source'] = '';
        $data['time'] = '';
		if(!empty($this->request->get['utm_source'])) { 
        $data['utm_source'] = $this->request->get['utm_source']; 
		} else { $data['utm_source'] = '...'; 
							}; 
		if(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/popup_call_phone.tpl')) {
			$view = $this->load->view($this->config->get('config_template') . '/template/module/popup_call_phone.tpl', $data);
		} else {
			$view = $this->load->view('default/template/module/popup_call_phone.tpl', $data);
		}

		$this->response->setOutput($view);
	}

шаблон формы:

<form method="post" enctype="multipart/form-data" id="call-phone-form">
      <div class="payment-info">
	  
	  <input type="hidden" name="source" class="source" value="<?php echo $utm_source;?>" />
  
        <?php if ($popup_call_phone_data['name']) { ?>
        <div>
          <label><?php echo $enter_name; ?><?php if ($popup_call_phone_data['name'] == 2) { ?><span class="required">*</span><?php } ?></label>
          <input name="name" value="<?php echo $name;?>" placeholder="<?php echo $enter_name; ?>" />
        </div>
        <?php } ?>
        <?php if ($popup_call_phone_data['telephone']) { ?>
        <div>
          <label><?php echo $enter_telephone; ?><?php if ($popup_call_phone_data['telephone'] == 2) { ?><span class="required">*</span><?php } ?></label>
          <input name="telephone" value="<?php echo $telephone;?>" placeholder="<?php echo $enter_telephone; ?>" />
        </div>
        <?php } ?>
        <?php if ($popup_call_phone_data['time']) { ?>
        <div>
          <label><?php echo $enter_time; ?><?php if ($popup_call_phone_data['time'] == 2) { ?><span class="required">*</span><?php } ?></label>
          <input name="time" value="<?php echo $time;?>" placeholder="<?php echo $enter_time; ?>" class="datetime" />
        </div>
        <?php } ?>
        <?php if ($popup_call_phone_data['comment']) { ?>
        <div>
          <label><?php echo $enter_comment; ?><?php if ($popup_call_phone_data['comment'] == 2) { ?><span class="required">*</span><?php } ?></label>
          <textarea name="comment" placeholder="<?php echo $enter_comment; ?>"><?php echo $comment;?></textarea>
        </div>
        <?php } ?>
      </div>
    </form>

Урл (именно такой он приходит  и в адресной строке остается): index.php?route=product/product&path=162&product_id=751?utm_source=zasd&utm_medium=jgyy&utm_campaign=kuyy&utm_term=bdish

 

Пробовал запихать в контроллер категории/ товара - безрезультатно...

 

вопрос менял на амперсанд... 

 

на почту приходит многоточие. буду копаться дальше

Змінено користувачем djnick
Надіслати
Поділитися на інших сайтах


 

Ну так я выделил знак вопроса 

 

строка должна быть 

http://site.com/index.php?route=product/product&product_id=43 & utm_source=istochneg&utm_term=keyword

А щяс 

http://site.com/index.php?route=product/product&product_id=43 ? utm_source=istochneg&utm_term=keyword

Ну и что бы не гадать сделайте в контролере 

print_r($this->request->get);

Точно. Там вообще метка в продакт_айди ушла.

Надіслати
Поділитися на інших сайтах

Точно. Там вообще метка в продакт_айди ушла.

И я об этом 

Надіслати
Поділитися на інших сайтах

Дело в том, что урл и приходит в таком вот виде:

index.php?route=product/product&path=162&product_id=751?utm_source=istocj&utm_medium=rtrttr&utm_term=trtr&utm_content=&utm_campaign=rtrtrt

пробовал ручками менять на 

index.php?route=product/product&path=162&product_id=751&utm_source=istocj&utm_medium=rtrttr&utm_term=trtr&utm_content=&utm_campaign=rtrtrt

 

Ну так я выделил знак вопроса 

 

строка должна быть 

http://site.com/index.php?route=product/product&product_id=43 & utm_source=istochneg&utm_term=keyword

А щяс 

http://site.com/index.php?route=product/product&product_id=43 ? utm_source=istochneg&utm_term=keyword

Ну и что бы не гадать сделайте в контролере 

print_r($this->request->get);

 

 

Можно подробнее, В любом месте контроллера? А как вывести? (извинюсь, за возможно, ламерский вопрос, но это должно вывести массив, а для этого в шаблоне нужно вывод сделать?

)

Надіслати
Поділитися на інших сайтах


Дело в том, что урл и приходит в таком вот виде:

index.php?route=product/product&path=162&product_id=751?utm_source=istocj&utm_medium=rtrttr&utm_term=trtr&utm_content=&utm_campaign=rtrtrt

пробовал ручками менять на 

index.php?route=product/product&path=162&product_id=751&utm_source=istocj&utm_medium=rtrttr&utm_term=trtr&utm_content=&utm_campaign=rtrtrt

Можно подробнее, В любом месте контроллера? А как вывести? (извинюсь, за возможно, ламерский вопрос, но это должно вывести массив, а для этого в шаблоне нужно вывод сделать?

)

 

в любом и получите весь массив $_GET

Надіслати
Поділитися на інших сайтах

в любом и получите весь массив $_GET

Array   (   [route] => product/product   [path] => 162   [product_id] => 751   [utm_source] => zasd   [utm_medium] => jgyy   [utm_campaign] => kuyy   [utm_term] => bdish   )

 

 

Возвращает нужный массив с метками... 

Надіслати
Поділитися на інших сайтах


Если в контроллере формы указывать, то получаем:

Undefined property: Action::$request in /home/u172474/1xetru/www/catalog/controller/module/popup_call_phone.php on line 1 
Notice: Trying to get property of non-object in <b>/home/u172474/1xetru/www/catalog/controller/module/popup_call_phone.phprray
(
    [route] => module/popup_call_phone
)
Хм... Это теперь на всех модулях (категория, главная, продукт и т.д.) отлавливать отдельно метки? 
Змінено користувачем djnick
Надіслати
Поділитися на інших сайтах


 

Если в контроллере формы указывать, то получаем:

Undefined property: Action::$request in /home/u172474/1xetru/www/catalog/controller/module/popup_call_phone.php on line 1 
Notice: Trying to get property of non-object in <b>/home/u172474/1xetru/www/catalog/controller/module/popup_call_phone.phprray
(
    [route] => module/popup_call_phone
)
Хм... Это теперь на всех модулях (категория, главная, продукт и т.д.) отлавливать отдельно метки? 

попробуйте в самом модуле 

  • +1 1
Надіслати
Поділитися на інших сайтах

Спасибо за оперативные ответы.

 

Не получается в модуле обратной связи, массив GET содержит только  путь до файла модуля...

 

Ситуация вот какая: установлен отдельный модуль - всплывающее модальное окно с формой обратной связи... 

 

Может чего подключить в нём еще надо...

 

Буду пытаться, Еще раз Спасибо.

 

полный код контроллера формы

<?php 
class ControllerModulePopupCallPhone extends Controller {


	public function index() {
		$data = array();

		$this->load->model('catalog/product');
		$this->load->language('module/popup_call_phone');
       
        $popup_call_phone_data = (array)$this->config->get('popup_call_phone_data');
        $data['popup_call_phone_data'] = $popup_call_phone_data;

		$data['heading_title'] = $this->language->get('heading_title');
		$data['button_close'] = $this->language->get('button_close');
		$data['button_send'] = $this->language->get('button_send');
		$data['enter_name'] = $this->language->get('enter_name');
		$data['enter_telephone'] = $this->language->get('enter_telephone');
		$data['enter_comment'] = $this->language->get('enter_comment');
        $data['enter_time'] = $this->language->get('enter_time');
        $data['text_select'] = $this->language->get('text_select');
        $data['text_loading'] = $this->language->get('text_loading');

		$data['name'] = ($this->customer->isLogged()) ? $this->customer->getFirstName() : '';
		$data['telephone'] = ($this->customer->isLogged()) ? $this->customer->getTelephone() : '';
		$data['comment'] = '';
		//$data['term'] = '';
		
        $data['time'] = '';

		if(file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/popup_call_phone.tpl')) {
			$view = $this->load->view($this->config->get('config_template') . '/template/module/popup_call_phone.tpl', $data);
		} else {
			$view = $this->load->view('default/template/module/popup_call_phone.tpl', $data);
		}

		$this->response->setOutput($view);
	}

  public function send() {
    $json = array();

    $this->language->load('module/popup_call_phone');

    $this->load->model('module/popup_call_phone');

    $popup_call_phone_data = (array)$this->config->get('popup_call_phone_data');

    if (isset($this->request->post['name'])) {
      if ((isset($popup_call_phone_data['name']) && $popup_call_phone_data['name'] == 2) && (utf8_strlen(trim($this->request->post['name'])) < 1) || (utf8_strlen(trim($this->request->post['name'])) > 32)) {
        $json['error']['field']['name'] = $this->language->get('error_name');
      }
    }
	
    if (isset($this->request->post['time'])) {
      if (isset($popup_call_phone_data['time']) && $popup_call_phone_data['time'] == 2) {
        if (empty($this->request->post['time'])) {
          $json['error']['field']['time'] = $this->language->get('error_time');
        }
      }
    }

    if (isset($this->request->post['telephone'])) {
      if ((isset($popup_call_phone_data['telephone']) && $popup_call_phone_data['telephone'] == 2) && (utf8_strlen($this->request->post['telephone']) < 3) || (utf8_strlen($this->request->post['telephone']) > 32)) {
        $json['error']['field']['telephone'] = $this->language->get('error_telephone');
      }
    }

    if (isset($this->request->post['comment'])) {
      if ((isset($popup_call_phone_data['comment']) && $popup_call_phone_data['comment'] == 2) && (utf8_strlen($this->request->post['comment']) < 3) || (utf8_strlen($this->request->post['comment']) > 500)) {
        $json['error']['field']['comment'] = $this->language->get('error_comment');
      }
    }

    if (!isset($json['error'])) {

      $post_data = $this->request->post;

      if (isset($post_data['name'])) {
        $data[] = array(
          'name'  => $this->language->get('enter_name'),
          'value' => $post_data['name']
        );
      }

      if (isset($post_data['telephone'])) {
        $data[] = array(
          'name'  => $this->language->get('enter_telephone'),
          'value' => $post_data['telephone']
        );
      }

      if (isset($post_data['comment'])) {
        $data[] = array(
          'name'  => $this->language->get('enter_comment'),
          'value' => $post_data['comment']
        );
      }

      if (isset($post_data['time'])) {
        $data[] = array(
          'name'  => $this->language->get('enter_time'),
          'value' => $post_data['time']
        );
      }

      $data_send = array(
        'info' => serialize($data),
      );

      $this->model_module_popup_call_phone->addRequest($data_send);

      $json['output'] = $this->language->get('text_success_send');

      if ($popup_call_phone_data['notify_status']) {

        $html_data['date_added'] = date('m/d/Y h:i:s a', time());
        $html_data['logo']         = $this->config->get('config_url').'image/'.$this->config->get('config_logo');      
        $html_data['store_name']   = $this->config->get('config_name');
        $html_data['store_url']    = $this->config->get('config_url');  
        
        $html_data['text_info']    = $this->language->get('text_info');  
        $html_data['text_date_added'] = $this->language->get('text_date_added');
        $html_data['data_info']    = $data;
        if (file_exists(DIR_TEMPLATE.$this->config->get('config_template').'/template/mail/popup_call_phone_mail.tpl')) {
          $html = $this->load->view($this->config->get('config_template').'/template/mail/popup_call_phone_mail.tpl', $html_data);
        } else {
          $html = $this->load->view('default/template/mail/popup_call_phone_mail.tpl', $html_data);
        }

        if (version_compare(VERSION, '2.0.2', '<')) {
          $mail = new Mail($this->config->get('config_mail'));
        } else {
          $mail = new Mail();
          $mail->protocol = $this->config->get('config_mail_protocol');
          $mail->parameter = $this->config->get('config_mail_parameter');
          $mail->smtp_hostname = (version_compare(VERSION, '2.0.3', '<')) ? $this->config->get('config_mail_smtp_host') : $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($popup_call_phone_data['notify_email']);
        $mail->setFrom($this->config->get('config_email'));
        $mail->setSender($this->config->get('config_name'));
        $mail->setSubject($this->language->get('heading_title')." -- ".$html_data['date_added']);
        $mail->setHtml($html);
        $mail->send();
      }
    }

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

Змінено користувачем djnick
Надіслати
Поділитися на інших сайтах


Еще помучаю свой мозг сутки, если не допрет, куплю модуль))

 

а подключается он скриптом:

<script type="text/javascript">
        $(function() {
          $('body').prepend('<a onclick="get_popup_call_phone();" id="uptocall-mini"><div class="uptocall-mini-phone"></div></a>');
        });
        function get_popup_call_phone() {  
          $.magnificPopup.open({
            tLoading: '<img src="catalog/view/theme/sstore/stylesheet/popup_call_phone/ring-alt.svg" />',
            items: {
              src: 'index.php?route=module/popup_call_phone',
              type: 'ajax'
            }
          });
        }
        </script>

Так может передать как то можно переменные эти Ajax'ом...

Змінено користувачем djnick
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.