ユーザが閲覧した商品を記録する(Ver2.11/2.12)
ユーザが閲覧した商品を記録するには、Cookieでクライアントに記録をする。
action()に以下のソースを記述する。
//Cookieに保存数できる商品数
$cnt_lmt = 12;
//閲覧した商品idをCookieに登録
$this->Get_ItemHistory($cnt_lmt);
以下のメソッドを追記する。
/**
* 閲覧した商品idをCookieに登録
*/
function Get_ItemHistory($cnt_lmt){
$objProduct = new SC_Product_Ex();
$cnt = 0;
// ページを再読み込み後に表示
if(isset($_COOKIE[‘product’])){
foreach($_COOKIE[‘product’] as $name => $value){
$objQuery = new SC_Query();
//DBから一覧表示用商品情報取得
$arrRet = $objProduct->getDetail($value);
//テンプレートにデータを伝達
$this->arrItemHistory[$cnt] = $arrRet;
$cnt = $cnt+1;
}
}
// Cookieに重複しているデータがないか判定
$duplicateFlg = true;
foreach($_COOKIE[‘product’] as $name => $value){
if($value == $_GET[‘product_id’]){
$duplicateFlg = false;
}
}
// 重複していない場合、Cookieに保存
if($duplicateFlg){
// 設定件数以下だったら
if($cnt < $cnt_lmt){
$cnt = $cnt + 1;
setcookie("product[" . $cnt ."]", $_GET['product_id'], time()+60*60*24*30, “/”);
} else {
$reNum = 1;
foreach($_COOKIE[‘product’] as $name => $value){
if($reNum > 1){
$setNum = $reNum – 1;
setcookie(“product[” . $setNum . “]”, $value, time()+60*60*24*30, “/”);
}
$reNum = $reNum + 1;
}
setcookie(“product[“.$cnt_lmt.”]”, $_GET[‘product_id’], time()+60*60*24*30, “/”);
}
}
}
time()+60*60*24*30 Cookieでいつまで記録するか設定する。
ECCUBEについての問い合わせはこちらです。