您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms联动筛选修改方法
王颢锵2025-05-23phpcms教程已有人查阅
导读联动筛选的问题其实这些函数,都是从phpcms的分类信息模块的函数复制过来的。所有的分类信息函数如下:下载地址。当然,这个是最老的分类信息模块了
联动筛选的问题其实这些函数,都是从phpcms的分类信息模块的函数复制过来的。所有的分类信息函数如下:
下载地址。当然,这个是最老的分类信息模块了,较新版的已经找不到了,但是很多人,都在使用这里的函数,来做筛选。复制内容如下
phpcms v9实现数据内容筛选功能,很多人都想要这个功能,今天我就讲一下我是怎么实现phpcms v9数据内容筛选功能的
注意:此教程目前只适用于动态页面,并且可能有些不完善的地方,因为数据是直接读取SQL的,所以会把同模型的其他栏目数据调用出来。所以建议单独新建一个模型。第一步: 添加字段:
后台 --> 内容 --> 内容相关设置 --> 模型管理 --> 文章模型 --> 字段管理 --> 添加字段如下示例
第二步:添加自定义函数:(他这个函数代码,是错了,但是我还是粘贴出来了)
建议下载 这个包。有具体的函数,以及使用方法。点击下载
将以下代码添加到 phpcms/libs/functions/extention.func.php 文件复制了代码以后,网站就500了,应该是代码内部的语法出了问题。
这是因为,我可能以前在某处,加载过这个文件,重复的加载了这些函数,所以会报500错误,再说一次,千万不要搞phpcms,这些报错,真的很恶心,你要排查半天。最终发现,我在auoload文件里,加载了 phpcms的 分类信息函数,那些函数,跟新增的函数重名了。
(注:makeurlrule函数对分页是否能传递相关参数很重要!)第三步:前台模板调用//选项调用
之前的一篇文章:解决lists标签中,加上where后其他条件失效的问题,其他条件失效了,如catid,thumb等等,也就是无法获取当前栏目的信息,而是把整个栏目下的所有文章都调用出来了!
打开/phpcms/modules/content/classes/目录下的content_tag.class.php这个文件,把下面的代码(大概第63行)
通过研究缓存得知,调用分页总数的函数是:
大功告成,这样既然正常分页传参,也能正常获取当前栏目信息,获取的信息总数也正确了,他是这样说,具体对不对,我不知道!测试一下吧。问题1.文章说,必须修改原来的url为动态url模式才行。我的解决办法
首先,网站已经使用了自定义的url规则,下图标红的是我使用的。
确实,在生成选项的时候,是会出现访问权限不存在的问题,因为url中没有传入catid参数。
我的解决办法是
下载地址。当然,这个是最老的分类信息模块了,较新版的已经找不到了,但是很多人,都在使用这里的函数,来做筛选。复制内容如下
phpcms v9实现数据内容筛选功能,很多人都想要这个功能,今天我就讲一下我是怎么实现phpcms v9数据内容筛选功能的
注意:此教程目前只适用于动态页面,并且可能有些不完善的地方,因为数据是直接读取SQL的,所以会把同模型的其他栏目数据调用出来。所以建议单独新建一个模型。第一步: 添加字段:
后台 --> 内容 --> 内容相关设置 --> 模型管理 --> 文章模型 --> 字段管理 --> 添加字段如下示例
第二步:添加自定义函数:(他这个函数代码,是错了,但是我还是粘贴出来了)
建议下载 这个包。有具体的函数,以及使用方法。点击下载
将以下代码添加到 phpcms/libs/functions/extention.func.php 文件复制了代码以后,网站就500了,应该是代码内部的语法出了问题。
这是因为,我可能以前在某处,加载过这个文件,重复的加载了这些函数,所以会报500错误,再说一次,千万不要搞phpcms,这些报错,真的很恶心,你要排查半天。最终发现,我在auoload文件里,加载了 phpcms的 分类信息函数,那些函数,跟新增的函数重名了。
(注:makeurlrule函数对分页是否能传递相关参数很重要!)第三步:前台模板调用//选项调用
{loop filters('chengshi',1) $r}
{$r[menu]}
{/loop}
//信息调用
{php $sql = structure_filters_sql($modelid);}
{php $urlrule = makeurlrule()}
{pc:content action="lists" catid="$catid" where="$sql" modelid="$modelid" num="10" page="$page" moreinfo="1" urlrule="$urlrule" return="data" }
{loop $data $r}
........
{/loop}
{/pc}
第四步:修复list条件下加入where后其他条件失效的问题.这是其中一种解决办法,我使用了另一种办法,解决了之前的一篇文章:解决lists标签中,加上where后其他条件失效的问题,其他条件失效了,如catid,thumb等等,也就是无法获取当前栏目的信息,而是把整个栏目下的所有文章都调用出来了!
打开/phpcms/modules/content/classes/目录下的content_tag.class.php这个文件,把下面的代码(大概第63行)
if(isset($data['where'])) {
$sql = $data['where'];
} else {
$thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "status=99 AND catid IN ($catids_str)".$thumb;
} else {
$sql = "status=99 AND catid='$catid'".$thumb;
}
}
替换为
if(isset($data['where'])) {
$where = (isset($data['where'])&&(!empty($data['where'])))?' AND '.$data['where']:'';
$thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "status=99".$where." AND catid IN ($catids_str)".$thumb;
} else {
$sql = "status=99".$where." AND catid='$catid'".$thumb;
}
} else {
$thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "status=99 AND catid IN ($catids_str)".$thumb;
} else {
$sql = "status=99 AND catid='$catid'".$thumb;
}
}
第五步:解决分页数量不对的问题通过研究缓存得知,调用分页总数的函数是:
$content_total = $content_tag->count(array('catid'=>$catid,'where'=>$sql,'modelid'=>$modelid,'moreinfo'=>'1','limit'=>$offset.",".$pagesize,'action'=>'lists',));
通过这个,找到phpcms\modules\content\classes\content_tag.class.php大致36-56行,count函数如下:
public function count($data) {
if($data['action'] == 'lists') {
$catid = intval($data['catid']);
if(!$this->set_modelid($catid)) return false;
if(isset($data['where'])) {
$sql = $data['where'];
} else {
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "status=99 AND catid IN ($catids_str)";
} else {
$sql = "status=99 AND catid='$catid'";
}
}
return $this->db->count($sql);
}
}
改为
public function count($data) {
if($data['action'] == 'lists') {
$catid = intval($data['catid']);
$catids_str = $this->category[$catid]['arrchildid'];
if(!$this->set_modelid($catid)) return false;
if(isset($data['where'])) {
$sql = $data['where'];
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = $sql." AND catid IN ($catids_str)";
} else {
$sql = $sql." AND catid='$catid'";
}
} else {
if($this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "status=99 AND catid IN ($catids_str)";
} else {
$sql = "status=99 AND catid='$catid'";
}
}
return $this->db->count($sql);
}
}
你会发现,分页统计的修改原理仍然是$where条件下,没有传入当前栏目id这个参数!大功告成,这样既然正常分页传参,也能正常获取当前栏目信息,获取的信息总数也正确了,他是这样说,具体对不对,我不知道!测试一下吧。问题1.文章说,必须修改原来的url为动态url模式才行。我的解决办法
首先,网站已经使用了自定义的url规则,下图标红的是我使用的。
确实,在生成选项的时候,是会出现访问权限不存在的问题,因为url中没有传入catid参数。
我的解决办法是
<!--获取当前请求的url,检测是否存在catid的值,后续,判断,如果存在,就直接返回筛选的url,如果不存在,就添加上-->
{php $urlstr=$_SERVER['REQUEST_URI']}
{php $flag=preg_match('/catid=\d*/',$urlstr)}
<div class="info_tit">
<h2>{$catname}</h2>
<div class="xifen">
<!--根据url是否存在catid进行操作-->
{if $flag==true}
{loop filters('chengshi',1) $r}
{$r[menu]}
{/loop}
{else}
{loop filters('chengshi',1) $r}
{php $jiaru="catid="}
{php $jiaru=$jiaru.$catid}
{str_replace('catid=',$jiaru,$r[menu])}
{/loop}
{/if}
</div>
</div>
本文标签:
很赞哦! ()
图文教程
phpcms前端页面上传文件的实现方法
今天多亏网友指点,才弄懂了怎么在前台上传文件,记录下来跟大家分享一下PHPCMS其实有一个叫做附件的模块,上传用的就是这个东西,现在我们来看一下对应的文件:
phpcms操作数据库增删改查常用方法
数据库的其他类继承的都是libs/class/model.class.php这里面有写好的操作数据库的常用方法
phpcms安装与使用方法
安装完wamp(或phpstudy)之后,将phpcms的安装文件复制入C:\wamp\(或C:\phpStudy\PHPTutorial\WWW)文件夹下;
phpcms安装后管理员不存在报错的几种解决方法
phpcms管理员不存在怎么办?phpcmsV9正常安装后,后台管理员不存在phpmyadmin无法打开的解决方法。本地之前安装了java运行环境,包括+mysql,所以再次安装phpcms之后
相关源码
-
(响应式)轴承机械五金零件产品pbootcms落地推广单页源码下载为轴承、机械零件等工业产品打造的响应式单页模板,基于PbootCMS内核开发,助力企业快速构建专业级产品展示页面。模板采用工业风设计语言,突出产品参数与性能优势,适用于设备制造商、零部件供应商等B2B场景推广。查看源码 -
(自适应)简繁双语响应式服装服饰西装工装校服定制pbootcms模板本模板基于PbootCMS内核开发,为服装服饰行业量身打造,尤其适合西装定制、工装生产、校服订制等服装类企业使用。模板采用响应式布局设计,确保在手机、平板、电脑查看源码 -
自适应车行汽车租赁二手车行业企业网站模板为汽车租赁与二手车交易场景深度优化,采用PbootCMS内核开发,聚焦车辆展示、租赁流程与服务介绍三大核心模块。响应式布局确保PC与移动端数据实时同步,后台一键管理车辆信息查看源码 -
(自适应响应式)运动健身瑜伽俱乐部网站pbootcms源码下载为健身瑜伽俱乐部设计的响应式网站模板,采用PbootCMS内核开发,可快速搭建专业级企业官网。模板默认适配运动健身行业视觉风格,用户可通过替换图文内容灵活应用于其他服务行业。查看源码 -
pbootcms模板(PC+WAP)火锅加盟餐饮美食类带留言源码基于PbootCMS内核深度开发,为火锅、餐饮品牌打造的营销型解决方案。采用红色主题传递行业活力,实现PC与WAP端适配。查看源码 -
自适应恒温恒湿机空调机械设备营销型网站模板(自适应手机版)响应式营销型恒温恒湿机环境设备类网站pbootcms模板 蓝色营销型空调设备网站源码下载PbootCMS内核开发的网站模板,该模板适用于营查看源码
| 分享笔记 (共有 篇笔记) |
