Jump to content
zovax

[Решено] Seo pro режет ссылку

Recommended Posts

Установлен модуль SEO PRO. В админке все включено.

Включить ЧПУ: да, Тип ЧПУ: SeoPro, ЧПУ товаров с категориями: да.

 

Но столклунлся с проблемой следущего рода.

 

Когда пытаюсь проставить UTM метки например: site/tovar?utm_medium=cpc&utm_source=reklama&utm_campaign=tovar&utm_content=2310906

 

То при переходе по этой сссылке "site/tovar?utm_medium=cpc&utm_source=reklama&utm_campaign=tovar&utm_content=2310906" , в адресной строке остается только "site/tovar" , все остальное фильтруется(урезается) и по этому статистические данные не передаются на ЯМ или ГА.

 

Когда отключаю SeoPro все нормально. Подскажите, что надо отредактировать чтоб ссылка не фильтровалась и полностью отображалась в адресной строке браузера.

Share this post


Link to post
Share on other sites

ссылку на сайт бы увидеть

Share this post


Link to post
Share on other sites

Не имеет значение на каком сайте. тут связка opencart+seopro и фильтруются символы.  Как это можно исправить? Чтоб ссылка с меткой отображались в адресной строке полностью, а не только ссылка.

Share this post


Link to post
Share on other sites

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

 

Как я поняла, в seo_pro.php за это отвечает

 

if (count($data)) {
$seo_url .= '?' . urldecode(http_build_query($data, '', '&'));
}
 
Правда как сделать так, чтобы в товаре метка метка не терлась, пока не знаю, если появятся идеи - пишите, если разберусь, отпишусь так же!

Share this post


Link to post
Share on other sites

