php织梦二次开发的功能例子,织梦DedeCMS二次开发联动筛选功能的实现(含多选功能)...
织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就告诉大家如何对织梦进行二次开发实现这个很多人都需要的筛选功能,如下图所示:
首先需要说明的是这个功能需要在模板里面用到php标签,所以需要在后台模板引擎禁用标签里面解除这个标签的禁用,具体方法:
后台——系统——系统基本参数——其它选项——模板引擎禁用标签:php
将这个PHP去掉后保存就可以了!
好了,下面开始正题了。
一、联动筛选单选功能
首先需要修改2个PHP文件,都是include目录下面的。
1、修改arc.listview.class.php文件,这文件改动比较大,建议大家直接下载附件压缩包里面的文件替换,如果你之前对这个文件改动过的话,请在下载下来的压缩包里的这个文件里面搜索有“织梦技术研究中心”这些注释的这些地方,都是修改过的,然自己手动将有注释的代码插入到自己的文件里面!
2、修改extend.func.php文件,在其最后面添加如下代码:
//dedecms联动筛选功能
function wwwcms_filter($str,$stype="inject") {
if ($stype=="inject") {
$str = str_replace(
array( "select", "insert", "update", "delete", "alter", "cas", "union", "into", "load_file", "outfile", "create", "join", "where", "like", "drop", "modify", "rename", "'", "/*", "*", "../", "./"),
array("","","","","","","","","","","","","","","","","","","","","",""),
$str);
} else if ($stype=="xss") {
$farr = array("/\s+/" ,
"/]*?)>/isU",
"/(]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
);
$tarr = array(" ",
"",
"\\1\\2",
);
$str = preg_replace($farr, $tarr, $str);
$str = str_replace(
array( "", "'", "\"", ";", "/*", "*", "../", "./"),
array("","","","","","","",""),
$str);
}
return $str;
}
/**
* 载入自定义表单(用于发布)
*
* @access public
* @param string $fieldset 字段列表
* @param string $loadtype 载入类型
* @return string
*/
function AddFilter($channelid, $type=1, $fieldsnamef, $defaulttid, $loadtype='autofield')
{
global $tid,$dsql,$id;
$tid = $defaulttid ? $defaulttid : $tid;
if ($id!="")
{
$tidsq = $dsql->GetOne(" Select typeid From `#【分隔符】@__archives` where id='$id' ");
$tid = $tidsq["typeid"];
}
$nofilter = (isset($_REQUEST['TotalResult']) ? "&TotalResult=".$_REQUEST['TotalResult'] : '').(isset($_REQUEST['PageNo']) ? "&PageNo=".$_REQUEST['PageNo'] : '');
$filterarr = wwwcms_filter(stripos($_SERVER['REQUEST_URI'], "list.php?tid=") ? str_replace($nofilter, '', $_SERVER['REQUEST_URI']) : $GLOBALS['cfg_cmsurl']."/plus/list.php?tid=".$tid);
$cInfos = $dsql->GetOne(" Select * From `#【分隔符】@__channeltype` where id='$channelid' ");
$fieldset=$cInfos['fieldset'];
$dtp = new DedeTagParse();
$dtp->SetNameSpace('field','');
$dtp->LoadSource($fieldset);
$dede_addonfields = '';
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $tid=>$ctag)
{
$fieldsname = $fieldsnamef ? explode(",", $fieldsnamef) : explode(",", $ctag->GetName());
if(($loadtype!='autofield' || ($loadtype=='autofield' && $ctag->GetAtt('autofield')==1)) && in_array($ctag->GetName(), $fieldsname) )
{
$href1 = explode($ctag->GetName().'=', $filterarr);
$href2 = explode('&', $href1[1]);
$fields_value = $href2[0];
$dede_addonfields .= '
'.$ctag->GetAtt('itemname').':';
switch ($type) {
case 1:
$dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? 'GetName()."=".$fields_value,"",$filterarr).'">全部' : '全部').' ';
$addonfields_items = explode(",",$ctag->GetAtt('default'));
for ($i=0; $i
{
$href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);//echo $href;
$dede_addonfields .= ($fields_value!=urlencode($addonfields_items[$i]) ? ''.$addonfields_items[$i].'' : ''.$addonfields_items[$i].'')." ";
}
$dede_addonfields .= '';
break;
case 2:
$dede_addonfields .= 'GetName().' οnchange="window.location=this.options[this.selectedIndex].value">
'.'GetName()."=".$fields_value,"",$filterarr).'">全部';
$addonfields_items = explode(",",$ctag->GetAtt('default'));
for ($i=0; $i
{
$href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);
$dede_addonfields .= ''.$addonfields_items[$i].'
';
}
$dede_addonfields .= '
';
break;
}
}
}
}
echo $dede_addonfields;
}
php织梦二次开发的功能例子,织梦DedeCMS二次开发联动筛选功能的实现(含多选功能)...相关推荐
- php织梦二次开发的功能例子,织梦dedecms二次开发php使用json讲解
织梦dedecms二次开发php使用json讲解 简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将 ...
- 织梦php开发tags功能开发,织梦dedecms二次开发中几个标签的应用
在织梦dedecms 里面对于数组进行循环的标签有好几个,在前台模板即使用静态模板引擎有,{dede:foreach array='数组名称'}[field:key/] [field:value/]{ ...
- 如何学习织梦二次开发,怎样进行dedecms二次开发
在织梦基地已经做过一个教程"织梦二次开发流程分析教程",在这个教程里面对二次开发流程作了简单分析,本教程将介绍如何学习织梦二次开发和对织梦系统进行二次开发. 掌握二次开发基础知识 ...
- 织梦二次开发写php,PHP教程—DedeCMS二次开发(二)
织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概念进行明确分析和定位. ...
- (dede)织梦系统二次开发笔记
(dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...
- dedecms二次开发:自定义模型使用教程
dedecms二次开发:自定义模型使用教程 在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章.图集.软件.商品.分类信息.专题.通过系统 ...
- Mixly第三方库开发的两种方法——U8g2库二次开发
Mixly第三方库开发的两种方法--U8g2库二次开发 前言 方法一:自定义库 1.创建库文件夹 2.开始编程 2.1.定义图形块的基本信息 2.2.定义图形块的外观样式 2.3.定义图形块与C语言的 ...
- 抖音seo源码二次开发,短视频seo源码二次开发
抖音seo源码二次开发,短视频seo源码二次开发 开发逻辑及部分代码展示 抖音seo系统前端采用vue 与React技术语言,后端采用jave后台技术语言. 抖音seo是什么技术逻辑呢?seo是搜索引 ...
- ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境
文章目录 与PyCharm IDE集成 简介 ANSA和META自动补全 安装说明 在PyCharm中工作 与PyCharm IDE集成 简介 PyCharm 是一个集成开发环境(IDE).它是专 ...
最新文章
- String 中的hashCode方法
- Django+JWT实现Token认证
- Boost:基于Boost的优先调度器程序
- 基于Xml 的IOC 容器-分配路径处理策略
- (十三)算法设计思想之“动态规划”
- Android之 如何在退出一个activity后,很好的取消AsyncTask继续运行
- JSP基础教程之表单编辑
- jenkins(一)------Windows环境下jenkins下载和安装
- 计算机无法外接投影,电脑连不上投影仪怎么办
- 设置及清除Excel打开密码的两种方法
- 天龙八部,数据可视化分析虚竹和童姥居然关系非同一般
- 【K8S etcd篇】部署etcd 3.4.14 集群
- MT【352】极值点偏移
- 变色镜片 | 夏日光线防护新宠儿
- 上面两点下面一个三角形_解三角形的新视野——定角对定边~
- CMD 创建初始化Vue项目
- 支持多线程编程的Web Workers
- 这可能是你见过最硬核的微服务入门指南!
- 正方教务系统——用Postman优雅的选课
- 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
热门文章
- 网络营销之百度问答平台
- OTG线不支持移动硬盘的问题
- dmp文件的压缩比例
- 电力线上网的新闻回顾:中电飞华被叫停(2003年07月11日)
- D1. RPD and Rap Sheet (Easy Version) (交互题+构造)
- 2018年Java前景解析
- 2023最新版本会声会影下载及新增功能详情
- 微软实习生日记 第二篇 微软实习生招聘指导手册
- [转]SP 2010: How To – Event Receivers and Custom Error Pages
- 爱思益:一年硕的求职春天在哪里?