首页 > CMS > PhpCMS > 正文

【phpcms-v9】phpcms-v9中将一个站点下的文章内容完美的推送到

2024-09-10 07:15:57
字体:
来源:转载
供稿:网友

【phpcms-v9】phpcms-v9中将一个站点下的文章内容完美的推送到另一个站点下.

注意事项:

1.要将当前站点下的文章内容推送到另一个站点下,即:content字段的值,默认情况下此content的内容没有推送到另一个站点下的附表中.

2.将当前站点下的文章内容推送到另一个站点下的主表时,将islink字段的值设置为0,代表不是尾部链接.

3.content字段的值在附表中,所有要查询附表,默认情况下只查询了主表.

完整代码如下:

  1. <?php   
  2. /**  
  3.  *  position_api.class.php 推荐至栏目接口类  
  4.  *  
  5.  * @copyright           (C) 2005-2010 PHPCMS  
  6.  * @license             http://www.phpcms.cn/license/  
  7.  * @lastmodify          2010-10-14  
  8.  */   
  9.    
  10. defined('IN_PHPCMS'or exit('No permission resources.');   
  11.    
  12. class push_api {   
  13.     private $db$pos_data//数据调用属性   
  14.        
  15.     public function __construct() {   
  16.         $this->db = pc_base::load_model('content_model');  //加载数据模型   
  17.     }   
  18.        
  19.     /**  
  20.      * 接口处理方法,参数1:要推送的文章数组        参数2:旧的模型id及旧的栏目id  
  21.      * @param array $param 属性 请求时,为模型、栏目数组。提交添加为二维信息数据 。例:array(1=>array('title'=>'多发发送方法', ....))  
  22.      * @param array $arr 参数 表单数据,只在请求添加时传递。 例:array('modelid'=>1, 'catid'=>12);   
  23.      */   
  24.     public function category_list($param = array(), $arr = array()) {   
  25.         //确认推送按钮   
  26.         if ($arr['dosubmit']) {   
  27.             $id = $_POST['id'];//要批量推送的文章id,如:39|38|37   
  28.             if(emptyempty($id)) return true;   
  29.             $id_arr = explode('|',$id);//要批量推送的文章id数组   
  30.             if(count($id_arr)==0) return true;   
  31.             $old_catid = intval($_POST['catid']);//旧栏目id   
  32.             if(!$old_catidreturn true;   
  33.             $ids = $_POST['ids'];//推送栏目,如:6|68   
  34.             if(emptyempty($ids)) return true;   
  35.             $ids = explode('|'$ids);//推送栏目id数组   
  36.             $siteid = intval($_POST['siteid']);//站点id   
  37.             $siteids = getcache('category_content','commons');//所有栏目对应的站点id   
  38.             $oldsiteid = $siteids[$old_catid];//旧站点id   
  39.             $this->categorys = getcache('category_content_'.$oldsiteid,'commons');//旧站点下所有栏目信息   
  40.    
  41.             $modelid = $this->categorys[$old_catid]['modelid'];//旧栏目所属的模型id   
  42.             $this->db->set_model($modelid);//根据模型id设置对应的模型表   
  43.             $tablename = $this->db->table_name;   
  44.             $this->hits_db = pc_base::load_model('hits_model');//点击率统计表   
  45.             foreach($id_arr as $id) {//要批量推送的文章id数组   
  46.                 $this->db->table_name = $tablename;//模型表   
  47.                 $r = $this->db->get_one(array('id'=>$id));//根据当前文章id获取该文章详细信息   
  48.                    
  49.                 //weiyanhui添加   
  50.                 //附属表      
  51.                 $this->db->table_name = $this->db->table_name.'_data';   
  52.                 $r2 = $this->db->get_one(array('id'=>$id));//内容字段在附表中   
  53.                 if($r2) {   
  54.                     $r = array_merge($r,$r2);   
  55.                 } else {   
  56.                     $r = $r;   
  57.                 }   
  58.                 //weiyanhui添加结束   
  59.                    
  60.                    
  61.                 $linkurl = preg_match('/^http://///',$r['url']) ? $r['url'] : siteurl($siteid).$r['url'];   
  62.                 foreach($ids as $catid) {//推送栏目,如:6|68   
  63.                     $siteid = $siteids[$catid];//推送到哪个站点id下的栏目   
  64.                     $this->categorys = getcache('category_content_'.$siteid,'commons');//推送站点下所有的栏目信息   
  65.                     $modelid = $this->categorys[$catid]['modelid'];//推送栏目所属模型id   
  66.                     $this->db->set_model($modelid);//根据模型id设置对应的模型表   
  67.                         $newid = $this->db->insert(   
  68.                         array('title'=>$r['title'],//标题   
  69.                             'style'=>$r['style'],   
  70.                             'thumb'=>$r['thumb'],//缩略图   
  71.                             'keywords'=>$r['keywords'],//关键词   
  72.                             'description'=>$r['description'],//描述   
  73.                             'status'=>$r['status'],//状态   
  74.                             'catid'=>$catid,//栏目id   
  75.                             'url'=>$linkurl,//旧的链接地址   
  76.                             'sysadd'=>1,//系统添加   
  77.                             'username'=>$r['username'],//作者   
  78.                             'inputtime'=>$r['inputtime'],//发布时间   
  79.                             'updatetime'=>$r['updatetime'],//更新时间   
  80.                             //'islink'=>1 //默认值为1:外部链接   
  81.                             'islink'=>0 //weiyanhui添加   
  82.                         ),true);//将文章内容发布到推送栏目,并返回新插入的文章id   
  83.                         $this->db->table_name = $this->db->table_name.'_data';//模型附表   
  84.                         //将文章内容推送到其它站点后,将islink字段值修改为0,然后再重新发布一下,即可生成文章静态页到当前站点当前栏目下   
  85.                         //思考:1-可以在附表入库前将islink字段值设置为0  2-将内容入库附表   
  86.                         //$this->db->insert(array('id'=>$newid));//新插入的文章id存储到附表中,注意:文章内容没有被存储到附表中   
  87.                         $this->db->insert(array('id'=>$newid,'content'=>$r['content']));//weiyanhui添加   
  88.                         $hitsid = 'c-'.$modelid.'-'.$newid;   
  89.                         $this->hits_db->insert(array('hitsid'=>$hitsid,'catid'=>$catid,'updatetime'=>SYS_TIME));//点击量统计表   
  90.                 }   
  91.             }   
  92.             return true;   
  93.         } else {   
  94.             $siteid = get_siteid();   
  95.             $this->categorys = getcache('category_content_'.$siteid,'commons');   
  96.             $tree = pc_base::load_sys_class('tree');   
  97.             $tree->icon = array('   │ ','   ├─ ','   └─ ');   
  98.             $tree->nbsp = '   ';   
  99.             $categorys = array();   
  100.             $this->catids_string = array();   
  101.             if($_SESSION['roleid'] != 1) {   
  102.                 $this->priv_db = pc_base::load_model('category_priv_model');   
  103.                 $priv_result = $this->priv_db->select(array('action'=>'add','roleid'=>$_SESSION['roleid'],'siteid'=>$siteid,'is_admin'=>1));   
  104.                 $priv_catids = array();   
  105.                 foreach($priv_result as $_v) {   
  106.                     $priv_catids[] = $_v['catid'];   
  107.                 }   
  108.                 if(emptyempty($priv_catids)) return '';   
  109.             }   
  110.    
  111.             foreach($this->categorys as $r) {   
  112.                 if($r['siteid']!=$siteid || $r['type']!=0) continue;   
  113.                 if($_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) {   
  114.                     $arrchildid = explode(',',$r['arrchildid']);   
  115.                     $array_intersect = array_intersect($priv_catids,$arrchildid);   
  116.                     if(emptyempty($array_intersect)) continue;   
  117.                 }   
  118.                 if($r['child']) {   
  119.                     $r['checkbox'] = '';   
  120.                     $r['style'] = 'color:#8A8A8A;';   
  121.                 } else {   
  122.                     $checked = '';   
  123.                     if($typeid && $r['usable_type']) {   
  124.                         $usable_type = explode(','$r['usable_type']);   
  125.                         if(in_array($typeid$usable_type)) {   
  126.                             $checked = 'checked';   
  127.                             $this->catids_string[] = $r['catid'];   
  128.                         }   
  129.                     }   
  130.                     $r['checkbox'] = "<input type='checkbox' name='ids[]' value='{$r[catid]}' {$checked}>";   
  131.                     $r['style'] = '';   
  132.                 }   
  133.                 $categorys[$r['catid']] = $r;   
  134.             }  //开源代码Vevb.com 
  135.             $str  = "<tr>   
  136.                         <td align='center'>/$checkbox</td>   
  137.                         <td style='/$style'>/$spacer/$catname</td>   
  138.                     </tr>";   
  139.             $tree->init($categorys);   
  140.             $categorys = $tree->get_tree(0, $str);   
  141.             return $categorys;   
  142.         }   
  143.  }   
  144. }   
  145.  ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表