各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > phpcms

phpcms v9手机站wap后台绑定单页面(简单二开)

管理员 2022-08-28
phpcms
311
默认的phpcms v9手机门户后台管理,添加栏目的时候无法绑定单页面,虽然有人可以直接通过传递单页面id的方式调用,但是毕竟不是很方便,简单二开,让你实现后台栏目绑定任意的单页面

一、前端代码:

(1)创建单页面控制器
打开phpcms/modules/wap/index.php ,在最下边增加控制器:
  1. //单页面  
  2.     function page() {  
  3.         $WAP = $this->wap;  
  4.         $TYPE = $this->types;  
  5.         $WAP_SETTING = string2array($WAP['setting']);     
  6.         $GLOBALS['siteid'] = max($this->siteid,1);    
  7.         //$typeid = intval($_GET['typeid']);  
  8.         $catid = intval($_GET['catid']);          
  9.         if(!$catid) exit(L('parameter_error'));                   
  10.         //$catid = $this->types[$typeid]['cat'];  
  11.  
  12.         $this->page_db = pc_base::load_model('page_model');  
  13.         $data = $this->page_db->get_one(array('catid'=>$catid));  
  14.         if(!$data) showmessage(L('info_does_not_exists'),'blank');  
  15.         extract($data);  
  16.         include template('wap''page');  
  17.     } 
代码中的L('info_does_not_exists'),需要你去phpcmslanguageszh-cnwap.lang.php增加代码:
  1. $LANG['info_does_not_exists'] = '您要查看的信息不存在或者还未通过审批!'
(2)创建对应模板
在phpcmstemplatesdefaultwap下创建模板page.html,该模板调用方式和普通内页调用标签一样

二、后端代码

(1)修改代码让后台添加栏目时候显示单页面
打开phpcmsmoduleswapwap_admin.php 首页现在11行之后增加代码:
  1. $CATEGORYS = getcache('category_content_'.$siteid,'commons');//pc栏目缓存 
然后在大概120行找到:
$r['select_cat'] = form::select_category('',$r[cat],'name="cat['.$r['typeid'].']"',L('wap_type_bound'),0,0,0,$siteid); 
改成:
  1. $r['select_cat'] = form::select_category('',$r[cat],'name="cat['.$r['typeid'].']"',L('wap_type_bound'),0,-1,0,$siteid); 
再然后找到大概208行:
  1. echo form::select_category('',0,'name="addcat['.$parentid.'][]"',L('wap_type_bound'),0,0,0,$siteid); 
改成:
  1. echo form::select_category('',0,'name="addcat['.$parentid.'][]"',L('wap_type_bound'),0,-1,0,$siteid); 

(2)找到文件phpcmsmoduleswaptemplatestype_manage.tpl.php的大概第9行
  1.  

 

class="explain-col"'listorder')?> "text" value="0" class="input-text" name="info[listorder]" size="5">  'wap_type_name')?>  "text" value="" class="input-text" name="info[typename]">   'wap_bound_type')?>   'category_content_'.$siteid,$parentid,'name="info[cat]"',L('wap_type_bound'),0,0,0,$siteid);?>"submit" value="" class="button" name="dosubmit">    改成:
  1.  

 

class="explain-col"'listorder')?> "text" value="0" class="input-text" name="info[listorder]" size="5">  'wap_type_name')?>  "text" value="" class="input-text" name="info[typename]">   'wap_bound_type')?>   'category_content_'.$siteid,$parentid,'name="info[cat]"',L('wap_type_bound'),0,-1,0,$siteid);?>"submit" value="" class="button" name="dosubmit">    (其实以上两步修改就是把里边的0,0,0 改成0,-1,0),form::select_category函数中间的0代码只调用栏目类型为0的栏目,既只调用栏目,-1代表全部栏目,1代表单页面

(3)修改数据库v9_wap_type,增加字段type,类型:tinyint,默认:0,0表示栏目, 1表示单页面
(为了方便以后使用,你可以直接在wap/install/wap.sql的第20行增加:`type` tinyint(1) DEFAULT '0',  方便以后可以直接使用)

(4)再次找到文件phpcmsmoduleswaptemplatestype_admin.tpl.php的
在第93行引入缓存:
  1. $CATEGORYS = getcache('category_content_'.$siteid,'commons');//pc栏目缓存
大概第97行找到:
  1. $info['cat'] = $_POST['info']['cat'] ? $_POST['info']['cat'] : showmessage(L('wap_empty_bound_type'),HTTP_REFERER); 
后加入判断栏目性质代码:
  1. /*判断栏目类型*/ 
  2.             foreach ($CATEGORYS as $k => $cats) {  
  3.                 if($cats['catid']== $info['cat']) {  
  4.                     $info['type'] = intval($cats['type']);//栏目类型  
  5.                     break;  
  6.                 }  
  7.             } 
