织梦字段属性筛选

1. 后台添加自己要筛选的字段

内容模型管理-编辑模型-字段管理-添加字段

2. 调整系统设置,允许运行php标签

系统 - 系统设置 - 系统基本参数 - 其他选项 - 禁用模板标签 ,把“php”删除后保存。

3. 添加属性调用函数

找到文件:inluce/extend.func.php,添加代码:

function _extendFilter($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+/" ,
                      "/<(\/?)(script|META|STYLE|HTML|HEAD|BODY|STYLE |i?frame|b|strong|style|html|img|P|o:p|iframe|u|em|strike|BR|div|a|TABLE|TBODY|object|tr|td|st1:chsdate|FONT|span|MARQUEE|body|title|\r\n|link|meta|\?|\%)([^>]*?)>/isU",
                      "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
                      );
        $tarr = array(" ",
                      "",
                      "\\1\\2",
                      );
        $str = preg_replace($farr, $tarr, $str);
        $str = str_replace(
               array( "<", ">", "‘", "\"", ";", "/*", "*", "../", "./"),
               array("&lt;","&gt;","","","","","","",""),
               $str);
    }
    return $str;
}

/**
 *  载入自定义表单(用于发布)
 *
 * @access    public
 * @param     string  $fieldset  字段列表
 * @param     string  $loadtype  载入类型 * @param     string  $column    文件路径(手机端首页调用时传入值为:m)
 * @return    string
 */

function AddFilter($channelid, $type=1, $fieldsnamef, $defaulttid, $loadtype=‘autofield‘, $column=‘plus‘)
{
    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 = _extendFilter(stripos($_SERVER[‘REQUEST_URI‘], "list.php?tid=") ? str_replace($nofilter, ‘‘, $_SERVER[‘REQUEST_URI‘]) : $GLOBALS[‘cfg_cmsurl‘]."/".$column."/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 $tida=>$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 .= ‘<div>‘;
                $dede_addonfields .= ‘<b>‘.$ctag->GetAtt(‘itemname‘).‘:</b>‘;
                switch ($type) {
                    case 1:
                        $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? ‘<a title="全部" href="‘.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).‘">全部</a>‘ : ‘<span>全部</span>‘);

                        $addonfields_items = explode(",",$ctag->GetAtt(‘default‘));
                        for ($i=0; $i<count($addonfields_items); $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]) ? ‘<a title="‘.$addonfields_items[$i].‘" href="‘.$href.‘">‘.$addonfields_items[$i].‘</a>‘ : ‘<span>‘.$addonfields_items[$i].‘</span>‘);
                        }
                        $dede_addonfields .= ‘</div>‘;
                    break;

                    case 2:
                        $dede_addonfields .= ‘<select name="filter"‘.$ctag->GetName().‘ onchange="window.location=this.options[this.selectedIndex].value">
                            ‘.‘<option value="‘.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).‘">全部</option>‘;
                        $addonfields_items = explode(",",$ctag->GetAtt(‘default‘));
                        for ($i=0; $i<count($addonfields_items); $i++)
                        {
                            $href = stripos($filterarr,$ctag->GetName().‘=‘) ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.‘&‘.$ctag->GetName().‘=‘.urlencode($addonfields_items[$i]);
                            $dede_addonfields .= ‘<option value="‘.$href.‘"‘.($fields_value==urlencode($addonfields_items[$i]) ? ‘ selected="selected"‘ : ‘‘).‘>‘.$addonfields_items[$i].‘</option>
                            ‘;
                        }
                        $dede_addonfields .= ‘</select><br/>
                        ‘;
                    break;
                }
            }
        }
    }
    echo $dede_addonfields;
}

4. 修改文档列表核心文件:include/arc.listview.php

文件改动较大,可以下载后比对自己的文件修改,自己文件之前未改动的可直接覆盖

点击下载

5.调用示例,以栏目id15为列

PC端当前栏目调用:{dede:php} AddFilter(2,1,‘‘,15); {/dede:php}

PC端其他页面调用 {dede:php} AddFilter(2,1,‘‘,15); {/dede:php}

手机端当前栏目调用:{dede:php} AddFilter(2,1,‘‘,15); {/dede:php}

手机端其他页面调用: {dede:php} AddFilter(2,1,‘‘,15,‘autofield‘,‘m‘); {/dede:php}

原文地址:https://www.cnblogs.com/bubuchu/p/10778104.html

时间: 2024-08-28 23:48:16

织梦字段属性筛选的相关文章

织梦多级联动筛选功能和风格

