【phpcms-v9】phpcms-v9中将选中的批量文章推送到推荐位、推送到专题及推送到其他栏目的功能
2012-12-07 16:09
411 查看
1.推送按钮:
![](http://img.my.csdn.net/uploads/201212/07/1354867957_7891.jpg)
2.推送弹出框:
![](http://img.my.csdn.net/uploads/201212/07/1354867972_9265.jpg)
3.push()函数:
4.modules/content/push.php推送控制器文件:
5.modules/content/classes/push_api.class.php文件分析:
例如:文章被推送到专题的情况:
![](http://img.my.csdn.net/uploads/201212/07/1354867957_7891.jpg)
2.推送弹出框:
![](http://img.my.csdn.net/uploads/201212/07/1354867972_9265.jpg)
3.push()函数:
function push() { var str = 0; var id = tag = ''; $("input[name='ids[]']").each(function() { if($(this).attr('checked')=='checked') { str = 1; id += tag+$(this).val(); tag = '|'; } }); if(str==0) { alert('<?php echo L('you_do_not_check');?>'); return false; } window.top.art.dialog({id:'push'}).close(); window.top.art.dialog({title:'<?php echo L('push');?>:',id:'push',iframe:'?m=content&c=push&action=position_list&catid=<?php echo $catid?>&modelid=<?php echo $modelid?>&id='+id,width:'800',height:'500'}, function(){var d = window.top.art.dialog({id:'push'}).data.iframe;// 使用内置接口获取iframe对象 var form = d.document.getElementById('dosubmit');form.click();return false;}, function(){window.top.art.dialog({id:'push'}).close()}); }
4.modules/content/push.php推送控制器文件:
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); pc_base::load_sys_class('push_factory', '', 0); //权限判断,根据栏目里面的权限设置检查 if((isset($_GET['catid']) || isset($_POST['catid'])) && $_SESSION['roleid'] != 1) { $catid = isset($_GET['catid']) ? intval($_GET['catid']) : intval($_POST['catid']); $this->priv_db = pc_base::load_model('category_priv_model'); $priv_datas = $this->priv_db->get_one(array('catid'=>$catid,'is_admin'=>1,'action'=>'push')); if(!$priv_datas['catid']) showmessage(L('permission_to_operate'),'blank'); } class push extends admin { public function __construct() { parent::__construct(); $this->siteid = $this->get_siteid(); /* * $_GET['module']值分析: * 1.推送到推荐位:不传递moduls参数 * 2.推送到专题:special * 3.推送到其它栏目:content */ $module = (isset($_GET['module']) && !empty($_GET['module'])) ? $_GET['module'] : 'admin'; if (in_array($module, array('admin', 'special','content'))) { /*根据$module值定位到对应的推送接口文件 * 1.推送至推荐位:调用modules/admin/classes/push_api.class.php接口文件 * 2.推荐至专题:调用modules/special/classes/push_api.class.php接口文件 * 3.推荐至其它栏目:调用modules/content/classes/push_api.class.php接口文件 */ $this->push = push_factory::get_instance()->get_api($module); } else { showmessage(L('not_exists_push'), 'blank'); } } /** * 推送选择界面 */ public function init() { if ($_POST['dosubmit']) { $c = pc_base::load_model('content_model');//实例化一个content_model对象 $c->set_model($_POST['modelid']);//模型id $info = array();//被推送的文章内容数组 $ids = explode('|', $_POST['id']);//要推送的文章id,如:39|38|37 if(is_array($ids)) { foreach($ids as $id) { $info[$id] = $c->get_content($_POST['catid'], $id);//根据栏目id及文章id获取文章内容 } } //position_list:推荐到推荐位 _push_special:推荐到专题 category_list:推荐到其它栏目 $_GET['add_action'] = $_GET['add_action'] ? $_GET['add_action'] : $_GET['action']; $this->push->$_GET['add_action']($info, $_POST);//将文章推送到其它地方 showmessage(L('success'), '', '', 'push'); } else { pc_base::load_app_func('global', 'template'); /* * $this->push分析:推送接口文件 * 1.推送至推荐位:调用modules/admin/classes/push_api.class.php接口文件 * 2.推荐至专题:调用modules/special/classes/push_api.class.php接口文件 * 3.推荐至其它栏目:调用modules/content/classes/push_api.class.php接口文件 */ if (method_exists($this->push, $_GET['action'])) { $html = $this->push->{$_GET['action']}(array('modelid'=>$_GET['modelid'], 'catid'=>$_GET['catid'])); $tpl = isset($_GET['tpl']) ? 'push_to_category' : 'push_list'; include $this->admin_tpl($tpl); } else { showmessage('CLASS METHOD NO EXISTS!', 'blank'); } } } public function public_ajax_get() { if (method_exists($this->push, $_GET['action'])) { $html = $this->push->{$_GET['action']}($_GET['html']); echo $html; } else { echo 'CLASS METHOD NO EXISTS!'; } } } ?>
5.modules/content/classes/push_api.class.php文件分析:
<?php /** * position_api.class.php 推荐至栏目接口类 * * @copyright (C) 2005-2010 PHPCMS * @license http://www.phpcms.cn/license/ * @lastmodify 2010-10-14 */ defined('IN_PHPCMS') or exit('No permission resources.'); class push_api { private $db, $pos_data; //数据调用属性 public function __construct() { $this->db = pc_base::load_model('content_model'); //加载数据模型 } /** * 接口处理方法,参数1:要推送的文章数组 参数2:旧的模型id及旧的栏目id * @param array $param 属性 请求时,为模型、栏目数组。提交添加为二维信息数据 。例:array(1=>array('title'=>'多发发送方法', ....)) * @param array $arr 参数 表单数据,只在请求添加时传递。 例:array('modelid'=>1, 'catid'=>12); */ public function category_list($param = array(), $arr = array()) { //确认推送按钮 if ($arr['dosubmit']) { $id = $_POST['id'];//要批量推送的文章id,如:39|38|37 if(empty($id)) return true; $id_arr = explode('|',$id);//要批量推送的文章id数组 if(count($id_arr)==0) return true; $old_catid = intval($_POST['catid']);//旧栏目id if(!$old_catid) return true; $ids = $_POST['ids'];//推送栏目,如:6|68 if(empty($ids)) return true; $ids = explode('|', $ids);//推送栏目id数组 $siteid = intval($_POST['siteid']);//站点id $siteids = getcache('category_content','commons');//所有栏目对应的站点id $oldsiteid = $siteids[$old_catid];//旧站点id $this->categorys = getcache('category_content_'.$oldsiteid,'commons');//旧站点下所有栏目信息 $modelid = $this->categorys[$old_catid]['modelid'];//旧栏目所属的模型id $this->db->set_model($modelid);//根据模型id设置对应的模型表 $tablename = $this->db->table_name; $this->hits_db = pc_base::load_model('hits_model');//点击率统计表 foreach($id_arr as $id) {//要批量推送的文章id数组 $this->db->table_name = $tablename;//模型表 $r = $this->db->get_one(array('id'=>$id));//根据当前文章id获取该文章详细信息 $linkurl = preg_match('/^http:\/\//',$r['url']) ? $r['url'] : siteurl($siteid).$r['url']; foreach($ids as $catid) {//推送栏目,如:6|68 $siteid = $siteids[$catid];//推送到哪个站点id下的栏目 $this->categorys = getcache('category_content_'.$siteid,'commons');//推送站点下所有的栏目信息 $modelid = $this->categorys[$catid]['modelid'];//推送栏目所属模型id $this->db->set_model($modelid);//根据模型id设置对应的模型表 $newid = $this->db->insert( array('title'=>$r['title'],//标题 'style'=>$r['style'], 'thumb'=>$r['thumb'],//缩略图 'keywords'=>$r['keywords'],//关键词 'description'=>$r['description'],//描述 'status'=>$r['status'],//状态 'catid'=>$catid,//栏目id 'url'=>$linkurl,//旧的链接地址 'sysadd'=>1,//系统添加 'username'=>$r['username'],//作者 'inputtime'=>$r['inputtime'],//发布时间 'updatetime'=>$r['updatetime'],//更新时间 'islink'=>1 //外部链接 ),true);//将文章内容发布到推送栏目,并返回新插入的文章id $this->db->table_name = $this->db->table_name.'_data';//模型附表 $this->db->insert(array('id'=>$newid));//新插入的文章id存储到附表中,注意:文章内容没有被存储到附表中 $hitsid = 'c-'.$modelid.'-'.$newid; $this->hits_db->insert(array('hitsid'=>$hitsid,'catid'=>$catid,'updatetime'=>SYS_TIME));//点击量统计表 } } return true; } else { $siteid = get_siteid(); $this->categorys = getcache('category_content_'.$siteid,'commons'); $tree = pc_base::load_sys_class('tree'); $tree->icon = array(' │ ',' ├─ ',' └─ '); $tree->nbsp = ' '; $categorys = array(); $this->catids_string = array(); if($_SESSION['roleid'] != 1) { $this->priv_db = pc_base::load_model('category_priv_model'); $priv_result = $this->priv_db->select(array('action'=>'add','roleid'=>$_SESSION['roleid'],'siteid'=>$siteid,'is_admin'=>1)); $priv_catids = array(); foreach($priv_result as $_v) { $priv_catids[] = $_v['catid']; } if(empty($priv_catids)) return ''; } foreach($this->categorys as $r) { if($r['siteid']!=$siteid || $r['type']!=0) continue; if($_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) { $arrchildid = explode(',',$r['arrchildid']); $array_intersect = array_intersect($priv_catids,$arrchildid); if(empty($array_intersect)) continue; } if($r['child']) { $r['checkbox'] = ''; $r['style'] = 'color:#8A8A8A;'; } else { $checked = ''; if($typeid && $r['usable_type']) { $usable_type = explode(',', $r['usable_type']); if(in_array($typeid, $usable_type)) { $checked = 'checked'; $this->catids_string[] = $r['catid']; } } $r['checkbox'] = "<input type='checkbox' name='ids[]' value='{$r[catid]}' {$checked}>"; $r['style'] = ''; } $categorys[$r['catid']] = $r; } $str = "<tr> <td align='center'>\$checkbox</td> <td style='\$style'>\$spacer\$catname</td> </tr>"; $tree->init($categorys); $categorys = $tree->get_tree(0, $str); return $categorys; } } } ?>
例如:文章被推送到专题的情况:
![](http://img.my.csdn.net/uploads/201301/18/1358479039_6852.jpg)
相关文章推荐
- 【phpcms-v9】后台发布文章时切换栏目的功能实现
- phpcms_v9推送到其他栏目后再在其他栏目删除导致数据库出错
- 【phpcms-v9】phpcms-v9中将一个站点下的文章内容完美的推送到另一个站点下
- 修改PHPCMS V9相关文章、专题listorder、order排序功能的方法
- 【phpcms-v9】phpcms-v9中文章列表页调用栏目名称
- 【phpcms-v9】phpcms-v9中复制采集节点功能(扩展:专题碎片的复制)
- 【phpcms-v9】phpcms-v9列表页获取栏目文章所有的关键词
- 修改PHPCMS V9相关文章、order排序功能的方法
- 【phpcms-v9】获取当前栏目下周点击量最高的三篇带缩略图的文章
- phpcms 移植【添加相关文章】功能
- phpcms后台栏目列表自定义字段搜索功能
- finecms中如何解决模型不可切换的功能与有子栏目的栏目不能发表文章的问题
- 【phpcms-v9】解决后台栏目管理只显示顶级栏目名而不显示子栏目名的问题?
- phpcms 批量更新某个模块中的推送内容的url
- 豆约翰博客备份专家新增微信公众号文章批量下载功能
- 【phpcms-v9】前台{pc}专题标签调用类分析
- 【phpcms-v9】使用后台的表单向导做前台的留言板功能
- 【phpcms-v9】phpcms-v9中文章内容页点击图片进入下一页
- dede调用其他栏目的文章或者缩略图列表且有分页效果的方法
- wordpress3.8之文章自定义栏目功能的使用