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;