DedeCms织梦二次开发网-Dede织梦工场-DedeCms教程-Dede二次开发-DedeCms二次开发-Dede模块开发-Dede插件开发-Dede标签开发DedeCms织梦二次开发网

DedeCms织梦联动筛选[伪静态版-单链接形式]

摘要:DedeCms织梦联动筛选[伪静态版-单链接形式],网站用的是静态,筛选用的是伪静态,筛选的伪静态地址以字段和键值呈现,让筛选URL与静态保持一致

演示效果

DedeCms织梦联动筛选[伪静态版-单链接形式]

更新日记

2017/6/25 修正分页叠加问题和伪静态规则超过10页报错问题

老用户可以参考这个修改修复问题,新用户可以跳过,下面下载最新版使用即可

1、打开 \include\arc.listview.class.php 找到

$plist = str_replace('.html', '', $plist);

在它的下面加入

$plist = preg_replace("/_(\d+)_(\d+)/i",'_\\1',$plist);

2、打开你的伪静态文件 如apache的 .htaccess

#筛选列表分页
RewriteRule ^/?.+/list_([0-9]+)_([0-9a-z_]+_[0-9])_([0-9]+)\.html$    plus/list.php?tid=$1&filter=$2&PageNo=$3
#筛选列表
RewriteRule ^/?.+/list_([0-9]+)_([0-9a-z_]+_[0-9])\.html$    plus/list.php?tid=$1&filter=$2

改成

#筛选列表分页
RewriteRule ^/?.+/list_([0-9]+)_([0-9a-z_]+_[0-9]+)_([0-9]+)\.html$    plus/list.php?tid=$1&filter=$2&PageNo=$3
#筛选列表
RewriteRule ^/?.+/list_([0-9]+)_([0-9a-z_]+_[0-9]+)\.html$    plus/list.php?tid=$1&filter=$2

正文开始

DedeCms织梦联动筛选[伪静态版],网站用的是静态,筛选用的是伪静态,筛选的伪静态地址以字段和键值呈现,让筛选URL与静态保持一致。如:

静态栏目页

http://www.123.com/juji/

静态栏目页分页

http://www.123.com/juji/list_1_2.html

伪静态筛选页

http://www.123.com/juji/list_1_area_0.html

伪静态筛选分页

http://www.123.com/juji/list_1_area_0_2.html

【警告】
操作之前先备份你的程序这2个文件。
\include\arc.listview.class.php
\include\extend.func.php

dedecms织梦联动筛选[伪静态版-单链接形式] 打包下载

云盘下载   密码: 7kas

安装说明

1. 选择对应的编码,把文件夹文件全部覆盖到对应目录;

2. 后台-系统配置 添加变量
    变量名称:cfg_rewritea
    变量类型:布尔(Y/N)
    参数说明:筛选伪静态
    变量值:Y
    所属组:站点设置

DedeCms织梦联动筛选[伪静态版-单链接形式]

3. 后台 - 系统 - 系统设置 - 系统基本参数 - 其他选项 - 禁用模板标签 ,把php删除后保存;

DedeCms织梦联动筛选[伪静态版-单链接形式]

4. 后台 - 核心 - 频道模型 - 内容模型管理
    找到您要设置筛选的模型,这里以“普通文章”为例,点击右边的编辑按钮,在出来的页面中切换到“字段管理”,
    点击“添加新字段”,填写的时候注意"数据类型"选择【使用option下拉框】;

DedeCms织梦联动筛选[伪静态版-单链接形式]

DedeCms织梦联动筛选[伪静态版-单链接形式]

5. 添加文档,选择对应的筛选,已经添加的文档需要重新编辑,选择对应的筛选;

6. .htaccess 为apache伪静态,放在网站根目录,用于筛选伪静态使用,iis和nginx用户自行转换。

7. 设置网站整站为静态,生成,浏览网站带筛选的栏目,看效果。

调用说明

在需要显示筛选的地方加入(手机版也一样)
{dede:php}AddFilter(模型ID号,类型,"字段1");{/dede:php}
例:
{dede:php}AddFilter(1,1,"area");{/dede:php}

多个字段用半角逗号分隔
{dede:php}AddFilter(模型ID号,类型,"字段1,字段2,字段3");{/dede:php}
例:
{dede:php}AddFilter(1,1,"area,type,time");{/dede:php}

title标题添加筛选文字进去

<title>{dede:field.time/} {dede:field.area/} {dede:field.type/} - {dede:field.title/} - {dede:global.cfg_webname/}</title>

DedeCms织梦联动筛选[伪静态版-单链接形式]

内容页输出所属筛选值+链接(支持动态/伪静态)

DedeCms织梦联动筛选[伪静态版-单链接形式]

实现教程

打开 \include\extend.func.php 在最下面加入

/**
 *  内容页输出所属筛选值+链接
 *
 * @access    public
 * @param     string  $id	文档id
 * @param     string  $fieldsnamef	单个筛选字段
 * @return    string
 */
