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

[Решено] Режется get (?umt) в категориях после 3 уровня (SEO PRO)


vstubborn

Recommended Posts

Доброго времени суток!

Столкнулся с необычной ситуацией:
при входе с example.ru/category1/category2/category3/?utm_medium=......
Через несколько секунд идёт редирект на example.ru/category1/category2/category3/

Не спишите отправлять меня в тему по решению обрезки UTM  , я там уже был и все эти изменения по дефолту есть в файле)

Теперь самое интересное : прекрасно работает example.ru/category1/category2/?utm_medium=  и  example.ru/product/?utm_medium=

Кэшы все чистил, всё посмотрел. Стоит SEO PRO opencartjazz, пока думаю на него, больше из модулей, которые могут так шалить с URL ничего не нашел.
По коду контроллера сео про видно, что вывод ничем не ограничен, обычный foreach(). Так что не знаю, куда ещё полезть. В .htaccess тоже нет проблем.

Пробовал радикальный метод, обрезать категории до последней по примеру

заменив в контроллере seo pro
 

   foreach ($categories as $category) {
        $queries[] = 'category_id=' . $category;
    }
    unset($data[$key]);

на

 

  $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);

Для вывода только последнего элемента массива подкатегорий. Но результат: с начала страница грузиться нормально, а через 1-2 сек. редирект на example.ru/undefined
Но страница сама по себе отображается нормально.



Подскажите пожалуйста, как сделать так, чтобы не обрезались UTM после подкатегории 3 уровня. Вообще нормально Opencart  работает c подктегориями выше 3, есть какие-то ограничения, поделитесь опытом?

 

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


Через несколько секунд идет... ищите скрипт, который редиректит

Большое спасибо за наводку.

Инспектором сети выявил, что последним подгружается  adv_ajax filter. Скорее всего он и редиректит. На страницах с аналогичной вложенность без фильтра проблем нет.

Буду искать дальше, но думаю это он. Может быть у кого-то есть опыт борьбы с этим зверем. По моему он входил в комплект поставки с темой.

Просмотрев код контроллера фильтра пока не вижу никаких проблем.

Прилагаю код контроллера, возможно у кого-то найдутся мысли как зафиксить.