在140行修改整个type_edit控制器改为

  1. function type_edit() { 
  2.         $siteid = intval($_GET['siteid']); 
  3.         $CATEGORYS = getcache('category_content_'.$siteid,'commons');//pc栏目缓存  
  4.         if($_POST['dosubmit']) { 
  5.             $typename = $_POST['typename']; 
  6.             $types = 1; 
  7.             foreach ($typename as $typeid=>$in) { 
  8.                 /*判断栏目类型*/   
  9.                 foreach ($CATEGORYS as $k) {  
  10.                     if($k['catid']== $_POST['cat'][$typeid]) {    
  11.                         $types = intval($k['type']);//栏目类型  
  12.                         break;    
  13.                     }   
  14.                 } 
  15.                 $this->type_db->update(array( 
  16.                               'typename'=>$_POST['typename'][$typeid], 
  17.                               'cat'=>$_POST['cat'][$typeid], 
  18.                               'listorder'=>$_POST['listorders'][$typeid], 
  19.                               'type'=>$types, 
  20.                              ),array('typeid'=>$typeid));            
  21.             } 
  22.             $addtype = $_POST['addtype']; 
  23.             $addcat = $_POST['addcat']; 
  24.             $addorder = $_POST['addorder']; 
  25.  
  26.             if(is_array($addtype) && !empty($addtype)) { 
  27.                 foreach ($addtype as $_k=>$_v) { 
  28.                     foreach ($_v as $_s=>$infos) { 
  29.                         $info['typename'] = $infos; 
  30.                         $info['parentid'] = $_k; 
  31.                         $info['siteid'] = $siteid; 
  32.                         $info['cat'] = $addcat[$_k][$_s]; 
  33.                         $info['listorder'] = $addorder[$_k][$_s]; 
  34.                         foreach ($CATEGORYS as $k) {  
  35.                             if($k['catid']== $_info['cat']) {    
  36.                                 $types = intval($k['type']);//栏目类型  
  37.                                 break;    
  38.                             }   
  39.                         } 
  40.                         $info['type'] = $types; 
  41.                         if($this->type_db->get_one(array('cat'=>$info['cat'],'siteid'=>$siteid))) { 
  42.                             showmessage($info['typename'].L('wap_repeat_bound'),HTTP_REFERER); 
  43.                         } else { 
  44.                             $this->type_db->insert($info); 
  45.                         }                                            
  46.                     } 
  47.                     unset($info); 
  48.                 } 
  49.             } 
  50.             $this->type_cache($siteid); 
  51.             showmessage(L('operation_success'),HTTP_REFERER);    
  52.         } 
  53.     } 



(5)修改全局函数,找到:phpcmsmoduleswapfunctionsglobal.func.php
找到:

  1. /**  
  2.  * 解析分类url路径  
  3.  */ 
  4. function list_url($typeid) {  
  5.     return WAP_SITEURL."&a=lists&typeid=$typeid";  
改成:
  1. /**  
  2.  * 解析分类url路径  
  3.  */ 
  4. function list_url($typeid) {  
  5.     $siteid = $GLOBALS['siteid'];  
  6.     $types = getcache('wap_type','wap');  
  7.     $CATEGORYS = getcache('category_content_'.$siteid,'commons');  
  8.     foreach ($types as $type) {  
  9.         if($type['typeid']== $typeid) {  
  10.             $cattype = intval($type['type']);//栏目类型  
  11.             $catid   = intval($type['cat']);//对应catid  
  12.             break;  
  13.         }  
  14.     }  
  15.     if($cattype){  
  16.         return WAP_SITEURL."&c=index&a=page&catid=$catid";  
  17.     }else{  
  18.        return WAP_SITEURL."&a=lists&typeid=$typeid";  
  19.     }  
  20.       
找到:
  1. /**  
  2.  * 解析内容url路径  
  3.  * $catid 栏目id  
  4.  * $typeid wap分类id  
  5.  * $id 文章id  
  6.  */ 
  7. function show_url($catid, $id, $typeid='') {  
  8.     global $WAP;  
  9.     if($typeid=='') {  
  10.         $types = getcache('wap_type','wap');  
  11.         foreach ($types as $type) {  
  12.             if($type['cat']==$catid) {  
  13.                 $typeid = $type['typeid'];  
  14.                 break;  
  15.             }  
  16.         }  
  17.     }  
  18.     return WAP_SITEURL."&a=show&catid=$catid&typeid=$typeid&id=$id";  
改成:
  1. /**  
  2.  * 解析内容url路径  
  3.  * $catid 栏目id  
  4.  * $typeid wap分类id  
  5.  * $id 文章id  
  6.  */ 
  7. function show_url($catid, $id, $typeid='') {  
  8.     global $WAP;  
  9.     if($typeid=='') {  
  10.         $types = getcache('wap_type','wap');  
  11.         foreach ($types as $k => $type) {  
  12.             if($type['cat']==$catid) {  
  13.                 //$typeid = $type['typeid'];  
  14.                 $cattype = intval($type['type']);  
  15.                 break;  
  16.             }  
  17.         }  
  18.     }  
  19.     if($cattype){  
  20.          return WAP_SITEURL."&c=index&a=page&catid=$catid";  
  21.     }else{  
  22.         return WAP_SITEURL."&a=show&catid=$catid&typeid=$typeid&id=$id";  
  23.     }  
  24.      

全部修改完之后,一定一起要记得更新全站缓存,这样就可以绑定单页面,并且可以自动跳转对应的url,





代码有点多,不知道有没有说清楚,如有什么疑问,可以给我留言,因为我做了其他的开发,就不直接打包放出源码了!



请任性给我打赏吧!

扫码关注

qrcode

QQ交谈

回顶部