admin 发表于 2014-2-19 14:41:16

帝国CMS实现历史记录(产品浏览记录)

一:在e/class/userfun.php中加: //--------------------开始------------------
function user_SetCook($name, $id, $time = 0, $num = 10) { //cookie名称 ID 时间戳 数量
    if (!$id) {
      printerror2('不存在的记录', $_SERVER['HTTP_REFERER']);
    }
    $prodq = $id . '|';
    $projilu = getcvar($name);
    if ($projilu) {
      $prozuhe = $prodq . $projilu; //把新浏览的放在第一
      $pro_arr = explode('|', $prozuhe);
      $new_arr = array_merge(array_unique($pro_arr)); //去除重复,重新索引下标
      foreach ($new_arr as $key => $val) {
            if (($key < $num) && $val) {
                $pro.= $val . '|';
            }
      }
    } else {
      $pro = $prodq;
    }
    esetcookie($name, $pro, $time);
    //esetcookie($name,'',0);
    //print_r($_COOKIE);
   
}
function user_GetCook($name, $tbname, $num = 10) { //名称 数据表 数量
    global $empire, $dbtbpre;
    if (preg_match("/^+$/", getcvar($name))) {
      $jilu_all = substr(getcvar($name), 0, -1); //1|2|3
      $jilu_arr = explode('|', $jilu_all);
      foreach ($jilu_arr as $k => $v) {
            $jilu_idin.= (int)$v . ',';
      }
      $jilu_idin = substr($jilu_idin, 0, -1); //1,2,3
      $sql = $empire->query("select id,title,titlepic,titleurl from {$dbtbpre}ecms_{$tbname} where id in ({$jilu_idin}) order by find_in_set(id,'{$jilu_idin}') limit {$num}"); //按id in 里面的排序
      while ($jilu_r = $empire->fetch($sql)) {
            $titleurl = sys_ReturnBqTitleLink($jilu_r);
            echo '<li><a href="' . $titleurl . '">' . $jilu_r['title'] . '</a></li>'; //此处是修改样式需要图片自己加
            
      }
    } else {
      echo '暂时浏览记录!';
    }
}
//--------------------结束------------------
二:在内容页模版最上面加:
<?=user_SetCook('cookiepro',$navinfor,0,10);//cookie名称可以自己定别重复 ID 时间戳 数量 ?>
三:在要显示的地方加一句:
<?=user_GetCook('cookiepro','shop',10);//名称 数据表名 数量 ?>
页: [1]
查看完整版本: 帝国CMS实现历史记录(产品浏览记录)