class ControllerModuleAdvajaxfilter extends Controller {

private $k = 1;

public function index($setting)

{

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

$data['text_tax'] = $this->language->get('text_tax');

$data['button_cart'] = $this->language->get('button_cart');

$data['button_wishlist'] = $this->language->get('button_wishlist');

$data['button_compare'] = $this->language->get('button_compare');

$data['text_price_range'] = $this->language->get('text_price_range');

$data['text_manufacturers'] = $this->language->get('text_manufacturers');

$data['text_categories'] = $this->language->get('text_categories');

$data['text_attributes'] = $this->language->get('text_attributes');

$data['text_all'] = $this->language->get('text_all');

$data['clear_filter'] = $this->language->get('clear_filter');

$data['text_instock'] = $this->language->get('text_instock');

$data['text_range'] = $this->language->get('text_range');

$data['heading_title'] = $this->language->get('heading_title');

$data['pds_sku'] = $this->language->get('pds_sku');

$data['pds_upc'] = $this->language->get('pds_upc');

$data['pds_location'] = $this->language->get('pds_location');

$data['pds_model'] = $this->language->get('pds_model');

$data['pds_brand'] = $this->language->get('pds_brand');

$data['pds_stock'] = $this->language->get('pds_stock');

$data['symbol_right'] = $this->currency->getSymbolRight();

$data['symbol_left'] = $this->currency->getSymbolLeft();

$this->load->model('setting/setting');

$advsettings = $this->model_setting_setting->getSetting('adv_ajaxfilter');

if (isset($advsettings['adv_ajaxfilter_module'])) {

$data['setting'] = $advsettings['adv_ajaxfilter_module'][0];

}

else{

$data['setting'] = array();

}

$adv_ajaxfilter_setting = $this->config->get('adv_ajaxfilter_setting');

$cat_id = false;

$data['path'] = "";

if(isset($this->request->get['path'])) {

$data['path'] = $this->request->get['path'];

$parts = explode('_', (string)$this->request->get['path']);

$cat_id = array_pop($parts);

}

$man_id = false;

if(isset($this->request->get['manufacturer_id'])) {

$man_id = $this->request->get['manufacturer_id'];

$_data = array(

'filter_manufacturer_id' => $this->request->get['manufacturer_id']

);

} else {

$_data = array(

'filter_category_id' => $cat_id,

'filter_sub_category' => false

);

}

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

$product_total = $this->model_catalog_product->getTotalProducts($_data);

if($product_total < 2) {

return;

}

$data['category_id'] = $cat_id;

$_data = array('category_id' => $cat_id, 'manufacturer_id' => $man_id);

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

$this->load->model('tool/image');

$data['manufacturers'] = false;

if(isset($this->request->get['manufacturer_id'])) {

$data['manufacturer_id'] = $this->request->get['manufacturer_id'];

} else {

if($adv_ajaxfilter_setting['display_manufacturer'] != 'none') {

$data['manufacturers'] = $this->model_module_adv_ajaxfilter->getManufacturers($_data);

$data['display_manufacturer'] = $adv_ajaxfilter_setting['display_manufacturer'];

$data['expanded_manufacturer'] = isset($adv_ajaxfilter_setting['expanded_manufacturer']) ? 1 : 0;

foreach($data['manufacturers'] as $key => $manufacturer) {

$data['manufacturers'][$key]['image'] = $this->model_tool_image->resize($manufacturer['image'], 64, 32);

}

}

}

$data['options'] = $this->model_module_adv_ajaxfilter->getOptions($_data);

foreach($data['options'] as $i => $option) {

if(!isset($adv_ajaxfilter_setting['display_option_' . $option['option_id']])) {

$adv_ajaxfilter_setting['display_option_' . $option['option_id']] = 'none';

}

$display_option = $adv_ajaxfilter_setting['display_option_' . $option['option_id']];

if($display_option != 'none') {

$data['options'][$i]['display'] = $display_option;

$data['options'][$i]['expanded'] = isset($adv_ajaxfilter_setting['expanded_option_' . $option['option_id']]) ? 1 : 0;

foreach($data['options'][$i]['option_values'] as $j => $option_value) {

$data['options'][$i]['option_values'][$j]['thumb'] = $this->model_tool_image->resize($data['options'][$i]['option_values'][$j]['image'], 20, 20);

}

} else {

unset($data['options'][$i]);

}

}

$data['categories'] = false;

if($adv_ajaxfilter_setting['display_categories'] != 'none') {

$data['display_categories'] = $adv_ajaxfilter_setting['display_categories'];

$data['categories'] = $this->model_module_adv_ajaxfilter->getSubCategories($_data);

$data['expanded_categories'] = isset($adv_ajaxfilter_setting['expanded_categories']) ? 1 : 0;

}

$data['attributes'] = $this->model_module_adv_ajaxfilter->getAttributes($_data);

foreach($data['attributes'] as $j => $attr_group) {

foreach($attr_group['attribute_values'] as $attr_id => $attr) {

if(!isset($adv_ajaxfilter_setting['display_attribute_' . $attr_id])) {

$adv_ajaxfilter_setting['display_attribute_' . $attr_id] = 'none';

}

$display_attribute = $adv_ajaxfilter_setting['display_attribute_' . $attr_id];

if($display_attribute != 'none') {

if($display_attribute == 'slider') {

$values = $data['attributes'][$j]['attribute_values'][$attr_id]['values'];

$first = $values[0];

$data['attributes'][$j]['attribute_values'][$attr_id]['suffix'] = preg_replace("/^-?[0-9 .,]*/", '', $first);

$values = array_map('floatval', $values);

$values = array_unique($values);

sort($values);

$data['attributes'][$j]['attribute_values'][$attr_id]['values'] = $values;

}

$data['attributes'][$j]['attribute_values'][$attr_id]['display'] = $display_attribute;

$data['attributes'][$j]['attribute_values'][$attr_id]['expanded'] = isset($adv_ajaxfilter_setting['expanded_attribute_' . $attr_id]) ? 1 : 0;

} else {

unset($data['attributes'][$j]['attribute_values'][$attr_id]);

if(!$data['attributes'][$j]['attribute_values']) {

unset($data['attributes'][$j]);

}

}

}

}

$data['filter_groups'] = array();

$this->load->model('catalog/category');

$fltr_grps = $this->model_catalog_category->getCategoryFilters($cat_id);

$data['display_filters'] = $adv_ajaxfilter_setting['display_filters'];

$data['expanded_filters'] = isset($adv_ajaxfilter_setting['expanded_filters']) ? 1 : 0;

if ($fltr_grps) {

foreach ($fltr_grps as $fltr_grp) {

$filter_data = array();

foreach ($fltr_grp['filter'] as $filter) {

$_data = array(

'filter_category_id' => $cat_id,

'filter_filter' => $filter['filter_id']

);

$filter_data[] = array(

'filter_id' => $filter['filter_id'],

'name' => $filter['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($_data) . ')' : '')

);

}

$data['filter_groups'][] = array(

'filter_group_id' => $fltr_grp['filter_group_id'],

'name' => $fltr_grp['name'],

'filter' => $filter_data

);

}

}

$data['price_slider'] = $adv_ajaxfilter_setting['price_slider'];

$data['attr_group'] = $adv_ajaxfilter_setting['attr_group'];

$data['instock_checked'] = isset($adv_ajaxfilter_setting['instock_checked']) ? 1 : 0;

$data['instock_visible'] = isset($adv_ajaxfilter_setting['instock_visible']) ? 1 : 0;

if($data['options'] || $data['manufacturers'] || $data['attributes'] || $data['price_slider']) {

$this->document->addScript('catalog/view/javascript/jquery-ui/jquery-ui.js');

$this->document->addScript('catalog/view/javascript/jquery.plugins.adv.js');

$this->document->addScript('catalog/view/javascript/adv_ajaxfilter.js');

$this->document->addStyle('catalog/view/javascript/jquery-ui/css/jquery-ui.css');

$this->document->addStyle('catalog/view/theme/default/stylesheet/adv_ajaxfilter.css');

$this->document->addStyle('catalog/view/theme/default/stylesheet/jquery.loadmask.css');

}

$adv_ajaxfilter_setting['adv_ajaxfilter_afterload'] ="";

$data['adv_ajaxfilter_container'] = $adv_ajaxfilter_setting['adv_ajaxfilter_container'];

$data['adv_ajaxfilter_afterload'] = html_entity_decode($adv_ajaxfilter_setting['adv_ajaxfilter_afterload'], ENT_QUOTES, 'UTF-8');

if(isset($this->request->get['route'])) {

$data['old_route'] = $this->request->get['route'];

}

else {

$data['old_route'] ="";

}

if(isset($this->request->get['search'])) {

$data['search'] = $this->request->get['search'];

}

else {

$data['search'] ="";

}

$data['route'] = '';

if(isset($this->request->get['route'])){

$data['route'] = $this->request->get['route'];

}

$data['url'] = $this->url->link('product/adv_ajaxfilter', '');

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/adv_ajaxfilter.tpl')) {

return $this->load->view($this->config->get('config_template') . '/template/module/adv_ajaxfilter.tpl', $data);

} else {

return $this->load->view('default/template/module/adv_ajaxfilter.tpl', $data);

}

}

