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

Brett_pitt

Писатель
Регистрация
14 Сен 2008
Сообщения
5
Реакции
0
Как для каждого пользователя, показывать его последние посещенные товары
 
Можно сделать это - только если вести лог файл перемещения по товарам юзера! в БД это делать будет слишком жирные запросы! Остается делать это через текстовый файл например! Реализация не сложная (кратко)(при просмотре товара происходит обращение к функции, функция регистрирует пользователя по сессии или по логину в зависимости как нужно сделать! Далее происходит запись в файл с именем сессии или логина юзера! Ну а потом соот. производиться форматированный вывод файла!)
 
Можно сделать это - только если вести лог файл перемещения по товарам юзера! в БД это делать будет слишком жирные запросы! Остается делать это через текстовый файл например! Реализация не сложная (кратко)(при просмотре товара происходит обращение к функции, функция регистрирует пользователя по сессии или по логину в зависимости как нужно сделать! Далее происходит запись в файл с именем сессии или логина юзера! Ну а потом соот. производиться форматированный вывод файла!)
такое только на сессиях стоит организовать, строить подобное на записи в бд нецелесообразно
 
а если на ссесиях, то адресная строка изменится? ммм я так понимаю... сессии записываются в ней... сейчас они у меня отключены...
 
а если на ссесиях, то адресная строка изменится? ммм я так понимаю... сессии записываются в ней... сейчас они у меня отключены...
у тебя отключено отображение сессии в адресной строке.
если бы ты полностью прибил сессии то твои клиенты не смогли бы делать заказы.

З.Ы. Адресная строка не изменяется
 
а если на ссесиях, то адресная строка изменится? ммм я так понимаю... сессии записываются в ней... сейчас они у меня отключены...
Вот реализация последних просмотренных товаров на сессиях только никто мне так и нед ответ на вопрос каким образом.
 
на скорую руку реализовал таким образом
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[ 1 ];
			}
			else
			{
				$product["thumbnail"] = "";
			}
            if(!$this_product||$this_product!=$product["productID"]) $product_list[] = $product;
        }
return $product_list;
}
// Добавить продукт в сессию
if (isset($productID) && $productID>=0 &&
		!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);
}
?>
 
Я так понял ету часть кода впихаем в индекс пхп, а в шаблон вводим переменной
PHP:
{$product_list} или {$last_view_products}
Но результата нет.
Можно по подбробней написать как приминить функц.
 
ненужно засовывать код в индекс, это некрасиво :)
помещаем 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}

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

Еще раз спс. ;)
 
Назад
Сверху