帝国CMS实现猜你喜欢功能

我官方网站原文:http://www.panshy.com/article/Sort_anothar/another/2014-04-14/2485.php

为什么要使用猜你喜欢功能,原因是:现在各大网站都有猜你喜欢功能,而且使用上猜你喜欢功能后还能给网站带来不少的流量,所以我就想为自己的网站加上猜你喜欢功能。
帝国CMS是没有现成的猜你喜欢功能的,但是有相关链接这个功能,然而帝国的相关链接这个功能不能跨表进行相关链接,更不能将标题进行中文分词,造成的相关链接并不是很好用。
根据观察各大网站的猜你喜欢功能,他们大部份也是使用相关链接来做的,为了能更好的体现出猜你喜欢功能,我的做法是使用手动添加和自动方式相结合的方式进行
手动添加就是新增一个字段,添加上这个文章相关的其它文章链接,这样做有什么好处呢,因为自动的有时不准,而且不能使用站外链接我的网站就有三个,所以加上这个功能是最合适的,三个网站可以相互增加外链。

同时带来流量。并且手工添加的认为是最靠前的,权重最高。自动获取的不一定靠前这就是为什么这个字段的原因。自动获取是改造了帝国的相关链接功能,但实现了跨多个模型数据表,同时引用了中文分词,将标题进行分词后再查找。

下面跟着我来实现帝国CMS猜你喜欢功能吧:

首先添加手动功能的猜你喜欢

首先增加一个字段,将你认为要实现此功能的数据表加上这个字段,我的网站是两个数据表
www_panshy_com_ecms_download
www_panshy_com_ecms_pansharticle
点击 系统 -> 数据表与系统模型 -> 管理数据表
帝国CMS猜你喜欢功能实现图1.jpg
右侧找到你想要添加字段的表,点管理字段,出来窗体后,点添加字段,按下图的方式增加,记得是副表就行

帝国CMS猜你喜欢功能实现图2.jpg

加完字段后,点击管理系统模型,按下图设置,记得最后钩选上 自动生成表单模板 最后确定即可

帝国CMS猜你喜欢功能实现图3.jpg

成功后增加信息时,将出现如下图所示的输入框

帝国CMS猜你喜欢功能实现图4.jpg
以上就是手工实现的猜你喜欢必须的工作,现在开始说自动的,也就是跨表实现相关链接

找到 \e\class 目录下的userfun.php文件,加入以下代码

复制代码
  1. // 计算中文字符串长度  
  2. function utf8_strlen($string = null)  
  3. {  
  4.   // 将字符串分解为单元  
  5.   preg_match_all("/./us"$string$match);  
  6.   // 返回单元个数  
  7.   return count($match[0]);  
  8. }  
  9.   
  10. //同样的URL在数组中返回true  
  11. function GetOtherLink_in_outarr_list(&$outarr_list$strurl)  
  12. {  
  13.     foreach ($outarr_list as $val)  
  14.     {     
  15.       ifstristr($val[1], $strurl))  
  16.       {  
  17.         return true;  
  18.       }  
  19.        
  20.      // if (in_array($strurl, $val))   
  21.       //{  
  22.        //    return true;  
  23.       //}  
  24.     }  
  25.       
  26.     return false;  
  27. }  
