Информация Если товар ВЫКЛ, то переход на Главную. Это плохо. Но можно вот так...

Статус
В этой теме нельзя размещать новые ответы.

Zolinger

Постоялец
Регистрация
29 Сен 2008
Сообщения
111
Реакции
69
Небольшое вступление:
Анализируя статистику отказов при заходе на сайт из поисковиков, пришел к выводу, что посетителям не нравиться когда по ссылке на товар открывается главная страница. Т.е. в случае отключения видимости товара (ВЫКЛ), SS редиректит на index.php
Посетители в большинстве случаев просто закрывают сайт.
В качестве альтернативного варианта предлагаю вместо главной показывать посетителю похожие товары.
Реализовать это через внутренний поиск товаров.
-------------------
Решение:
Файл product_detailed.php (includes)
Ищем код:
PHP:
	//show product information
	if (isset($productID) && $productID>=0 &&
		!isset($_POST["add_topic"]) && !isset($_POST["discuss"]) )
	{
		$product=GetProduct($productID);
		if (  !$product || $product["enabled"] == 0  )
		{
			header("Location: index.php);
		}
		else
header("Location: index.php); - это как раз и есть переход на главную.
меняем на:
PHP:
	//show product information
	if (isset($productID) && $productID>=0 &&
		!isset($_POST["add_topic"]) && !isset($_POST["discuss"]) )
	{
		$product=GetProduct($productID);
		if (  !$product  )
		{
			header("Location: index.php");
		}
		else if ( $product["enabled"] == 0 )
		{
			$other = explode(" ", $product["name"]);
			$other1 = $other[0];
			header("Location: index.php?searchstring=".$other1."&x=0&y=0");
		}
		else
Смысл происходящего вот в чём. Мы берем имя Выключенного товара - например - "Штуковина полезная всем".
Разбиваем через explode (по разделителю "пробел").
И осуществляем поиск товара по слову "Штуковина" ($other[0]).
В итоге у нас не главная страница, а результат поиска товара.
Можно усложнить:
other1 = "$other[0] $other[1]";
тогда поиск будет по - "Штуковина полезная".
или
other1 = "$other[0] $other[2]";
поиск будет по - "Штуковина всем".
Основные моменты решения рассказал. Можно и больше тюнинга наложить,
например поиск не по всему каталогу, а по той категории где выключенный товар был. Или в родительской категории подразделов.
Данные поиска брать не из имени товара, а например из краткого описания.
Изменить алгоритм поиска. Искать по Вашим критериям... и т.д.
-------------------
PS: если товара в каталоге нету (не ВЫКЛ, а удален за ненадобностью), то тогда осуществляется переход на главную.
 
Мысль пошла дальше, шире и глубже...

Вариант редиректа не гуут. Так мы можем похерить страницу в индексе поисковика (см. пост выше).

Логичнее и правильнее оставаться в рамках адреса этой страницы.
Поэтому вариант нумер 2 будет таким:

вот это:
PHP:
        else if ( $product["enabled"] == 0 ) 
        { 
            $other = explode(" ", $product["name"]); 
            $other1 = $other[0]; 
            header("Location: index.php?searchstring=".$other1."&x=0&y=0"); 
        } 
        else

Поменять на это:
PHP:
		else if ( $product["enabled"] == 0 )
		{
/*****************************************************************************
 *                               Начало                                      *
 *****************************************************************************/
		function _getUrlToNavigate2()
		{
			$url = "index.php?productID=".$_GET["productID"];
			return $url;
		}
		function _getUrlToSort2()
		{
			$url = "index.php?productID=".$_GET["productID"];
			if ( isset($_GET["offset"]) )
				$url .= "&offset=".$_GET["offset"];
			if ( isset($_GET["show_all"]) )
				$url .= "&show_all=".$_GET["show_all"];
			return $url;
		}
		function _sortSetting2( &$smarty, $urlToSort )
		{
			$sort_string = STRING_PRODUCT_SORT;
			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
			$smarty->assign( "string_product_sort", $sort_string );
		}

			$other = explode(" ", $product["name"]);
			$other0 = explode("-", $other[0]);
			$other1 = $other0[0];

		$qqq = db_query("SELECT categoryID, parent FROM ".CATEGORIES_TABLE." WHERE categoryID=".$product["categoryID"]) or die (db_error());
		$row_11 = db_fetch_row($qqq);
			if ($row_11[1] == 1)
			{
			$category_id_for_seach = $row_11[0];
			}
			else
			{
			$category_id_for_seach = $row_11[1];
			}
		$searchstrings = array();
		$searchstrings[] = $other1;
		$smarty->hassign( "searchstrings", $searchstrings );
		
		$callBackParam	= array();
		$products		= array();
		$callBackParam["search_simple"] = $searchstrings;
		
		if ( isset($category_id_for_seach) ) 
		{
			$callBackParam["categoryID"] = $category_id_for_seach;
			$callBackParam["searchInSubcategories"] = 1;
		}
		
		$countTotal = 0;
		$navigatorHtml = GetNavigatorHtml( 
					_getUrlToNavigate2(), CONF_PRODUCTS_PER_PAGE, 
					'prdSearchProductByTemplate', $callBackParam, 
					$products, $offset, $countTotal );
		
		if ( CONF_PRODUCT_SORT == '1' )
			_sortSetting2( $smarty, _getUrlToSort2() );
		
		$smarty->assign( "products_to_show",  $products );
		$smarty->assign( "products_found", $countTotal );
		$smarty->assign( "products_to_show_count", $countTotal );
		$smarty->assign( "search_navigator", $navigatorHtml );
		$nok[0] = $product["name"];
		$nok[1] = show_price( $product["Price"] );
		$nok[2] = TEXT_ABOUT_OUT_PRODUCT;
		$text_off = "<table width='90%' border=0 cellspacing=0 cellpadding=0><tr><td width=200 rowspan=3 align=center>&nbsp;</td><td height=40 valign=middle><h1>".$nok[0]."</h1></td></tr><tr><td height=40 valign=middle><span style='color:#ed7a14;font-size:12pt;font-weight:bold;'>Цена: ".$nok[1]."</span></td></tr><tr><td valign=middle>".$nok[2]." <img src='znak.jpg'></td></tr></table>";
		$text_off .= TEXT_ABOUT_OFF_PRODUCT;
		$text_off .= TEXT_SEE_OTHER_PRODUCT;
		
		
		$smarty->assign( "text_null_enable_product", $text_off );
		$smarty->assign( "main_content_template", "search_simple.tpl.html" );


/*****************************************************************************
 *                                   - END                                   *
 *****************************************************************************/
		}
		else
По сути мы затянули поиск в саму карточку товара. Адрес страницы не теряем. Только появляется дополнительная ссылки при большом результате поиска.
 
гм, что то не так с 2 вариантом, заменил как написано... пустая страница. ошибок не каких нет...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху