您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcmsv9后台增加按类别查找的功能不影响升级的方法
沛珊2025-06-06phpcms教程已有人查阅
导读这是我第一次按phpcms v9的二次开发规则来做的一个简单开发。v9中可以用 MY_xxx.php 继承 xxx.php 控制的开发,不影响升级,我以为模板也可以这样命名(但是不行的)。
这是我第一次按phpcms v9的二次开发规则来做的一个简单开发。v9中可以用 MY_xxx.php 继承 xxx.php 控制的开发,不影响升级,我以为模板也可以这样命名(但是不行的)。
效果如下,如果本栏目没设置类别,那么不会显示类别下拉框。
首先,找到 phpcms/modules/content/content.php并复制一份,命名为MY_content.php
然后修改 MY_content.php
把
然后在 MY_content_list.tpl.php模板文件中的
-----------------------------------
补充:删除那些不需要修改的方法。如add(),edit()等等。。这样免得系统会重复调用方法而消耗更多资源。这就是为什么我上面不敢肯定说是较优方法的原因。
效果如下,如果本栏目没设置类别,那么不会显示类别下拉框。
首先,找到 phpcms/modules/content/content.php并复制一份,命名为MY_content.php
然后修改 MY_content.php
把
class MY_content extends admin{
替换为
class MY_content extends content {
然后把 init函数修改了下,增加的部分在 以ikodota标记的(其实修改的很少)。
public function init() {
$show_header = $show_dialog= $show_pc_hash = '';
if(isset($_GET['catid']) && $_GET['catid'] && $this->categorys[$_GET['catid']]['siteid']==$this->siteid) {
$catid = $_GET['catid'] = intval($_GET['catid']);
$category = $this->categorys[$catid];
$modelid = $category['modelid'];
$admin_username = param::get_cookie('admin_username');
//查询当前的工作流
$setting = string2array($category['setting']);
$workflowid = $setting['workflowid'];
$workflows = getcache('workflow_'.$this->siteid,'commons');
$workflows = $workflows[$workflowid];
$workflows_setting = string2array($workflows['setting']);
//将有权限的级别放到新数组中
$admin_privs = array();
foreach($workflows_setting as $_k=>$_v) {
if(empty($_v)) continue;
foreach($_v as $_value) {
if($_value==$admin_username) $admin_privs[$_k] = $_k;
}
}
//工作流审核级别
$workflow_steps = $workflows['steps'];
$workflow_menu = '';
$steps = isset($_GET['steps']) ? intval($_GET['steps']) : 0;
//工作流权限判断
if($_SESSION['roleid']!=1 && $steps && !in_array($steps,$admin_privs)) showmessage(L('permission_to_operate'));
$this->db->set_model($modelid);
if($this->db->table_name==$this->db->db_tablepre) showmessage(L('model_table_not_exists'));;
$status = $steps ? $steps : 99;
if(isset($_GET['reject'])) $status = 0;
$where = 'catid='.$catid.' AND status='.$status;
//搜索
//ikodota.bof
//增加按类别搜索
if(isset($_GET['typeid']) && !empty($_GET['typeid'])) {
$typeid =$_GET['typeid'];
$where .= " AND `typeid` = '$typeid' ";
}
//ikodota.eof
if(isset($_GET['start_time']) && $_GET['start_time']) {
$start_time = strtotime($_GET['start_time']);
$where .= " AND `inputtime` > '$start_time'";
}
if(isset($_GET['end_time']) && $_GET['end_time']) {
$end_time = strtotime($_GET['end_time']);
$where .= " AND `inputtime` < '$end_time'";
}
if($start_time>$end_time) showmessage(L('starttime_than_endtime'));
if(isset($_GET['keyword']) && !empty($_GET['keyword'])) {
$type_array = array('title','description','username');
$searchtype = intval($_GET['searchtype']);
if($searchtype < 3) {
$searchtype = $type_array[$searchtype];
$keyword = strip_tags(trim($_GET['keyword']));
$where .= " AND `$searchtype` like '%$keyword%'";
} elseif($searchtype==3) {
$keyword = intval($_GET['keyword']);
$where .= " AND `id`='$keyword'";
}
}
if(isset($_GET['posids']) && !empty($_GET['posids'])) {
$posids = $_GET['posids']==1 ? intval($_GET['posids']) : 0;
$where .= " AND `posids` = '$posids'";
}
$datas = $this->db->listinfo($where,'id desc',$_GET['page']);
$pages = $this->db->pages;
$pc_hash = $_SESSION['pc_hash'];
for($i=1;$i<=$workflow_steps;$i++) {
if($_SESSION['roleid']!=1 && !in_array($i,$admin_privs)) continue;
$current = $steps==$i ? 'class=on' : '';
$r = $this->db->get_one(array('catid'=>$catid,'status'=>$i));
$newimg = $r ? '<img src="'.IMG_PATH.'icon/new.png" style="padding-bottom:2px" onclick="window.location.href=\'?m=content&c=content&a=&menuid='.$_GET['menuid'].'&catid='.$catid.'&steps='.$i.'&pc_hash='.$pc_hash.'\'">' : '';
$workflow_menu .= '<a href="?m=content&c=content&a=&menuid='.$_GET['menuid'].'&catid='.$catid.'&steps='.$i.'&pc_hash='.$pc_hash.'" '.$current.' ><em>'.L('workflow_'.$i).$newimg.'</em></a><span>|</span>';
}
if($workflow_menu) {
$current = isset($_GET['reject']) ? 'class=on' : '';
$workflow_menu .= '<a href="?m=content&c=content&a=&menuid='.$_GET['menuid'].'&catid='.$catid.'&pc_hash='.$pc_hash.'&reject=1" '.$current.' ><em>'.L('reject').'</em></a><span>|</span>';
}
include $this->admin_tpl('MY_content_list');
} else {
include $this->admin_tpl('content_quick');
}
}
另外,为了让模板也能保持升级不变把:
include $this->admin_tpl('content_list');
改为了
include $this->admin_tpl('MY_content_list');
所以,把模板文件:phpcms/modules/content/templates/content_list.tpl.php 复制一份,并改为 MY_content_list.tpl.php(这里用MY_是为了记住是自己修改的)然后在 MY_content_list.tpl.php模板文件中的
<select name="posids"><option value='' <?php if($_GET['posids']=='') echo 'selected';?>><?php echo L('all');?></option>
之前增加一下代码。
<!--ikodota.bof-->
<?php $TYPE = getcache('type_content','commons');
if(defined('IN_ADMIN')&& !defined('HTML'))pc_base::load_sys_class("get_model", "model", 0);
$get_db = new get_model();
$r = $get_db->sql_query("SELECT usable_type FROM v9_category WHERE catid='$catid' ORDER BY catid DESC LIMIT 20");
while(($s = $get_db->fetch_next()) != false) {
$a[] = $s;
//var_dump($a);
}
$data = $a;unset($a); //计算出本栏目下的类别ID
if(is_array($data)) foreach($data AS $rra) {
$arrtype = substr($rra[usable_type], 1, -1);
$arrtype = explode(',',$arrtype);
}
if(count($arrtype)>1) {
echo '<select name="typeid">';
echo '<option value="0">类别</option>';
foreach($arrtype AS $t) {
?>
<option value="<?php echo $t; ?>" <?php if($_GET['typeid']==$t) echo 'selected';?>><?php echo $TYPE[$t]['name'];?></option>
<?php
}
echo '</select>';
}
?>
<!--ikodota.eof-->
这种方法也许不是较优方法,却是最快、最简单的实现一些功能的捷径,还不影响升级。-----------------------------------
补充:删除那些不需要修改的方法。如add(),edit()等等。。这样免得系统会重复调用方法而消耗更多资源。这就是为什么我上面不敢肯定说是较优方法的原因。
本文标签:
很赞哦! ()
图文教程
phpcms内容页标题无法显示的解决方法
1、修改 modules/content/fields/title/output.inc.php 文件,2、更新全站缓存;3、重新生成所有内容页。
phpcms无法连接远程数据库的解决方法
安装phpcms时出现 无法链接数据库服务器,请检查配置,但是数据库信息 基本正确,在网上找了好多都没有能解决问题,后来才知道,原来是数据库密码有特殊字符
phpcms广告添加修改方法
phpcms广告在模块管理中的“广告”分类下进行设置,其添加phpcms广告的方法是:首先点击添加版位,选择广告位的类型,并根据类型设置填入所需参数;然后对该位置进行广告添加
phpcms调用二级导航栏标签的步骤方法
phpcms如何调用二级导航栏标签?phpcms写二级导航栏标签的方法:第一步:首先,要去官网下载一个phpcms v9系统文件,放在本地运行环境里并且打开。
相关源码
-
自适应响应式绿色装修公司定制家居类pbootcms网站下载(自适应手机端)响应式全屋装修定制家居类网站pbootcms模板 绿色装修公司网站源码下载PbootCMS内核开发的网站模板,该模板适用于装修定制网站、装查看源码 -
(自适应响应式)html5文章资讯新闻博客pbootcms网站模板下载本模板基于PbootCMS系统开发,为新闻资讯、博客类网站设计,特别适合各类文章内容的发布与管理。采用响应式技术,确保在不同设备上都能获得良好的阅读体验。查看源码 -
(响应式)轴承机械五金零件产品pbootcms落地推广单页源码下载为轴承、机械零件等工业产品打造的响应式单页模板,基于PbootCMS内核开发,助力企业快速构建专业级产品展示页面。模板采用工业风设计语言,突出产品参数与性能优势,适用于设备制造商、零部件供应商等B2B场景推广。查看源码 -
响应式茶叶茶道pbootcms网站模板源码(自适应手机端)棕色复古茶具主题的响应式网站模板,为茶叶茶道企业设计,同时支持古玩字画、艺术文化等行业的快速适配,通过替换文字图片即可转型为其他行业官网,大幅降低开发成本。查看源码 -
(自适应)蓝色自动溶剂萃取仪器设备类网站pbootcms模板下载本模板为溶剂萃取设备、实验室仪器等精密仪器行业设计,采用PbootCMS内核开发,具有高度专业性和行业适配性。模板设计充分考虑了仪器设备行业展示需求,能够呈现各类精密仪器的技术参数、应用场景和解决方案。查看源码 -
(自适应)餐饮小吃火锅加盟pbootcms模板源码下载本模板基于PbootCMS系统开发,为火锅餐饮、小吃加盟等餐饮企业打造。采用响应式设计,适配各类移动设备,帮助餐饮企业展示特色菜品、加盟政策和服务优势。查看源码
| 分享笔记 (共有 篇笔记) |