复制代码
  1. function user_combo_otherlike_html(&$outarr_list$strrows , $beginhtml$endhtml)  
  2. {  
  3.     $str = "";  
  4.     $str_list = "";  
  5.       
  6.     $arr_count = count($outarr_list);  
  7.       
  8.     if$arr_count < 1 )  
  9.     {  
  10.         $str_list = $beginhtml."暂无内容".$endhtml;  
  11.     return $str_list;  
  12.     }  
  13.   
  14.    $rows_list = explode(","$strrows);  
  15.    $rows_count = count($rows_list);  
  16.     if$rows_count != 2)  
  17.     {  
  18.         $str_list = $beginhtml."暂无内容".$endhtml;  
  19.     return $str_list;  
  20.     }  
  21.       
  22.    $index = $rows_list[0];  
  23.    $num = $rows_list[1];  
  24.       
  25.    if$index < 0 || $index >= $arr_count)  
  26.    {  
  27.      $str_list = $beginhtml."暂无内容".$endhtml;  
  28.     return $str_list;  
  29.    }  
  30.   
  31.   
  32.    for($i=$index$i<$arr_count$i++)  
  33.    {  
  34.         $arr_temp = $outarr_list[$i];  
  35.           ifcount($arr_temp)  == 2 )  
  36.           {  
  37.                 $str_link = '<a target=_blank href="';  
  38.           $str_link .= $arr_temp[1];  
  39.           $str_link .= '" title="';  
  40.           $str_link .= $arr_temp[0];  
  41.           $str_link .= '">';  
  42.           $str_link .= esub($arr_temp[0], 40, '...');  
  43.           $str_link .= '</a>';  
  44.   
  45.           $str = $beginhtml.$str_link.$endhtml;  
  46.           $str_list .= $str;  
  47.           --$num;  
  48.           if$num <= 0 )  
  49.           {  
  50.             break;  
  51.           }  
  52.           }  
  53.    }  
  54.      
  55.    ifstrlen($str_list) < 1 )  
  56.    {  
  57.     $str_list = $beginhtml."暂无内容".$endhtml;  
  58.    }  
  59.      
  60.    return $str_list;  
  61. }  
  62.   
  63.   
  64.     include ( "sphinxapi.php" );  
  65. function user_GetOtherLinkInfo(&$outarr_list$num$tbname$str_not_tagcid)  
  66. {  
  67.   global $navinfor,$empire,$dbtbpre,$class_r ;  
  68.   
  69.  $outarr_list = array();  
  70.   $arr_temp = array();  
  71.     
  72.   $strcai_like = $navinfor['cai_like'];  
  73.   //先处理用户手工添加的,认为这是最优先的  
  74.   $cai_like_list = explode('[####]'$strcai_like);  
  75.   $cai_like_count = count($cai_like_list);  
  76.   
  77.   if$cai_like_count > 0 )  
  78.   {  
  79.       foreach ($cai_like_list as $val)  
  80.       {     
  81.         $arr_temp = explode('[##]'$val);  
  82.         ifcount($arr_temp) == 2 )  
  83.         {  
  84.           if( !GetOtherLink_in_outarr_list($outarr_list$arr_temp[1]))  
  85.           {  
  86.             array_push($outarr_list$arr_temp);  
  87.             --$num;  
  88.           }  
  89.         }  
  90.       }  
  91.    }  
  92.   
  93.   //再处理tags与关键字相同的记录  
  94.   $num = read_tags_key_OtherLink($tbname$outarr_list$num$str_not_tagcid);  
  95.   
  96. }  
  97.    
  98.    
  99. function read_Sphinx_cai_like($tbname, &$outarr_list$num)  
  100. {  
  101.   global $navinfor,$empire,$dbtbpre,$class_r ;  
  102.   
  103.    ifstrlen($tbname) < 1 || $num < 1) return $num;  
  104.     
  105.    $arr_tbname = explode(','$tbname);  
  106.    $tbname_count = count($arr_tbname);  
  107.   
  108.   
  109.    //平均分配记录数到各表,这里是用表为一个单位  
  110.   $lvalue = (int)($num / $tbname_count);  
  111.   $lmod = (int)($num % $tbname_count);  
  112.   
  113.   $arr_type_list = array();  
  114.   $arr_type = array();  
  115.   
  116.   
  117.   $curdata_id = $navinfor['id'];//当前记录ID  
  118.   $cur_tbname = $class_r[$navinfor['classid']]['tbname'];//当前文章表名      
  119.     
  120.   $next_num = 0;  
  121.    
  122.    $sph = new SphinxClient();            //实例化 sphinx 对象  
  123.   $sph->SetServer('localhost', 9312);    //连接9312端口  
  124. $keywords = $sph->BuildKeywords( "aaaa",    "www_panshy_com", false );  
  125. return ;  
  126.           
  127.   foreach ($arr_tbname as $val)  
  128.   {  
  129.     $arr_type["dbname"] = $val;  
  130.     $arr_type["num"] = $lvalue;  
  131.     if$lmod > 0 )  
  132.     {  
  133.      ++$arr_type["num"];  
  134.      --$lmod;  
  135.     }  
  136.     $getcount = $arr_type["num"];//当前表最高记录数  
  137.     $getcount += $next_num;  
  138.     $next_num = 0;  
  139.     if$getcount < 1 ) { continue ; }  
  140.     $index_name = "";  
  141.    ifstrcasecmp($arr_type["dbname"], "pansharticle") == 0 )  
  142.    {  
  143.       $index_name = "www_panshy_com";  
  144.    }  
  145.    else ifstrcasecmp($arr_type["dbname"], "download") == 0 )  
  146.    {  
  147.        $index_name = "www_panshy_com_down";  
  148.    }  
  149.    else  
  150.    {  
  151.      $next_num =  $getcount;  
  152.      continue ;  
  153.    }  
  154.   
  155.     
  156.    $keywords = $sph->BuildKeywords( $navinfor['title'],     $index_name, false );  
  157.      
  158.     $str_not_id = ""//不需要查出来的ID  
  159.     ifstrcasecmp($arr_type["dbname"], $cur_tbname) == 0 )  
  160.     {  
  161.       $str_not_id = $curdata_id;  
  162.     }  
  163.   
  164.     //为tags分配的记录数如果有没处理完的传给key  
  165.     $keygetcount = $getcount;  
  166.     if$keygetcount > 0 )  
  167.     {  
  168.         $str_key_sql_keyboard = "";  
  169.         $str_key_sql_title = "";  
  170.         $str_key_sql = "";  
  171.       
  172.         foreach ($keywords as $keyval)  
  173.         {  
  174.           if( utf8_strlen($keyval['normalized']) > 1 )  
  175.           {  
  176.               $str_key_sql_keyboard .= " or keyboard like '%";  
  177.               $str_key_sql_keyboard .= $keyval['normalized']; 
  178.               $str_key_sql_keyboard .= "%'";  
  179.             
  180.               $str_key_sql_title .= " or title like '%";  
  181.               $str_key_sql_title .= $keyval['normalized']; 
  182.               $str_key_sql_title .= "%'";  
  183.   
  184.           }  
  185.         }  
  186.          $str_key_sql_keyboard = substr($str_key_sql_keyboard, 4);//去掉字符串前的 or 刚好4字节  
  187.          $str_key_sql_title = substr($str_key_sql_title, 4);  
  188.          $str_key_sql = $str_key_sql_keyboard." or ".$str_key_sql_title;  
  189.           
  190.       ifstrlen($str_key_sql) > 0 )  
  191.       {  
  192.         $str_sql = "select title,titleurl from {$dbtbpre}ecms_";  
  193.         $str_sql .= $arr_type['dbname'];  
  194.         $str_sql .= " where (";  
  195.         $str_sql .= $str_key_sql;  
  196.         $str_sql .= ")";  
  197.         ifstrlen($str_not_id) > 0 )  
  198.         {  
  199.           $str_sql .= " and id not in(";  
  200.           $str_sql .= $str_not_id;  
  201.           $str_sql .= ")";  
  202.         }  
  203.     
  204.         $str_sql .= " order by newstime desc limit ";  
  205.         $limit_int = $keygetcount + count($outarr_list);  
  206.         $str_sql .= $limit_int;  
  207.          
  208.         $sql = $empire->query($str_sql);  
  209.         $arr_item = array();  
  210.          
  211.         while($r=$empire->fetch($sql))  
  212.         {  
  213.             if$keygetcount < 1) break;  
  214.               
  215.            $arr_item[0] =$r['title'];  
  216.            $arr_item[1] = $r['titleurl'];  
  217.   
  218.            if( !GetOtherLink_in_outarr_list($outarr_list$arr_item[1]))  
  219.            {  
  220.               array_push($outarr_list$arr_item);  
  221.               --$keygetcount;//tags充许的记录数减少  
  222.               --$num;//c 允许获取的总记录数减少  
  223.            }  
  224.         }  
  225.         
  226.       }  
  227.     }  
  228.      
  229.      $next_num = $keygetcount;  
  230.       
  231.   }  
  232.     
  233.   return $num;  
  234. }  
  235.   
  236. //返回未处理的$num数  
  237. function read_tags_key_OtherLink($tbname, &$outarr_list$num$str_not_tagcid)  
  238. {  
  239.     global $navinfor,$empire,$dbtbpre,$class_r ;  
  240.   
  241.   ifstrlen($tbname) < 1 || $num < 1) return $num;  
  242.     
  243.    $arr_tbname = explode(','$tbname);  
  244.   $tbname_count = count($arr_tbname);  
  245.    
  246.    //平均分配记录数到各表,这里是用表为一个单位  
  247.   $lvalue = (int)($num / $tbname_count);  
  248.   $lmod = (int)($num % $tbname_count);  
  249.   
  250.   $arr_type_list = array();  
  251.   $arr_type = array();  
  252.   
  253.   $tag_str = $navinfor['infotags'];  
  254.   $curdata_id = $navinfor['id'];//当前记录ID  
  255.   $cur_tbname = $class_r[$navinfor['classid']]['tbname'];//当前文章表名  
  256.   
  257.   $sql_tags_str = str_replace(",""','"$tag_str);  
  258.   
  259. //echo "num值:".$num;  
  260.   $str_key_sql_keyboard = "";  
  261.   $str_key_sql_title = "";  
  262.   $str_key_sql = "";  
  263.   $arr_key = array();  
  264.   ifstrlen($navinfor['keyboard']) > 0 )  
  265.   {  
  266.       $arr_key = explode(','$navinfor['keyboard']);  
  267.   
  268.       ifcount($arr_key) > 0 )  
  269.       {  
  270.         foreach ($arr_key as $val)  
  271.         {  
  272.           $str_key_sql_keyboard .= " or keyboard like '%";  
  273.           $str_key_sql_keyboard .= $val;  
  274.           $str_key_sql_keyboard .= "%'";  
  275.             
  276.            $str_key_sql_title .= " or title like '%";  
  277.           $str_key_sql_title .= $val;  
  278.           $str_key_sql_title .= "%'";  
  279.         }  
  280.           
  281.         $str_key_sql_keyboard = substr($str_key_sql_keyboard, 4);//去掉字符串前的 or 刚好4字节  
  282.         $str_key_sql_title = substr($str_key_sql_title, 4);  
  283.         $str_key_sql = $str_key_sql_keyboard." or ".$str_key_sql_title;  
  284.       }  
  285.   }  
  286.   
  287.   $next_num = 0;//保存分配时没有获取的数量,  
  288.               //比如A,B表各分配了2个,但A表没得到任何数据将2传给B  
  289.     
  290.   foreach ($arr_tbname as $val)  
  291.   {  
  292.     $arr_type["dbname"] = $val;  
  293.     $arr_type["num"] = $lvalue;  
  294.     if$lmod > 0 )  
  295.     {  
  296.      ++$arr_type["num"];  
  297.      --$lmod;  
  298.     }  
  299.     $getcount = $arr_type["num"];//当前表最高记录数  
  300.     $getcount += $next_num;  
  301.     $next_num = 0;  
  302.     if$getcount < 1 ) { continue ; }  
  303.       
  304.       
  305.     //先读取tags相关链的记录,再读键值相关的记录  
  306.     //为当前表的不同类型分配允许获取的记录数,比如A表要获取tag,key这样A表的总记录数就得平分给tag,key  
  307.     $taggetcount = (int)($getcount/2);  
  308.   
  309.     if(($getcount%2) > 0 ) { ++$taggetcount;}   
  310.       
  311.     if$taggetcount < 1 ) { continue ; } //第一种获取都为0,接下来肯定不可能分配  
  312.       
  313.     $keygetcount = $getcount - $taggetcount;  
  314.     //平均分配给tags,key的数量完成  
  315.       
  316.     //echo "总数:". $getcount. " t数". $taggetcount." k数".$keygetcount." ";  
  317.       
  318.     //获取数据表的ID  
  319.     $r=$empire->fetch1("select * from {$dbtbpre}enewstable where tbname='" .$arr_type["dbname"]."'" );  
  320.     $mid = $r['mid'];  
  321.     $str_not_id = ""//不需要查出来的ID  
  322.     ifstrcasecmp($arr_type["dbname"], $cur_tbname) == 0 )  
  323.     {  
  324.       $str_not_id = $curdata_id;  
  325.     }  
  326.     $arr_item = array();  
  327.     if(!emptyempty($mid))  
  328.     {  
  329.        //获取tagid  
  330.        ifstrlen($sql_tags_str) > 0 )  
  331.        {  
  332.             $str_sql = "select tagid from {$dbtbpre}enewstags where tagname in('".$sql_tags_str"')";  
  333.             ifstrlen($str_not_tagcid) > 0)  
  334.             {  
  335.               $str_sql .= " and cid not in(";  
  336.               $str_sql .= $str_not_tagcid;  
  337.               $str_sql .= ") ";  
  338.             }  
  339.             $sql = $empire->query($str_sql);  
  340.          
  341.             $str_tag_id = "";  
  342.             while($r=$empire->fetch($sql))  
  343.             {  
  344.                 $temp_tagid = $r['tagid'];  
  345.                  if(!emptyempty($temp_tagid))  
  346.                  {  
  347.                     ifstrlen($str_tag_id) > 0 )  
  348.                     {  
  349.                        $str_tag_id .= ",";  
  350.                        $str_tag_id .=  $temp_tagid;  
  351.                     }  
  352.                     else  
  353.                     {  
  354.                       $str_tag_id =  $temp_tagid;  
  355.                     }  
  356.                  }  
  357.             }  
  358.              
  359.            $str_id_list = "";  
  360.            ifstrlen($str_tag_id) > 0 )  
  361.            {  
  362.                  $str_sql = "select {$dbtbpre}enewstagsdata.id from {$dbtbpre}enewstagsdata where ";  
  363.                  $str_sql .= "{$dbtbpre}enewstagsdata.mid=";  
  364.                  $str_sql .= $mid;  
  365.                  $str_sql .= " and tagid in(";  
  366.                  $str_sql .= $str_tag_id;  
  367.                  $str_sql .= ") order by newstime DESC limit ";  
  368.                  $str_sql .= $taggetcount;  
  369.                    
  370.                 $sql = $empire->query($str_sql);  
  371.                 while($r=$empire->fetch($sql))  
  372.                 {  
  373.                     $temp_id = $r['id'];  
  374.                      if(!emptyempty($temp_id))  
  375.                      {  
  376.                         ifstrlen($str_id_list) > 0 )  
  377.                         {  
  378.                            $str_id_list .= ",";  
  379.                            $str_id_list .=  $temp_id;  
  380.                         }  
  381.                         else  
  382.                         {  
  383.                           $str_id_list =  $temp_id;  
  384.                         }  
  385.                      }  
  386.                 }  
  387.            }  
  388.              
  389.            ifstrlen($str_id_list) > 0 )  
  390.            {  
  391.                  $str_sql = "select title,titleurl from {$dbtbpre}ecms_";  
  392.                  $str_sql .= $arr_type['dbname'];  
  393.                  $str_sql .= " where id in (";  
  394.                  $str_sql .= $str_id_list;  
  395.                  $str_sql .= ")";  
  396.                     
  397.                 ifstrlen($str_not_id) > 0 )  
  398.                 {  
  399.                   $str_sql .= " and id != ";  
  400.                   $str_sql .= $str_not_id;  
  401.                     
  402.                   $str_not_id .= ",";  
  403.                   $str_not_id .= $str_id_list;  
  404.                 }  
  405.                 else  
  406.                 {  
  407.                    $str_not_id = $str_id_list;  
  408.                 }  
  409.                   
  410.                  $str_sql .= " order by newstime DESC";  
  411.           
  412.                  $sql = $empire->query($str_sql);  
  413. //$int_i = 0;  
  414.                   while($r=$empire->fetch($sql))  
  415.                   {  
  416.                       $arr_item[0] =$r['title'];  
  417.                       $arr_item[1] = $r['titleurl'];  
  418.   
  419.                        if( !GetOtherLink_in_outarr_list($outarr_list$arr_item[1]))  
  420.                        {  
  421.                           array_push($outarr_list$arr_item);  
  422.                           --$taggetcount;  
  423.                           --$num;  
  424.                           //$int_i ++;  
  425.                             
  426.                        }  
  427.                   }  
  428.                  // echo "tags获取记录数:".$int_i." ";  
  429.            }  
  430.        }  
  431.     }  
  432.       
  433.   
  434.     //为tags分配的记录数如果有没处理完的传给key  
  435.     $keygetcount += $taggetcount;  
  436.     if$keygetcount > 0 )  
  437.     {  
  438.       ifstrlen($str_key_sql) > 0 )  
  439.       {  
  440.         $str_sql = "select title,titleurl from {$dbtbpre}ecms_";  
  441.         $str_sql .= $arr_type['dbname'];  
  442.         $str_sql .= " where (";  
  443.         $str_sql .= $str_key_sql;  
  444.         $str_sql .= ")";  
  445.         ifstrlen($str_not_id) > 0 )  
  446.         {  
  447.           $str_sql .= " and id not in(";  
  448.           $str_sql .= $str_not_id;  
  449.           $str_sql .= ")";  
  450.         }  
  451.     
  452.         $str_sql .= " order by newstime desc limit ";  
  453.         $str_sql .= $keygetcount;  
  454.           
  455.           
  456.         $sql = $empire->query($str_sql);  
  457.         $arr_item = array();  
  458.        // $int_i = 0;  
  459.         while($r=$empire->fetch($sql))  
  460.         {  
  461.            
  462.            $arr_item[0] =$r['title'];  
  463.            $arr_item[1] = $r['titleurl'];  
  464.   
  465.            if( !GetOtherLink_in_outarr_list($outarr_list$arr_item[1]))  
  466.            {  
  467.               array_push($outarr_list$arr_item);  
  468.               --$keygetcount;//tags充许的记录数减少  
  469.               --$num;//c 允许获取的总记录数减少  
  470.             //  $int_i ++;  
  471.            }  
  472.         }  
  473.        // echo "key获取记录数:".$int_i." ";  
  474.       }  
  475.     }  
  476.     //key也没有处理完就传到下一个表  
  477.      $next_num = $keygetcount;  
  478.        
  479.      // echo "向下传的值:". $next_num;  
  480.   }  
  481.   
  482.  return $num;  
  483. }  

