phpcms v9手機站wap後臺繫結任意單頁面(簡單二開)
阿新 • • 發佈:2019-01-01
預設的phpcms v9手機門戶後臺管理,新增欄目的時候無法繫結單頁面,雖然有人可以直接通過傳遞單頁面id的方式呼叫,但是畢竟不是很方便,簡單二開,讓你實現後臺欄目繫結任意的單頁面
一、前端程式碼:
(1)建立單頁面控制器
開啟phpcms/modules/wap/index.php ,在最下邊增加控制器:
- //單頁面
- function page() {
- $WAP = $this->wap;
- $TYPE = $this->types;
- $WAP_SETTING = string2array($WAP['setting']);
- $GLOBALS['siteid'] = max($this->siteid,1);
- //$typeid = intval($_GET['typeid']);
- $catid = intval($_GET['catid']);
- if(!$catid) exit(L('parameter_error'));
- //$catid = $this->types[$typeid]['cat'];
- $this->page_db = pc_base::load_model('page_model');
- $data = $this->page_db->get_one(array('catid'=>$catid));
- if(!$data) showmessage(L('info_does_not_exists'),'blank');
- extract($data);
- include template('wap', 'page');
- }
程式碼中的L('info_does_not_exists'),需要你去phpcms\languages\zh-cn\wap.lang.php增加程式碼:
- $LANG['info_does_not_exists'] = '您要檢視的資訊不存在或者還未通過審批!';
(2)建立對應模板
在\phpcms\templates\default\wap下建立模板page.html,該模板呼叫方式和普通內頁呼叫標籤一樣
二、後端程式碼
(1)修改程式碼讓後臺新增欄目時候顯示單頁面
開啟phpcms\modules\wap\wap_admin.php 首頁現在11行之後增加程式碼:
- $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);
改成:
- $r['select_cat'] = form::select_category('',$r[cat],'name="cat['.$r['typeid'].']"',L('wap_type_bound'),0,-1,0,$siteid);
再然後找到大概208行:
- echo form::select_category('',0,'name="addcat['.$parentid.'][]"',L('wap_type_bound'),0,0,0,$siteid);
改成:
- 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行
- <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">
改成:
- <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_manage.tpl.php的大概第97行
找到:
- $info['cat'] = $_POST['info']['cat'] ? $_POST['info']['cat'] : showmessage(L('wap_empty_bound_type'),HTTP_REFERER);
後加入判斷欄目性質程式碼:
- /*判斷欄目型別*/
- foreach ($CATEGORYS as $k => $cats) {
- if($cats['catid']== $info['cat']) {
- $info['type'] = intval($cats['type']);//欄目型別
- break;
- }
- }
找到143行在foreach ($typename as $typeid=>$in) {迴圈裡邊增加同樣程式碼:
- foreach ($typename as $typeid=>$in) {
- /*判斷欄目型別*/
- foreach ($CATEGORYS as $k => $cats) {
- if($cats['catid']== $_POST['cat'][$typeid]) {
- $types = intval($cats['type']);//欄目型別
- break;
- }
然後169行找到
- $info['cat'] = $addcat[$_k][$_s];
在之後增加同樣程式碼
- foreach ($CATEGORYS as $k => $cats) {
- if($cats['catid']== $info['cat']) {
- $info['type'] = intval($cats['type']);//欄目型別
- break;
- }
- }
(5)修改全域性函式,找到:phpcms\modules\wap\functions\global.func.php
找到:
- /**
- * 解析分類url路徑
- */
- function list_url($typeid) {
- return WAP_SITEURL."&a=lists&typeid=$typeid";
- }
改成:
- /**
- * 解析分類url路徑
- */
- function list_url($typeid) {
- $siteid = $GLOBALS['siteid'];
- $types = getcache('wap_type','wap');
- $CATEGORYS = getcache('category_content_'.$siteid,'commons');
- foreach ($types as $type) {
- if($type['typeid']== $typeid) {
- $cattype = intval($type['type']);//欄目型別
- $catid = intval($type['cat']);//對應catid
- break;
- }
- }
- if($cattype){
- return WAP_SITEURL."&c=index&a=page&catid=$catid";
- }else{
- return WAP_SITEURL."&a=lists&typeid=$typeid";
- }
- }
找到:
- /**
- * 解析內容url路徑
- * $catid 欄目id
- * $typeid wap分類id
- * $id 文章id
- */
- function show_url($catid, $id, $typeid='') {
- global $WAP;
- if($typeid=='') {
- $types = getcache('wap_type','wap');
- foreach ($types as $type) {
- if($type['cat']==$catid) {
- $typeid = $type['typeid'];
- break;
- }
- }
- }
- return WAP_SITEURL."&a=show&catid=$catid&typeid=$typeid&id=$id";
- }
改成:
- /**
- * 解析內容url路徑
- * $catid 欄目id
- * $typeid wap分類id
- * $id 文章id
- */
- function show_url($catid, $id, $typeid='') {
- global $WAP;
- if($typeid=='') {
- $types = getcache('wap_type','wap');
- foreach ($types as $k => $type) {
- if($type['cat']==$catid) {
- //$typeid = $type['typeid'];
- $cattype = intval($type['type']);
- break;
- }
- }
- }
- if($cattype){
- return WAP_SITEURL."&c=index&a=page&catid=$catid";
- }else{
- return WAP_SITEURL."&a=show&catid=$catid&typeid=$typeid&id=$id";
- }
- }
全部修改完之後,一定一起要記得更新全站快取,這樣就可以繫結單頁面,並且可以自動跳轉對應的url,