phpcms wap端开发

 phpcms 手机门户后台管理,实现后台栏目绑定任意的单页面

一、前端代码

(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); 

  $catid = intval($_GET['catid']);
  if(!$catid) exit(L('parameter_error')); 

    $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)v9_wap_type

增加字段 type,类型:tinyint,默认:0, 0 表示栏目, 1 表示单页面

(为了方便以后使用,可以直接在 wap/install/wap.sql 的第20行增加:`type` tinyint(1) DEFAULT ‘0’, 方便以后可以直接使用)

三、后端代码

(1)修改 wap_admin.php

后台添加栏目时候可以显示单页面以供选择

打开 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

<?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">  

改成:

 <?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) 修改 phpcms\modules\wap\wap_admin.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; 
    }
}

(4)修改全局函数 global.func.php :

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) {
            $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

原文链接:https://blog.csdn.net/fengye002011/article/details/79090990

设置不同栏目调用不同模板

1、创建模板页

 templates/wap 下新建一个 html 页面 根据 pc 端模板名称来命名

2、modules/wap/index.php public 

function lists() 函数里获取栏目的 setting 值,然后动态设置 $template

$setting = string2array($CAT['setting']); 

$template_category = $setting['category_template'] ? $setting['category_template'] : $WAP_SETTING['category_template']; 

$template_list = $setting['list_template'] ? $setting['list_template'] : $WAP_SETTING['list_template']; 

$template = ($TYPE[$typeid]['parentid'] == 0 && in_array($typeid, array_unique($parentids))) ? $template_category : $template_list;