您当前的位置:首页 > 帝国插件

使用Cookie方法实现最近浏览过的信息调用

来源:帝国CMS插件发布者:帝国CMS模板网时间:2010-05-11收藏本页

 调用最近浏览过的商品或信息

把userfun.php文件复制到e/class/userfun.php覆盖原来的文件
把ShowInfo.php文件复制到e/action/ShowInfo.php覆盖原来的文件

栏目
在模板管理-标签-标签管理-增加标签,输入以下信息

标签名:最近浏览过的
标签符号:darkcircleming
函数名:darkcircleming
标签格式:[darkcircleming]COOKIE变量名,标题截取数[/darkcircleming]

在添加栏目的时候,在生成选项选择内容页模式为:动态页面

以下为userfun.php的内容
<?
//获得当前格林威治时间的时间戳
function gmtime()
{
    return (time() - date('Z'));
}

//记录最近浏览
function recently_viewed($id,$tbname){

   if (!empty($_COOKIE[$tbname]))
   {
       $history = explode(',', $_COOKIE[$tbname]);
       array_unshift($history, $id);
       $history = array_unique($history);

       while (count($history) > 10)
       {
           array_pop($history);
       }

       setcookie($tbname, implode(',', $history), gmtime() + 3600 * 24 * 30);
   }
   else
   {
       setcookie($tbname, $id, gmtime() + 3600 * 24 * 30);
   }
}

//调用最新浏览过的信息
function darkcircleming($table,$strlen){
    global $empire,$public_r,$fun_r,$dbtbpre;
       
        $where = db_create_in($_COOKIE[$table], 'id');
         $sql = $empire->query("select title,classid,id from {$dbtbpre}ecms_{$table} where $where order by istop desc,newstime desc,id desc limit 7");
        while($r=$empire->fetch($sql))
        {
           $title=sub($r[title],0,$strlen,false);
           $title=DoTitleFont($r[titlefont],$title);
           $titleurl=sys_ReturnBqTitleLink($r);
           $list .= "<li>·<a href="".$titleurl."" target="_blank" title="".$r[title]."">".$title."</a></li>";
        }
    echo "<ul>".$list."</ul>";
}

/**
* 创建像这样的查询: "IN('a','b')";
*
* @access   public
* @param    mix      $item_list      列表数组或字符串
* @param    string   $field_name     字段名称
*
* @return   void
*/
function db_create_in($item_list, $field_name = '')
{
    if (empty($item_list))
    {
        return $field_name . " IN ('') ";
    }
    else
    {
        if (!is_array($item_list))
        {
            $item_list = explode(',', $item_list);
        }
        $item_list = array_unique($item_list);
        $item_list_tmp = '';
        foreach ($item_list AS $item)
        {
            if ($item !== '')
            {
                $item_list_tmp .= $item_list_tmp ? ",'$item'" : "'$item'";
            }
        }
        if (empty($item_list_tmp))
        {
            return $field_name . " IN ('') ";
        }
        else
        {
            return $field_name . ' IN (' . $item_list_tmp . ') ';
        }
    }
}
?>

ShowInfo.php 为动态内容页
在282行增加
recently_viewed($add[id],$class_r[$add[classid]][tbname]);