function GetFilterUrl($id,$fieldsnamef)
{
	global $dsql,$cfg_cmspath,$cfg_rewritea;
	if (!isset($id) && !is_numeric($id))
	{
		return '';
	}
	else
	{
		$arcrow = $dsql->GetOne(" Select typeid,channel From `SzsFox_archives` where id='$id' ");
		$channelid = $arcrow['channel'];
		$tid = $arcrow['typeid'];
		$typerow = $dsql->GetOne(" Select typedir From `SzsFox_arctype` where id='$tid' ");
		$typedir = MfTypedir($typerow["typedir"]);
		
		$channelrow = $dsql->GetOne("SELECT addtable FROM SzsFox_channeltype where id='$channelid'");
		$addtable = trim($channelrow['addtable']);

		$fieldrow = $dsql->GetOne("SELECT $fieldsnamef FROM `$addtable` WHERE aid=$id");
	}
	$plist = $_SERVER['HTTP_X_REWRITE_URL'] ? string_filter($_SERVER['HTTP_X_REWRITE_URL']) : string_filter($_SERVER['REQUEST_URI']);
	if($cfg_rewritea == 'Y')
	{
		$plist = stripos($plist, "makehtml_list_action.php") ? $cfg_cmspath.$typedir.'/' : $plist;
		$filterarr = string_filter(stripos($plist, ".html") ? str_replace(".html", "", $plist) : $cfg_cmspath.$typedir.'/');
	}
	else
	{
		$nofilter = (isset($_REQUEST['TotalResult']) ? "&TotalResult=".$_REQUEST['TotalResult'] : '').(isset($_REQUEST['PageNo']) ? "&PageNo=".$_REQUEST['PageNo'] : '');
		$filterarr = string_filter(stripos($plist, "list.php?tid=") ? str_replace($nofilter, '', $plist) : $GLOBALS['cfg_cmsurl']."/plus/list.php?tid=".$tid);
	}

	$cInfos = $dsql->GetOne(" Select * From  `SzsFox_channeltype` where id='$channelid' ");
	$fieldset = $cInfos['fieldset'];
	$dtp = new DedeTagParse();
    $dtp->SetNameSpace('field','<','>');
    $dtp->LoadSource($fieldset);
    $result = '';
    if(is_array($dtp->CTags))
    {
		foreach($dtp->CTags as $tida=>$ctag)
        {
            $field_name = $ctag->GetName();
			$fieldsname = $fieldsnamef ? explode(",", $fieldsnamef) : explode(",", $field_name);
			if( in_array($field_name, $fieldsname))
			{
				if($cfg_rewritea == 'Y')
				{
					$href = "";
					$addonfields_items = explode(",",$ctag->GetAtt('default'));

					$i = array_search($fieldrow[$fieldsnamef],explode(",",$ctag->GetAtt('default')));
					$filterarr1 = explode("list_", $filterarr);
					$href = $filterarr1[0]."list_".$tid.'_'.$field_name.'_'.$i;

					$href .= ".html";
					$href = str_replace(array("_".$field_name.".",".","_".$_REQUEST['TotalResult']."_".$_REQUEST['PageNo']),array(".",".",""),$href);
					
					$result .= '<a href="'.$href.'">'.$addonfields_items[$i].'</a>';

				}
				else
				{
					$addonfields_items = explode(",",$ctag->GetAtt('default'));
					
					$i = array_search($fieldrow[$fieldsnamef],explode(",",$ctag->GetAtt('default')));
					
					$href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);
					$href = str_replace("&TotalResult=".$_REQUEST['TotalResult']."&PageNo=".$_REQUEST['PageNo'], "", $href);
					
					$result .= '<a title="'.$addonfields_items[$i].'" href="'.$href.'">'.$addonfields_items[$i].'</a>';
				}
			}
        }
    }
	return $result;
}

内容页模板中调用标签

<small>区域:</small>{dede:field.id function=GetFilterUrl(@me,'area')/}
<small>地铁:</small>{dede:field.id function=GetFilterUrl(@me,'subway')/}

标红的地方是你的筛选字段名

首页/列表页调用标签

区域:[field:id function=function=GetFilterUrl(@me,'area')/]

地铁:[field:id function=function=GetFilterUrl(@me,'subway')/]

DedeCMS织梦工场QQ群

群号(23871657) DedeCMS织梦工场
只适用于讨论dedecms二次开发相关话题,其他闲聊、广告、斗图、捣乱请自重自觉,谢谢合作!

不忘初心 、方得始终

DedeCMS织梦工场 - 致力于把最实用的DedeCms二次开发教程,DedeCms二次开发视频,DedeCms二次开发实例经验,分享给最需要的站长,希望每一位来访的站长都能有所收获!

如果您认为本网站的内容质量不错或者读后成功解决你心中的难题,觉得收获很大,那么不妨小额赞助一下,让我们有动力继续写出高质量的教程与更棒的程序教程。打赏记录

赞助方式

donate_zhifubao 支付宝手机客户端扫描上面的二维码进行赞助

donate_weixin 微信手机客户端扫描上面的二维码进行赞助

来源:DedeCms织梦工场 » DedeCms织梦联动筛选[伪静态版-单链接形式]
据说喜欢分享的,后来都成了大神: 更多