Последние просмотренные товары в SS.

Тема в разделе "Shop-script", создана пользователем Brett_pitt, 31 май 2009.

  1. Brett_pitt

    Brett_pitt Писатель

    Регистр.:
    14 сен 2008
    Сообщения:
    5
    Симпатии:
    0
    Как для каждого пользователя, показывать его последние посещенные товары
     
  2. NeoGayver

    NeoGayver

    Регистр.:
    27 авг 2008
    Сообщения:
    225
    Симпатии:
    83
    Можно сделать это - только если вести лог файл перемещения по товарам юзера! в БД это делать будет слишком жирные запросы! Остается делать это через текстовый файл например! Реализация не сложная (кратко)(при просмотре товара происходит обращение к функции, функция регистрирует пользователя по сессии или по логину в зависимости как нужно сделать! Далее происходит запись в файл с именем сессии или логина юзера! Ну а потом соот. производиться форматированный вывод файла!)
     
  3. Welho®

    Welho® Предвестник пьянки

    Регистр.:
    4 дек 2007
    Сообщения:
    855
    Симпатии:
    331
    такое только на сессиях стоит организовать, строить подобное на записи в бд нецелесообразно
     
  4. sasa82

    sasa82 Постоялец

    Регистр.:
    10 мар 2009
    Сообщения:
    109
    Симпатии:
    5
    а если на ссесиях, то адресная строка изменится? ммм я так понимаю... сессии записываются в ней... сейчас они у меня отключены...
     
  5. FLINT

    FLINT А пофлудить?о_О

    Регистр.:
    23 июл 2007
    Сообщения:
    429
    Симпатии:
    176
    у тебя отключено отображение сессии в адресной строке.
    если бы ты полностью прибил сессии то твои клиенты не смогли бы делать заказы.

    З.Ы. Адресная строка не изменяется
     
  6. shadow2k

    shadow2k Создатель

    Регистр.:
    3 янв 2008
    Сообщения:
    45
    Симпатии:
    3
    Вот реализация последних просмотренных товаров на сессиях www.triabc.ru только никто мне так и нед ответ на вопрос каким образом.
     
  7. korg7

    korg7 Читатель

    Регистр.:
    14 дек 2008
    Сообщения:
    13
    Симпатии:
    9
    на скорую руку реализовал таким образом
    PHP:
    <?php
    define
    ('LAST_ITEMS_LIMIT'10); // лимит выводимых позиций
    function get_product_list($item_list,$limit "all"$this_product FALSE)
    {
    $product_list = array();
    if((
    $limit=="all")||($limit>count($item_list)))$limit count($item_list)-1;
            for (
    $i=0;$i<=$limit;$i++)
            {
               
    $product GetProduct($item_list[$i]);
              
    // get picture
              
    if ( !is_null($product["default_picture"]) )
                {
                    
    $picture db_query("select filename, thumbnail, enlarged from ".
                        
    PRODUCT_PICTURES." where photoID=".$product["default_picture"] );
                    
    $picture_row db_fetch_row$picture );
                }
                else
                {
                    
    $picture db_query(
                        
    "select filename, thumbnail, enlarged, photoID from ".PRODUCT_PICTURES.
                            
    " where productID='".$product["productID"]."'" );
                    if ( 
    $picture_row db_fetch_row($picture) )
                        
    $product["default_picture"]=$picture_row["photoID"];
                    else
                        
    $picture_row=null;
                }
                if ( 
    $picture_row )
                {
                    
    $product["thumbnail"] = $picture_row];
                }
                else
                {
                    
    $product["thumbnail"] = "";
                }
                if(!
    $this_product||$this_product!=$product["productID"]) $product_list[] = $product;
            }
    return 
    $product_list;
    }
    // Добавить продукт в сессию
    if (isset($productID) && $productID>=&&
            !isset(
    $_POST["add_topic"]) && !isset($_POST["discuss"]))
    {
            if(isset(
    $_SESSION["last_items_view"])&&$_SESSION["last_items_view"]!="")
            {
                    
    $item_list array_unique(explode(",",$_SESSION["last_items_view"]));
                    
    $item_list_sort = array();
                    foreach (
    $item_list as $item)
                    {
                        if(
    $item!=$productID$item_list_sort[]=$item;
                    }
                
    $item_list_sort[] = $productID;
                
    $_SESSION["last_items_view"] = implode(",",$item_list_sort);
            } else
            {
                
    $_SESSION["last_items_view"] = $productID;
            }
    }
    // Вывести продукты из сессии
    if(isset($_SESSION["last_items_view"])&&$_SESSION["last_items_view"]!="")
    {
    $product_id_list explode(",",$_SESSION["last_items_view"]);
    if(isset(
    $productID)) $product_list get_product_list(array_reverse($product_id_list),LAST_ITEMS_LIMIT,$productID);
    else 
    $product_list get_product_list(array_reverse($product_id_list),LAST_ITEMS_LIMIT,FALSE);
    $smarty->assign("last_view_products",$product_list);
    }
    ?>
     
    nafanyaa и vovazilvova нравится это.
  8. vovazilvova

    vovazilvova Создатель

    Регистр.:
    6 июн 2009
    Сообщения:
    30
    Симпатии:
    5
    Я так понял ету часть кода впихаем в индекс пхп, а в шаблон вводим переменной
    PHP:
    {$product_listили {$last_view_products}
    Но результата нет.
    Можно по подбробней написать как приминить функц.
     
  9. korg7

    korg7 Читатель

    Регистр.:
    14 дек 2008
    Сообщения:
    13
    Симпатии:
    9
    ненужно засовывать код в индекс, это некрасиво :)
    помещаем php код в файл
    /includes/last_items_view.php
    в темплейтах выводим список позиций в виде
    PHP:
    {if $last_view_products// если есть просмотренные позиции
    {section name=i loop=$last_view_products// выводим позиции
    {if $last_view_products[i].thumbnail// если есть картинка
    <img src="/products_pictures/{$last_view_products[i].thumbnail}">
    {/if}
    {
    $last_view_products[i].name//название продукта и т.п.
    {$last_view_products[i].productID//название номер продукта
    // вобщем все обычные свойства
    {/section}
    {/if}
    обновил в посте выше код, теперь он поумнее.
     
    alexander-x, vvdek, nafanyaa и ещё 1-му нравится это.
  10. vovazilvova

    vovazilvova Создатель

    Регистр.:
    6 июн 2009
    Сообщения:
    30
    Симпатии:
    5
    Да, типерь все отлично работает.
    Вопрос:
    1. Просмотриные товары запис. в сесию - как ето скажетса на скорости работы магазина? (если пользователей много).
    2. Можно как то вывести кнопочку для очистки сесии, тоисть чтоб пользователь мог очистить список товаров каторые просмотрел?.

    Еще раз спс. ;)
     
    max8888 нравится это.