猜你喜欢的原理

到此准备工作完成,接下来说说我实现的猜你喜欢的原理

 现在假设,你需要在你的内容页面获取14条猜你喜欢记录,其中关联到2个表模型,这里叫A,B,C三个表,当僧多粥少时,有些表是不能得到记录的。

现在有一个内容叫 ZZ 的,首先获取手工添加的,从上面添加的那个字段中获取,现在假设得到3条记录,保存起来

然后程序平均分配余下的记录数11条,A=3,B=3 ,C=3 发现还多出2条记录,那么A=4,B=4,C=3这是分配方式

现在开始查找记录,首先取A表的,上面最终分配是4条,这4条记录,要从tags和keys中获取,所以4除2 = 2  tags=2 keys=2 (注 C表=3 这种情况是 tags=2 keys=1)

程序是先获取tags相关记录,再获取keys记录的,假设在A表中 tags  只取出一条记录,余 1条记录,程序会将这一条传到keys中,这时keys = 3 然后,再次获取keys记录,最多3条

如果keys也只获取到1条,余2条,这2条会交给下一个表,B,也就是说 B = 4 + 2 = 6条记录,依此类推,处理完A,B,C三个表

程序在每次得到的记录时都会检查是不是有重的,没有的话才会将记录数减少,并将记录保存起来。

 如果发现还有没处理完的记录数,就可以调用中文分词处理程序获取相关记录。即  read_Sphinx_cai_like 函数,当然也可以把这个顺序调过来,修改相关函数就可以

