查看: 1934|回复: 4

[程序开发] PHPCMS V9 跨栏目模型相关关键词调用列表

[复制链接]
发表于 2015-6-29 10:48:23 | 显示全部楼层 |阅读模式
phpcms的相关关键词做的不是很好。
只能调用同一模型下的相关词新闻列表
phpcms\modules\content\classes\content_tag.class.php
  1. public function keywordc($data) {

  2.                 $keywords = str_replace('%', '',$data['keywords']);               
  3.                 if(!$keywords) return false;
  4.                 $keywords = str_replace(',', ' ',$keywords);
  5.                 $keywords_arr = explode(' ',$keywords);
  6.                 $limit=$data['limit']+count($keywords_arr);
  7.                 $key_array = array();
  8.                 $number = 0;
  9.                 $i =1;
  10.                 $contentid=        $data['id']."-".$data['modelid'];
  11.                 foreach ($keywords_arr as $_k) {
  12.                         $this->db->table_name = 'v9_keyword';
  13.                         $d=$this->db->get_one(array('keyword'=>$_k));
  14.                         if($d){       
  15.                        
  16.                                 $dat=$this->key_cont($d['id'],$limit,$number,$contentid);
  17.                                 $number+=$d['videonum'];
  18.                                 $key_array=array_merge($key_array,$dat);

  19.                                 if($limit<$number) break;
  20.                         }
  21.                        
  22.                 }
  23.                 $key_array=$this->unique_arr($key_array);
  24.                 return $key_array;
  25.         }
  26.        
  27.         private function key_cont($tagid,$limit,$number,$contentid){               
  28.                                
  29.                 $this->db->table_name = "v9_keyword_data";
  30.                 $num=$limit-$number;
  31.                 $tag=$this->db->select(array('tagid' => $tagid),'*',$num,'id desc');
  32.                 $array=array();
  33.                 foreach ($tag as $v) {
  34.                         if($v['contentid']!=$contentid){
  35.                                 list($id,$modelid) = explode("-",$v['contentid']);                       
  36.                                 $modelid = intval($modelid);
  37.                                 $this->db->set_model($modelid);
  38.                                 $stat = $this->db->get_one(array('id'=>$id));
  39.                                 $array[] = $stat;
  40.                         }
  41.                 }
  42.                 return $array;
  43.         }
  44.         private function unique_arr($array2D,$stkeep=false,$ndformat=true)
  45.         {
  46.                 if($stkeep) $stArr = array_keys($array2D);
  47.                 if($ndformat) $ndArr = array_keys(end($array2D));
  48.                 foreach ($array2D as $v){
  49.                         $v = join(",",$v);
  50.                         $temp[] = $v;
  51.                 }
  52.                 $temp = array_unique($temp);
  53.                 foreach ($temp as $k => $v)
  54.                 {
  55.                         if($stkeep) $k = $stArr[$k];
  56.                         if($ndformat)
  57.                         {
  58.                                 $tempArr = explode(",",$v);
  59.                                 foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
  60.                         }
  61.                         else $output[$k] = explode(",",$v);
  62.                 }
  63.                 return $output;
  64.         }
  65.        
复制代码

前台
  1.           {pc:content action="keywordc" num="10" id="$id" modelid="$modelid" keywords="$rs[keywords]"}

  2.               {loop $data $r}
  3.                   <li>·<a href="{$r[url]}" target="_blank">{$r[title]}</a><span>({date('Y-m-d',$r[inputtime])})</span></li>
  4.               {/loop}

  5.           {/pc}
复制代码


另外在统计keywords的时候由于PHPCMS v9的程序问题,导致空文本会被记录,也导致了后台新闻刷新一次就会记录一次,导致读取出来的数据条数有问题,所以这个问题必须先解决才能用以上程序,解决方法查看http://bbs.phpcms.cn/thread-880315-1-1.html
 楼主| 发表于 2015-6-29 10:51:51 | 显示全部楼层
两个关键词都调用了。而且会分别调用新闻模型和图片模型,有需要的可以改。没需要的切勿动啦,演示地址http://www.rezhixiao.cn/kuaixun/2015062874.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?点击这里注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-1 16:50:01 | 显示全部楼层
代码中有一个错误private function key_cont($tagid,$limit,$number,$contentid){               
       
        $db = pc_base::load_model('content_model');               
        $db->table_name = "v9_keyword_data";
        $num=$limit-$number;
        $tag=$db->select(array('tagid' => $tagid),'*',$num,'id desc');
        $array=array();
        foreach ($tag as $v) {
                if($v['contentid']!=$contentid){
                        list($id,$modelid) = explode("-",$v['contentid']);                       
                        $modelid = intval($modelid);
                        $db->set_model($modelid);
                        $stat = $db->get_one(array('id'=>$id),'`id`,`title`,`catid`,`url`');
                        $array[] = $stat;
                }
        }
        return $array;
}
回复 支持 反对

使用道具 举报

发表于 2015-7-19 13:40:10 | 显示全部楼层
感谢分享····
回复 支持 反对

使用道具 举报

发表于 2016-4-1 15:09:23 | 显示全部楼层
谢谢分享这两天研究一下这个代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 点击这里注册

本版积分规则

小黑屋|Archiver|phpcms网站管理系统 ( 京ICP备14011169 )

GMT+8, 2019-9-16 13:00 , Processed in 0.269730 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表