все эти "utm_" надо @добавлять в исключения@ в контроллере seo_pro [=== catalog/controller/common/seo_pro.php ===] :

		switch ($route) {
			case 'product/product':
				if (isset($data['product_id'])) {
					$tmp = $data;
					$data = array();
					if ($this->config->get('config_seo_url_include_path')) {
						$data['path'] = $this->getPathByProduct($tmp['product_id']);
						if (!$data['path']) return $link;
					}
					$data['product_id'] = $tmp['product_id'];
					if (isset($tmp['tracking'])) {
						$data['tracking'] = $tmp['tracking'];
					}
				}
				break;
по аналогии с

					if (isset($tmp['tracking'])) {
						$data['tracking'] = $tmp['tracking'];
					}
(это для товара; для категорий - там ниже код).
  • +1 3

Share this post


Link to post
Share on other sites

Я честно говоря не сильна в php, покопалась, в итоге сделала так:

 

удалила блок кода из [=== catalog/controller/common/seo_pro.php ===] :

 

case 'product/product':
if (isset($data['product_id'])) {
$tmp = $data;
$data = array();
if ($this->config->get('config_seo_url_include_path')) {
$data['path'] = $this->getPathByProduct($tmp['product_id']);
if (!$data['path']) return $link;
}
$data['product_id'] = $tmp['product_id'];
if (isset($tmp['tracking'])) {
$data['tracking'] = $tmp['tracking'];
}
}
break;
 
Результат - чпу товаров остались, при этом есть возможность ставить utm метки, не знаю насколько это правильно, но вроде все работает, 
 
Спасибо!
  • +1 1

Share this post


Link to post
Share on other sites

для тех, кто:

		switch ($route) {
			case 'product/product':
				if (isset($data['product_id'])) {
					$tmp = $data;
					$data = array();
					if ($this->config->get('config_seo_url_include_path')) {
						$data['path'] = $this->getPathByProduct($tmp['product_id']);
						if (!$data['path']) return $link;
					}
					$data['product_id'] = $tmp['product_id'];
					if (isset($tmp['tracking'])) {
						$data['tracking'] = $tmp['tracking'];
					}
					// --- add below
					if (isset($tmp['utm_medium'])) {
						$data['utm_medium'] = $tmp['utm_medium'];
					}
					if (isset($tmp['utm_source'])) {
						$data['utm_source'] = $tmp['utm_source'];
					}
					if (isset($tmp['utm_campaign'])) {
						$data['utm_campaign'] = $tmp['utm_campaign'];
					}
					if (isset($tmp['utm_content'])) {
						$data['utm_content'] = $tmp['utm_content'];
					}
					// --- add above
				}
				break;
  • +1 3

Share this post


Link to post
Share on other sites

Сюда же еще 

					if (isset($tmp['yclid'])) {
						$data['yclid'] = $tmp['yclid'];
					}
					if (isset($tmp['gclid'])) {
						$data['gclid'] = $tmp['gclid'];
					}

Share this post


Link to post
Share on other sites

Я только не пойму почему так сделано, почему seo_pro удаляет переменные get ? Не понимаю я этого

Share this post


Link to post
Share on other sites

Я добавил еще 

 

					if (isset($tmp['utm_term'])) {
						$data['utm_term'] = $tmp['utm_term'];
					}

Share this post


Link to post
Share on other sites

У меня в урле utm метка не режется, а отображается полностью. Но в метрике показываются только первые 3 параметра. Ссылка выглядит так:

site.ru/tovar.html?utm_source=yandex&utm_medium=cpc&utm_campaign=tovar&type={source_type}&source={source}&block={position_type}&position={position}&keyword={keyword}

В seopro добавил такие строчки

// --- add utm
if (isset($tmp['utm_source'])) {
$data['utm_source'] = $tmp['utm_source'];
}
if (isset($tmp['utm_medium'])) {
$data['utm_medium'] = $tmp['utm_medium'];
}
if (isset($tmp['utm_campaign'])) {
$data['utm_campaign'] = $tmp['utm_campaign'];
}
if (isset($tmp['type'])) {
$data['type'] = $tmp['type'];
}
if (isset($tmp['source'])) {
$data['source'] = $tmp['source'];
}
if (isset($tmp['block'])) {
$data['block'] = $tmp['block'];
}
if (isset($tmp['position'])) {
$data['position'] = $tmp['position'];
}
if (isset($tmp['keyword'])) {
$data['keyword'] = $tmp['keyword'];
}
if (isset($tmp['yclid'])) {
$data['yclid'] = $tmp['yclid'];
}
if (isset($tmp['gclid'])) {
$data['gclid'] = $tmp['gclid'];
}
// --- add utm

Почему последние 5 параметров

&type={source_type}
&source={source}
&block={position_type}
&position={position}

&keyword={keyword}

не попадают в метрику?

Edited by fjeka

Share this post


Link to post
Share on other sites
Подскажите что не так??

Нужно добавить yclid метки, а то метрика начала глючить.

 

Скопировал как в примере и не зная как именно и что там добавлять - добавил как смог =)

 

И все равно не работает. Когда добавляю в конце  http://example-shop.ru/offer.html?ymclid=123456  обратно переадресовывает в нормальный вид (без"?ymclid=123456").

 

Удалял $data = array(); тож не помогает =(

Хелп!

 

 

 

$data = array();

parse_str($component['query'], $data);

 

$route = $data['route'];

unset($data['route']);

 

switch ($route) {

case 'product/product':

if (isset($data['product_id'])) {

$tmp = $data;

$data = array();

if ($this->config->get('config_seo_url_include_path')) {

$data['path'] = $this->getPathByProduct($tmp['product_id']);

if (!$data['path']) return $link;

}

$data['product_id'] = $tmp['product_id'];

if (isset($tmp['tracking'])) {

$data['tracking'] = $tmp['tracking'];

}

// --- add utm

if (isset($tmp['utm_yclid'])) {

$data['utm_yclid'] = $tmp['utm_yclid'];

}

if (isset($tmp['yclid'])) {

$data['yclid'] = $tmp['yclid'];

}

if (isset($tmp['utm_source'])) {

$data['utm_source'] = $tmp['utm_source'];

}

if (isset($tmp['utm_medium'])) {

$data['utm_medium'] = $tmp['utm_medium'];

}

if (isset($tmp['utm_campaign'])) {

$data['utm_campaign'] = $tmp['utm_campaign'];

}

if (isset($tmp['type'])) {

$data['type'] = $tmp['type'];

}

if (isset($tmp['source'])) {

$data['source'] = $tmp['source'];

}

if (isset($tmp['block'])) {

$data['block'] = $tmp['block'];

}

if (isset($tmp['position'])) {

$data['position'] = $tmp['position'];

}

if (isset($tmp['keyword'])) {

$data['keyword'] = $tmp['keyword'];

}

if (isset($tmp['yclid'])) {

$data['yclid'] = $tmp['yclid'];

}

if (isset($tmp['gclid'])) {

$data['gclid'] = $tmp['gclid'];

}

// --- add utm

 

}

break;

Share this post


Link to post
Share on other sites

Также вставил в код, как автор tdl13

Не помогает. Все равно метка отбрасывается. как быть?

Share this post


Link to post
Share on other sites

Starter,tdl13 Для яндекс-маркета нужно добавить:

if (isset($tmp['ymclid'])) {
	$data['ymclid'] = $tmp['ymclid'];
					}

Share this post


Link to post
Share on other sites

Ребят, как увидеть что UTM метка режется модулем SEO Pro? Просто по ссылке с ней перейти? Метка должна оставаться после загрузки страницы так?

В самом прайсе-выгрузке для маркета метка видна все ок.

Share this post


Link to post
Share on other sites

 

Starter,tdl13 Для яндекс-маркета нужно добавить:

if (isset($tmp['ymclid'])) {
	$data['ymclid'] = $tmp['ymclid'];
					}

 

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

Метка такая: utm_medium=market&utm_term={product_id}

Share this post


Link to post
Share on other sites

Прочитав весь пост, вставил следующий код, вроде учел все сообщения:

 

switch ($route) {
            case 'product/product':
                if (isset($data['product_id'])) {
                    $tmp = $data;
                    $data = array();
                    if ($this->config->get('config_seo_url_include_path')) {
                        $data['path'] = $this->getPathByProduct($tmp['product_id']);
                        if (!$data['path']) return $link;
                    }
                    $data['product_id'] = $tmp['product_id'];
                    if (isset($tmp['tracking'])) {
                        $data['tracking'] = $tmp['tracking'];
                    }
                    if (isset($tmp['utm_medium'])) {
                        $data['utm_medium'] = $tmp['utm_medium'];
                    }
                    if (isset($tmp['utm_source'])) {
                        $data['utm_source'] = $tmp['utm_source'];
                    }
                    if (isset($tmp['utm_campaign'])) {
                        $data['utm_campaign'] = $tmp['utm_campaign'];
                    }
                    if (isset($tmp['utm_content'])) {
                        $data['utm_content'] = $tmp['utm_content'];
                    }
                    if (isset($tmp['yclid'])) {
                        $data['yclid'] = $tmp['yclid'];
                    }
                    if (isset($tmp['gclid'])) {
                        $data['gclid'] = $tmp['gclid'];
                    }
                    if (isset($tmp['utm_term'])) {
                        $data['utm_term'] = $tmp['utm_term'];
                    }
                }
                break;

 

Но проблема осталась, метка частично только остается конечная часть режется все равно:

От ?utm_medium=market&utm_term=2021

Остается тока ?utm_medium=market, вопрос почему?

Share this post


Link to post
Share on other sites

Укажите в настройках магазина, вкладка сервер - там где выбор seo_pro - показывать товары с категориями - "да".

Share this post


Link to post
Share on other sites

Укажите в настройках магазина, вкладка сервер - там где выбор seo_pro - показывать товары с категориями - "да".

Да, я главного не сказал.. мне нужна только основная категория, субкатегории не нужны

 

В идеале Надо чтоб при перемещении по категориям и субкатегориям адрес был вида

 http://www.pishpro.ru/categories/субкатегория

 (сейчас это /categories/субкатегория/субкатегория и тд. в зависимости от вложенности)

А при заходе в товар адрес был вида 

http://www.pishpro.ru/products/товар 

(только основная категория products, без подрубрик) сейчас это /products/субкатегория/субкатегория/товар в зависимости от вложенности.

Edited by zorky

Share this post


Link to post
Share on other sites

для opencart 2 все вышеперечисленное не работает, есть у кого мысли?

Share this post


Link to post
Share on other sites

для opencart 2 все вышеперечисленное не работает, есть у кого мысли?

 

Да вроде работает. Вот так себе сделал, пока не знаю на счет всех добавленных исключений, но яндекс метрика стала показывать переходы по рекламе.

switch ($route) {
			case 'product/product':
				if (isset($data['product_id'])) {
					$tmp = $data;
					$data = array();
					if ($this->config->get('config_seo_url_include_path')) {
						$data['path'] = $this->getPathByProduct($tmp['product_id']);
						if (!$data['path']) return $link;
					}
					$data['product_id'] = $tmp['product_id'];
					if (isset($tmp['tracking'])) {
						$data['tracking'] = $tmp['tracking'];
					}
					// --- add below
					if (isset($tmp['utm_medium'])) {
						$data['utm_medium'] = $tmp['utm_medium'];
					}
					if (isset($tmp['utm_source'])) {
						$data['utm_source'] = $tmp['utm_source'];
					}
					if (isset($tmp['utm_campaign'])) {
						$data['utm_campaign'] = $tmp['utm_campaign'];
					}
					if (isset($tmp['utm_content'])) {
						$data['utm_content'] = $tmp['utm_content'];
					}
					if (isset($tmp['yclid'])) {
						$data['yclid'] = $tmp['yclid'];
					}
					if (isset($tmp['ymclid'])) {
					$data['ymclid'] = $tmp['ymclid'];
					}
					if (isset($tmp['gclid'])) {
						$data['gclid'] = $tmp['gclid'];
					}
					if (isset($tmp['utm_term'])) {
						$data['utm_term'] = $tmp['utm_term'];
					}
					if (isset($tmp['type'])) {
					$data['type'] = $tmp['type'];
					}
					if (isset($tmp['block'])) {
					$data['block'] = $tmp['block'];
					}
					if (isset($tmp['position'])) {
					$data['position'] = $tmp['position'];
					}
					if (isset($tmp['keyword'])) {
					$data['keyword'] = $tmp['keyword'];
					}
					// --- add above

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.


  • 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.