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

Тема в разделе "Shop-script", создана пользователем Zolinger, 19 май 2010.

Статус темы:
Закрыта.
Модераторы: kadurinho
  1. Zolinger

    Zolinger Постоялец

    Регистр.:
    29 сен 2008
    Сообщения:
    111
    Симпатии:
    69
    Небольшое вступление:
    Анализируя статистику отказов при заходе на сайт из поисковиков, пришел к выводу, что посетителям не нравиться когда по ссылке на товар открывается главная страница. Т.е. в случае отключения видимости товара (ВЫКЛ), SS редиректит на index.php
    Посетители в большинстве случаев просто закрывают сайт.
    В качестве альтернативного варианта предлагаю вместо главной показывать посетителю похожие товары.
    Реализовать это через внутренний поиск товаров.
    -------------------
    Решение:
    Файл product_detailed.php (includes)
    Ищем код:
    PHP:
        //show product information
        
    if (isset($productID) && $productID>=&&
            !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>=&&
            !isset(
    $_POST["add_topic"]) && !isset($_POST["discuss"]) )
        {
            
    $product=GetProduct($productID);
            if (  !
    $product  )
            {
                
    header("Location: index.php");
            }
            else if ( 
    $product["enabled"] == )
            {
                
    $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: если товара в каталоге нету (не ВЫКЛ, а удален за ненадобностью), то тогда осуществляется переход на главную.
     
    onenures, Gtvar и VenomHOLD нравится это.
  2. Zolinger

    Zolinger Постоялец

    Регистр.:
    29 сен 2008
    Сообщения:
    111
    Симпатии:
    69
    Мысль пошла дальше, шире и глубже...

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

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

    вот это:
    PHP:
            else if ( $product["enabled"] == 
            { 
                
    $other explode(" "$product["name"]); 
                
    $other1 $other[0]; 
                
    header("Location: index.php?searchstring=".$other1."&x=0&y=0"); 
            } 
            else
    Поменять на это:
    PHP:
            else if ( $product["enabled"] == )
            {
    /*****************************************************************************
     *                               Начало                                      *
     *****************************************************************************/
            
    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
    По сути мы затянули поиск в саму карточку товара. Адрес страницы не теряем. Только появляется дополнительная ссылки при большом результате поиска.
     
    VenomHOLD нравится это.
  3. VenomHOLD

    VenomHOLD

    Регистр.:
    14 мар 2009
    Сообщения:
    272
    Симпатии:
    53
    гм, что то не так с 2 вариантом, заменил как написано... пустая страница. ошибок не каких нет...
     
Статус темы:
Закрыта.