public function getProducts() {

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

$adv_ajaxfilter_setting = $this->config->get('adv_ajaxfilter_setting');

if((float)$adv_ajaxfilter_setting['tax'] > 0) {

$this->k = 1 + (float)$adv_ajaxfilter_setting['tax'] / 100;

}

if (!empty($this->request->get['page'])) {

$page = $this->request->get['page'];

} else if (!empty($this->request->post['page'])) {

$page = $this->request->post['page'];

} else {

$page = 1;

}

if (isset($this->request->get['limit'])) {

$limit = $this->request->get['limit'];

} else if (isset($this->request->post['limit'])) {

$limit = $this->request->post['limit'];

} else {

$limit = $this->config->get('config_product_limit');

}

if(isset($this->request->post['sort'])) {

$sort = $this->request->post['sort'];

} else if (isset($this->request->post['sort'])) {

$sort = $this->request->post['sort'];

} else {

$sort = 'p.sort_order';

}

if(isset($this->request->post['order'])) {

$order = $this->request->post['order'];

} else if (isset($this->request->post['order'])) {

$order = $this->request->post['order'];

} else {

$order = 'ASC';

}

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

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

$this->load->model('tool/image');

$man = false;

if(isset($this->request->post['manufacturer'])) {

$man = $this->trim_array_values($this->request->post['manufacturer']);

if(!count($man)) {

$man = false;

}

}

$man_id = false;

if(isset($this->request->post['manufacturer_id'])) {

$man_id = $this->request->post['manufacturer_id'];

$man = array($man_id);

}

$option_value = false;

if(isset($this->request->post['option_value'])) {

$option_value = $this->trim_array_values($this->request->post['option_value']);

if(!count($option_value)) {

$option_value = false;

}

}

$attr_value = array();

if(isset($this->request->post['attribute_value'])) {

$attr_value = $this->trim_array_values($this->request->post['attribute_value']);

if(!count($attr_value)) {

$attr_value = array();

}

}

$instock = false;

if(isset($this->request->post['instock'])) {

$instock = true;

}

$cats = false;

if(isset($this->request->post['categories'])) {

$cats = $this->trim_array_values($this->request->post['categories']);

if(!count($cats)) {

$cats = false;

}

}

$cat_id = 0;

if(isset($this->request->post['category_id'])) {

$cat_id = $this->request->post['category_id'];

}

if(!$cats && $cat_id) {

$cats = array($cat_id);

}

$attr_slider = isset($this->request->post['attr_slider']) ? $this->request->post['attr_slider'] : false;

$filter = false;

if(isset($this->request->post['filter'])) {

$filter = $this->trim_array_values($this->request->post['filter']);

if(!count($filter)) {

$filter = false;

}

}

$data = array(

'instock' => $instock,

'option_value' => $option_value,

'manufacturer' => $man,

'attribute_value' => $attr_value,

'categories' => $cats,

'attr_slider' => $attr_slider,

'filter' => $filter,

'min_price' => $this->request->post['min_price'] / $this->k,

'max_price' => $this->request->post['max_price'] / $this->k,

'start' => ($page - 1) * $limit,

'limit' => $limit,

'sort' => $sort,

'order' => $order

);

if(isset($this->request->post['manufacturer_id']) || ($adv_ajaxfilter_setting['display_manufacturer'] == 'none')) {

$totals_mans = false;

} else {

$totals_mans = $this->model_module_adv_ajaxfilter->getTotalManufacturers($data);

}

$totals_options = $this->model_module_adv_ajaxfilter->getTotalOptions($data);

$totals_atrs = $this->model_module_adv_ajaxfilter->getTotalAttributes($data);

foreach($attr_value as $attr_id => $values) {

foreach($totals_atrs as $i => $attr) {

if($attr['id'] == $attr_id) {

unset($totals_atrs[$i]);

}

}

$temp_data = $data;

unset($temp_data['attribute_value'][$attr_id]);

foreach($this->model_module_adv_ajaxfilter->getTotalAttributes($temp_data) as $attr){

if($attr['id'] == $attr_id) {

$totals_atrs[] = $attr;

}

}

}

$totals_cats = $this->model_module_adv_ajaxfilter->getTotalCategories($data, $cat_id);

$results = $this->model_module_adv_ajaxfilter->getProducts($data);

$min_price = false;

$max_price = false;

if(isset($this->request->post['getPriceLimits']) && $this->request->post['getPriceLimits']) {

$priceLimits = $this->model_module_adv_ajaxfilter->getPriceLimits(array('category_id' => $cat_id, 'manufacturer_id' => $man_id));

$min_price = $priceLimits['min_price'];

$max_price = $priceLimits['max_price'];

}

$this->request->get['path'] = isset($this->request->post['path']) ? $this->request->post['path'] : '';

// Product Option Image PRO module <<

// >> Product Option Image PRO module

$product_total = $this->model_module_adv_ajaxfilter->getTotalProducts($data);

$pagination = new Pagination();

$pagination->total = $product_total;

$pagination->page = $page;

$pagination->limit = $limit;

$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&page={page}');

$pagination_result = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

$min_price = $this->currency->convert($min_price * $this->k, $this->config->get('config_currency'), $this->currency->getCode());

$max_price = $this->currency->convert($max_price * $this->k, $this->config->get('config_currency'), $this->currency->getCode());

$result_html = $this->getProductsTmpl($results, $product_total);

$json = json_encode(array( 'result_html' => $result_html,

'min_price' => $min_price,

'max_price' => $max_price,

'pagination' => $pagination->render(),

'pagination_result' => $pagination_result,

'totals_data' => array('manufacturers' => $totals_mans,

'options' => $totals_options,

'attributes' => $totals_atrs,

'categories' => $totals_cats)));

$this->response->setOutput($json);

}

