Перейти к содержанию
Форум поддержки пользователей VamShop

Проблема с навигацией в карточке товаров


Рекомендуемые сообщения

Добрый день

1.77

Структура каталогов товара следующая: Есть корневые категории ,в них еще категории. Некоторые товары есть в разных подкатегориях корневых категрий (как ссылки). Проблема в следующем (см. скриншоты):

1. Заходим в подкатегорию одной из корневых категорий (см. стрелку). См. строку хлебных крошек.  post-56282-0-99479200-1429279412_thumb.p

2 Заходим в карточку товара и видим, что изменился в строке хлебных крошек путь к товару (см. стрелку). Ну и навигация по товарам дальше уже работает внутри этой подкатегории.post-56282-0-09577100-1429279425_thumb.p

 

Это не правильно, как это можно поправить? 

Ссылка на сообщение
Поделиться на другие сайты

Есть товар в одной категории "Бренды". Скопирован ссылкой в другую категорию "По применению" (для простоты опустим структуру подкатегорий).

1. Заходим в список товаров категории "Бренд" В строке хлебных крошек видим: Начало-Бренды (см. первый скриншот)

2. Заходим в карточку товара (см. скриншот 2). В хлебных крошках видим, что путь изменился стал Начало - по применению-товар.

И если теперь пользоваться навигацией по списку товаров, то перебираются товары в категории По применению, а не по категории Бренды, откуда мы зашли в карточку товара.

Т.е. когда у нас товар есть в разных категориях не запоминается из какой категории мы зашли в карточку товара.

 

Надеюсь, теперь понятнее объяснил :)

Ссылка на сообщение
Поделиться на другие сайты

Так это наверное из-за того, что он скопирован ссылкой, это ведь не самостоятельный товар и он относится к той категории, где сам товар.

Разве что делать копию как дубликат.

 

Во всяком случае я не знаю как сделать так как Вы хотите.

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Решил проблему так: ввел переменную, которая хранит Id категории, откуда был переход.

Вот что доработано:

файл application_top.php:

ищем:

// new m URLS
if (isset ($_GET['manu'])) {
	$site = explode('_', $_GET['manu']);
	$mID = $site[0];
	$mID = (int)str_replace('m', '', $mID);
	$_GET['manufacturers_id'] = $mID;
} 

вставляем после и изменяем то что под // calculate category path

// BOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке  
// создаем сеансовую переменную для хранения categories_id каталога, откуда был переход на товар
  if (!vam_session_is_registered('prev_categories_id')) {
    vam_session_register('prev_categories_id');
    $prev_categories_id = 0;
	//print "<br> unregistred <br>";
  }
  //print "<br> \$prev_categories_id = " . $prev_categories_id . "<br>";
//EOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке

// calculate category path
if (isset ($_GET['cPath'])) {
	$cPath = vam_input_validation($_GET['cPath'], 'cPath', '');
}
elseif (is_object($product) && !isset ($_GET['manufacturers_id'])) {
	if ($product->isProduct()) {
/ BOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке
//		$cPath = vam_get_product_path($actual_products_id);
		$cPath = vam_get_product_path($actual_products_id,$prev_categories_id);
// EOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке	
	} else {
		$cPath = '';
	}
} else {
	$cPath = '';
}

Перед кодом

// include the breadcrumb class and start the breadcrumb trail
require (DIR_WS_CLASSES.'breadcrumb.php');

вставляем

// BOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке
  $prev_categories_id = $current_category_id; 
// EOF корректное определение категории, откуда был переход на товар, находящийся там по ссылке

Изменяем функцию в файле vam_get_product_path.inc.php

 function vam_get_product_path($products_id,$prev_categories_id=0) {
    $cPath = '';
	if ($prev_categories_id == 0) {
		$category_query = "select p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = '" . (int)$products_id . "' and p.products_status = '1' and p.products_id = p2c.products_id and p2c.categories_id != 0 limit 1";
		$category_query  = vamDBquery($category_query);
		if (vam_db_num_rows($category_query,true)) {
		  $category = vam_db_fetch_array($category_query);

		  $categories = array();
		  vam_get_parent_categories($categories, $category['categories_id']);

		  $categories = array_reverse($categories);

		  $cPath = implode('_', $categories);

		  if (vam_not_null($cPath)) $cPath .= '_';
		  $cPath .= $category['categories_id'];
		}
	} else {
		// подставляем id категории откуда был сделан переход на товар
		$cPath .= $prev_categories_id;
	}
    return $cPath;
  }

Не решен вопрос с тем ,что сделать, если, переход был произведен, например из блока новинок на первой странице...

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...