注:由于使用 Sphinx 中文分词后,帝国CMS生成内容特别慢,所以这个功能暂时保留,可以自行删除上面的相关函数。大家可以关注我的网站,随时会进行这个功以的补充。

 

调用方法

 内容页代码添加,在body开头处添加

复制代码
  1. <?   
  2. $arr_outarr_list;   
  3. user_GetOtherLinkInfo($arr_outarr_list, 20, "pansharticle,download""1,2,3,4,5,6,7,8,9,10");   
  4. ?>  

其中 20 为要获取的记录数,"pansharticle,download 是要获取的表名,用逗号隔开, "1,2,3,4,5,6,7,8,9,10“ 表示不需要关联的tags类别ID

 帝国CMS猜你喜欢21.jpg帝国CMS猜你喜欢22.jpg

上图中,管理数据表中显示粗体黑色字的就是表名,管理TAG分类中的ID就是上面的ID

好啦,在你要显示的地方加入

<?php echo user_combo_otherlike_html($arr_outarr_list, "0,5", "<li>", "</li>")?>

记录是从0开始记算的,上面的20条就是0 - 19  所以 0, 5表示,从0条记录开始,取5条记录,其中,取得的每条记录使用 <li> 与 </li>包围起来

好了,到此就剩下手工添加记录的方式呢

有关手工添加猜你喜欢的方法和相关文件请关注

http://bbs.panshy.com/thread-395-1-1.html

到此帝国CMS猜你喜欢就算完成了,同时也实现了,跨表的相关链接,

虽不算完美,但也算是用最简单的办法,达到效果吧,希望有高手来完善,谢谢大家支持。

 

你可能感兴趣的:(帝国CMS实现猜你喜欢功能)