private function getProductsTmpl($results, $product_total) {

$this->load->language('product/category');

$data['text_refine'] = $this->language->get('text_refine');

$data['text_empty'] = $this->language->get('text_empty');

$data['text_quantity'] = $this->language->get('text_quantity');

$data['text_manufacturer'] = $this->language->get('text_manufacturer');

$data['text_model'] = $this->language->get('text_model');

$data['text_price'] = $this->language->get('text_price');

$data['text_tax'] = $this->language->get('text_tax');

$data['text_points'] = $this->language->get('text_points');

$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));

$data['text_display'] = $this->language->get('text_display');

$data['text_list'] = $this->language->get('text_list');

$data['text_grid'] = $this->language->get('text_grid');

$data['text_sort'] = $this->language->get('text_sort');

$data['text_limit'] = $this->language->get('text_limit');

$data['button_cart'] = $this->language->get('button_cart');

$data['button_wishlist'] = $this->language->get('button_wishlist');

$data['button_compare'] = $this->language->get('button_compare');

$data['button_continue'] = $this->language->get('button_continue');

if (file_exists('catalog/view/theme/cosyone/js/countdown/jquery.countdown_' . $this->language->get('code') . '.js')) {

$this->document->addScript('catalog/view/theme/cosyone/js/countdown/jquery.countdown_' . $this->language->get('code') . '.js');

} else {

$this->document->addScript('catalog/view/theme/cosyone/js/countdown/jquery.countdown_en.js');

}