要实现的效果: ? 1.下载织梦多级筛选功能插件(二次开发好的):https://www.lanzous.com/i2w0cri 2.找到include,替换里面的arc.listview.class.php和extend.func.php. 3.然后找到后台核心--网站栏目管理--频道类型里的内容模型管理: ? 4.这里以普通文章为例,点击右面的编辑,切换为字段管理: ? 5.然后我们点击增加字段,这里我们增加了三个字段: ? ? 前台调用: {dede:php} AddFilter(1,1)

织梦CMS实现多条件筛选功能

用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个是前台的筛选实现,一个是后台根据前台的点击,反馈出相应的结果. 于是在网上搜索了N多的资料了之后,先实现前台的功能,就是你点了之后会有一个筛选的效果出来,当然,也只是一个效果.具体可以参照:jquery仿京东筛选效果.下面就一步一步用织梦来实现这样的功能. 首先我们先在后台自定义模型(自定义模型都不会的同学,可以直接去面壁思过了) 看到参照网

dedecms织梦联动筛选[伪静态-目录形式]

演示效果 dedecms织梦联动筛选[伪静态-目录形式],网站用的是静态,筛选用的是伪静态,筛选的伪静态地址以字段和键值目录形式呈现,让筛选URL与静态保持一致.如: 静态栏目页 http://www.123.com/dianshi/ 静态栏目页分页 http://www.123.com/dianshi/list_1_2.html 伪静态筛选页 http://www.123.com/dianshi/area_0/ 伪静态筛选分页 http://www.123.com/dianshi/area_0

[转载]织梦DEDE多选项筛选_联动筛选功能的实现_二次开发

织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就告诉大家如何对织梦进行二次开发实现这个很多人都需要的筛选功能,如下图所示: 首先需要说明的是这个功能需要在模板里面用到php标签,所以需要在后台模板引擎禁用标签里面解除这个标签的禁用,具体方法: 后台——系统——系统基本参数——其它选项——模板引擎禁用标签:php 将这个PHP去掉后保存就可以了!

织梦添加和调用自定义字段的方法

织梦自定义字段要想在任何位置任何模版中调用或者在{dede:list }和{dede:arclist }标签中调用,需要特殊设置.自定义字段就是列表附加字段自定义的字段. 一,织梦如何添加自定义字段:网站后台>核心>频道模型>内容模型管理>选择要添加自定义字段的频道模型,这里以图片集频道举例 注意:创建字段,前台参数这里“使字段可以在列表的底层模板中获得”这个必须勾选 在字段管理>添加新字段中添加(价格属性) 在基本设置里>列表附加字段中添加jiage(可以在列表模板{

dedecms织梦arclist 标签添加新的属性条件

1.在织梦后台给文章模型新增字段后,字段会保存在dede_addonarticle即文章附加表里: 比如: 2. 要想在arclist 标签里 {dede:arclist   titlelen=42 row=6 province='北京' }使用 province 属性条件,必须修改include/tag/lib/arclist.lib.php, (1) (2) (3) (4)由于arclist标签 没有关联 dede_addonarticle,而province字段是存在dede_addona

织梦DedeCms频道模型新建字段调用方法

不少朋友在使用织梦DedeCms建站的过程中可能会用到系统模型里面没有的字段,比如我想在内容模型里面加上一个价格的字段,这样就需要在频道模型里面添加上自定义字段,在发表文章的时候,可以在后台填入改字段的数值,再将调用代码插入到文件里面,生成html文件的时候,就会出现该字段的结果了. 修改方法如下: 巩义网站建设 1.进织梦DedeCms后台后打开 核心 -> 频道模型 -> 内容模型管理. 这样就会看到织梦DedeCms集成的几个内容模板,比如商品.图片集.文章和软件之类的,然后点击你需要修

advancedsearch.php织梦高级自定义模型字段无法调用解决方案

advancedsearch.php织梦dedecms 高级自定义模型字段无法调用解决方案 ,具体步骤如下: 1  打开修改puls/advancedsearch.php文件,找到复制代码(不同版本可能有所差别). $query = "SELECT addon.*, arctype.* FROM $addontable addon LEFT JOIN arctype ON arctype.id = addon.typeid $where $orderby"; } else { $que

织梦(dede)底层模板概念、常用底层模板字段

织梦(dede)底层模板概念.常用底层模板字段 一.底层模板的概念以及调用方式: 1. 什么是底层模板? 底层模板不是一个模板! 他就是在实际页面当中所要显示的具体内容: 2. 底层模板的应用: 调用方式 [field:字段名/] 实例: {dede:arclist row='6' titlelen='20'}          <li><a href="[field:arcurl/]" title="[field:fulltitle/]">