查看: 1572|回复: 8

[教 程] phpcms v9手机站wap后台绑定任意单页面(简单二开)

  [复制链接]
发表于 2018-1-17 22:35:30 | 显示全部楼层 |阅读模式
本帖最后由 fengye002012 于 2018-3-8 23:09 编辑

默认的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'),需要你去phpcms\languages\zh-cn\wap.lang.php增加代码:
  1. $LANG['info_does_not_exists'] = '您要查看的信息不存在或者还未通过审批!';  
复制代码

(2)创建对应模板
在\phpcms\templates\default\wap下创建模板page.html,该模板调用方式和普通内页调用标签一样


二、后端代码

(1)修改代码让后台添加栏目时候显示单页面
打开phpcms\modules\wap\wap_admin.php 首页现在11行之后增加代码:
  1. $CATEGORYS = getcache('category_content_'.$siteid,'commons');//pc栏目缓存  
复制代码

然后在大概120行找到:
  1. $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)找到文件phpcms\modules\wap\templates\type_manage.tpl.php的大概第9行
  1. <td><div class="explain-col"> <?php echo L('listorder')?> <input type="text" value="0" class="input-text" name="info[listorder]" size="5">  <?php echo L('wap_type_name')?>  <input type="text" value="" class="input-text" name="info[typename]">   <?php echo L('wap_bound_type')?>   <?php echo form::select_category('category_content_'.$siteid,$parentid,'name="info[cat]"',L('wap_type_bound'),0,0,0,$siteid);?><input type="submit" value="<?php echo L('wap_toptype_add')?>" class="button" name="dosubmit">   
复制代码


改成:
  1. <td><div class="explain-col"> <?php echo L('listorder')?> <input type="text" value="0" class="input-text" name="info[listorder]" size="5">  <?php echo L('wap_type_name')?>  <input type="text" value="" class="input-text" name="info[typename]">   <?php echo L('wap_bound_type')?>   <?php echo form::select_category('category_content_'.$siteid,$parentid,'name="info[cat]"',L('wap_type_bound'),0,-1,0,$siteid);?><input type="submit" value="<?php echo L('wap_toptype_add')?>" 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)再次找到文件phpcms\modules\wap\templates\type_admin.php的大概第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.             }  
复制代码


找到143行在foreach ($typename as $typeid=>$in) {循环里边增加同样代码:
  1. foreach ($typename as $typeid=>$in) {   
  2.                 /*判断栏目类型*/  
  3.                 foreach ($CATEGORYS as $k => $cats) {   
  4.                     if($cats['catid']== $_POST['cat'][$typeid]) {   
  5.                         $types = intval($cats['type']);//栏目类型   
  6.                         break;   
  7.                     }
  8.             }  
复制代码

                 

然后169行找到
  1. $info['cat'] = $addcat[$_k][$_s];  
复制代码

在之后增加同样代码
  1. foreach ($CATEGORYS as $k => $cats) {   
  2.       if($cats['catid']== $info['cat']) {   
  3.               $info['type'] = intval($cats['type']);//栏目类型   
  4.                break;   
  5.        }   
  6. }  
复制代码


(5)修改全局函数,找到:phpcms\modules\wap\functions\global.func.php
找到:
  1. /**   
  2. * 解析分类url路径   
  3. */  
  4. function list_url($typeid) {   
  5.     return WAP_SITEURL."&a=lists&typeid=$typeid";   
  6. }  
复制代码

改成:
  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.       
  21. }  
复制代码

找到:
  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";   
  19. }  
复制代码

改成:
  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.       
  25. }  
复制代码


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



代码有点多,不知道有没有说清楚,如有什么疑问,可以给我留言,因为我做了其他的开发,就不直接打包放出源码了! ,不知道有没有忘写什么,欢迎大家指正,我会在下边留言回复!

本帖子中包含更多资源

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

x
发表于 2018-1-24 18:33:43 | 显示全部楼层
感谢楼主~ :victory:
回复 支持 反对

使用道具 举报

发表于 2018-2-7 18:57:15 | 显示全部楼层
大家都已经测试成功了吗?
回复 支持 反对

使用道具 举报

发表于 2018-2-8 11:52:58 | 显示全部楼层

1、发现了一处错误!请看图片;
2、另外在照上面的修改后,手机站模板出现 了错误! global.func.php文件里的代码直接输出在模板页面里了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-8 13:08:33 | 显示全部楼层
郭亮亮 发表于 2018-2-8 11:52
1、发现了一处错误!请看图片;
2、另外在照上面的修改后,手机站模板出现 了错误! global.func.php文 ...

你下的是最新版本的v9吗?我刚才还专门下载了一个最新版本看看,路径没有错,另外,我修改了多图模式,直接注销了关于多图的处理,你可以尝试一下

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2018-2-10 11:06:27 | 显示全部楼层
网站支持大家分享有意义的干货
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-6-19 08:54 , Processed in 0.188459 second(s), 8 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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