$this->load->language('common/cosyone');

$data['text_category_expire'] = $this->language->get('text_category_expire');

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

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

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

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

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

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

$cosyone_quicklook = $this->config->get('cosyone_text_ql');

if(empty($cosyone_quicklook[$this->language->get('code')])) {

$data['cosyone_text_ql'] = false;

} else if (isset($cosyone_quicklook[$this->language->get('code')])) {

$data['cosyone_text_ql'] = html_entity_decode($cosyone_quicklook[$this->language->get('code')], ENT_QUOTES, 'UTF-8');

}

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

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

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

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

$data['products'] = array();

foreach ($results as $result) {

if ($result['image']) {

$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

} else {

$image = false;

}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {

$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));

} else {

$price = false;

}

if ((float)$result['special']) {

$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));

} else {

$special = false;

}

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

$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);

} else {

$tax = false;

}

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

$rating = (int)$result['rating'];

} else {

$rating = false;

}

// Cosyone custom code starts

if ((float)$result['special']) {

$sales_percantage = ((($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')))-($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))))/(($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')))/100));

} else {

$sales_percantage = false;

}

if ((float)$result['special']) {

$special_info = $this->model_catalog_product->getSpecialPriceEnd($result['product_id']);

$special_date_end = strtotime($special_info['date_end']) - time();

} else {

$special_date_end = false;

}

$images = $this->model_catalog_product->getProductImages($result['product_id']);

if(isset($images[0]['image']) && !empty($images[0]['image'])){

$images =$images[0]['image'];

} else {

$images = false;

}

// Cosyone end

