ECCUBEのカスタマイズ開発情報(その2)


ユーザが閲覧した商品を記録する(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についての問い合わせはこちらです。

ECCUBEトップにもどる