$data['products'][] = array(

'option_images' => $this->model_module_product_option_image_pro->getCategoryImages( $result['product_id'], "related_products" ),

'product_id' => $result['product_id'],

'thumb' => $image,

'name' => $result['name'],

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',

'price' => $price,

'special' => $special,

// Cosyone custom code starts

'sales_percantage' => number_format($sales_percantage, 0, ',', '.'),

'special_date_end' => $special_date_end,

'thumb_hover' => $this->model_tool_image->resize($images, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')),

'brand_name' => $result['manufacturer'],

'quickview' => $this->url->link('product/quickview', 'product_id=' . $result['product_id'], '', 'SSL'),

'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1,

// Cosyone custom code ends

'tax' => $tax,

'rating' => $result['rating'],

'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),

'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])

);

}

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/adv_ajaxfilter_products.tpl')) {

return $this->load->view($this->config->get('config_template') . '/template/module/adv_ajaxfilter_products.tpl', $data);

} else {

return $this->load->view('default/template/module/adv_ajaxfilter_products.tpl', $data);

}

}

private function trim_array_values(array $array) {

foreach($array as $key => $value) {

if(is_array($value)) {

$array[$key] = $this->trim_array_values($value);

if(!count($array[$key])) {

unset($array[$key]);

}

} elseif(is_string($value)) {

$value = trim($value);

if(!$value) {

unset($array[$key]);

}

}

}

return $array;

}

}

?>

 

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


Контроллер здесь не причем

 

Именно js-скрипт...

Сразу даже и не задумался о том, что кто-то то будет пытаться править url через js.

Попробовал сменить adv_ajax filter из древнего бекапа и всё отлично заработало.

Сравнил два файла и увидел, что в них очень много отличий и явно, что кто-то копипастил без знания дела.

Внутри комменты по русски и кодировка windows, a не utf-8)

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

Задумка у того, кто делал исправления была интересная- модифицировать урл фильтра, чтобы он был красивым, а не как в стандартном виде. Но увы, только работает до 4 вложенности.

Я лично, не смог отловить баг в коде и довольствовался тем, что всё работает с бекапа.

Итого: всё дело было в js файле фильтра, который кто-то неудачно правил.

P.S Если у кого-то есть спортивный интерес сравнить исходник с правленым файлом или попробовать отловить баг, пишите в тему или обращайтесь в ЛС- добавлю файлы.

В принципе, тему можно закрывать.

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


  • 3 months later...

Сразу даже и не задумался о том, что кто-то то будет пытаться править url через js.

Попробовал сменить adv_ajax filter из древнего бекапа и всё отлично заработало.

Сравнил два файла и увидел, что в них очень много отличий и явно, что кто-то копипастил без знания дела.

Внутри комменты по русски и кодировка windows, a не utf-8)

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

Задумка у того, кто делал исправления была интересная- модифицировать урл фильтра, чтобы он был красивым, а не как в стандартном виде. Но увы, только работает до 4 вложенности.

Я лично, не смог отловить баг в коде и довольствовался тем, что всё работает с бекапа.

Итого: всё дело было в js файле фильтра, который кто-то неудачно правил.

P.S Если у кого-то есть спортивный интерес сравнить исходник с правленым файлом или попробовать отловить баг, пишите в тему или обращайтесь в ЛС- добавлю файлы.

В принципе, тему можно закрывать.

 

Привет,  у меня почти таже проблема - может подскажете что делать? 

Версия 1.5.х

 

Не редиректит в случаях, когда это каталог или подкаталог

https://massagecenter.ru/?utm_source=yandexmarket&utm_term=65 
https://massagecenter.ru/massagnye-krovati/?utm_source=yandexmarket&utm_term=65
https://massagecenter.ru/massagnye-kresla/anatomico/?utm_source=yandexmarket&utm_term=65 
Но если это товар, то НЕ работает

https://massagecenter.ru/massazhery/dlya-nog/massager-dlya-nog-canoo-3.html?utm_source=yandexmarket&utm_medium=cpc&utm_term=74'>https://massagecenter.ru/massazhery/dlya-nog/massager-dlya-nog-canoo-3.html?utm_source=yandexmarket&utm_medium=cpc&utm_term=74
идет сразу переадресация на

https://massagecenter.ru/massazhery/dlya-nog/massager-dlya-nog-canoo-3.html
В какую сторону смотреть ? Эту ветку читал https://opencartforum.com/topic/24946-решено-seo-pro-режет-ссылку/ Змінено користувачем intsite
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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