菜单
首页
关于
首页
»
默认分类
» phpcms v9 联动菜单筛选插件
phpcms v9 联动菜单筛选插件
作者:
cokll
分类:
默认分类
时间: 2014-10-25
评论:
暂无评论
extention.func.php 文件 $v){ if($v['parentid']==$field_value){ $array[$k]['name'] = $v['name']; $array[$k]['linkageid'] = $v['linkageid']; $array[$k]['value'] = $k; $array[$k]['url'] = str_replace('{$'.$fieldname.'}',$k,$urlrule); $array[$k]['menu'] = $field_value == $k ? '
'.$v['name'].'
' : '
'.$v['name'].'
' ; } } return $array; } function structure_filters_url($fieldname,$array=array(),$type = 1,$modelid) { if(empty($array)) { $array = $_GET; } else { $array = array_merge($_GET,$array); } //TODO $fields = getcache('model_field_'.$modelid,'model'); if(is_array($fields) && !empty($fields)) { ksort($fields); foreach ($fields as $_v=>$_k) { if($_k['filtertype'] || $_k['rangetype']) { if(strpos(URLRULE,'.html') === FALSE) $urlpars .= '&'.$_v.'={$'.$_v.'}'; else $urlpars .= '-{$'.$_v.'}'; } } } //后期增加伪静态等其他url规则管理,apache伪静态支持9个参数 if(strpos(URLRULE,'.html') === FALSE) $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid=9'.$urlpars.'&page={$page}' ; else $urlrule =APP_PATH.'list-{$catid}'.$urlpars.'-{$page}.html'; //根据get传值构造URL if (is_array($array)) foreach ($array as $_k=>$_v) { if($_k=='page') $_v=1; if($type == 1) if($_k==$fieldname) continue; $_findme[] = '/{\$'.$_k.'}/'; $_replaceme[] = $_v; } //type 模式的时候,构造排除该字段名称的正则 if($type==1) $filter = '(?!'.$fieldname.'.)'; $_findme[] = '/{\$'.$filter.'([a-z0-9_]+)}/'; $_replaceme[] = ''; // print_r('/{\$'.$filter.'([a-z0-9_]+)}/'); //print_r('|'.$urlrule); $urlrule = preg_replace($_findme, $_replaceme, $urlrule); //print_r('|'.$urlrule); return $urlrule; } /** * 生成分类信息中的筛选菜单 * @param $field 字段名称 * @param $modelid 模型ID */ function filters($field,$modelid,$diyarr = array()) { $fields = getcache('model_field_'.$modelid,'model'); $options = empty($diyarr) ? explode("\n",$fields[$field]['options']) : $diyarr; $field_value = intval($_GET[$field]); foreach($options as $_k) { $v = explode("|",$_k); $k = trim($v[1]); $option[$k]['name'] = $v[0]; $option[$k]['value'] = $k; $option[$k]['url'] = structure_filters_url($field,array($field=>$k),2,$modelid); $option[$k]['menu'] = $field_value == $k ? '
'.$v[0].'
' : '
'.$v[0].'
' ; } $all['name'] = '全部'; $all['url'] = structure_filters_url($field,array($field=>''),2,$modelid); $all['menu'] = $field_value == '' ? '
'.$all['name'].'
' : '
'.$all['name'].'
'; array_unshift($option,$all); return $option; } /** * 获取联动菜单层级 * @param $keyid 联动菜单分类id * @param $linkageid 菜单id * @param $leveltype 获取类型 parentid 获取父级id child 获取时候有子栏目 arrchildid 获取子栏目数组 */ function get_linkage_level($keyid,$linkageid,$leveltype = 'parentid') { $child_arr = $childs = array(); $leveltypes = array('parentid','child','arrchildid','arrchildinfo'); $datas = getcache($keyid,'linkage'); $infos = $datas['data']; if (in_array($leveltype, $leveltypes)) { if($leveltype == 'arrchildinfo') { $child_arr = explode(',',$infos[$linkageid]['arrchildid']); foreach ($child_arr as $r) { $childs[] = $infos[$r]; } return $childs; } else { return $infos[$linkageid][$leveltype]; } } } // 根据linkageid递归到父级 function get_parent_url($modelid,$field,$linkageid=0,$array = array()){ $modelid = intval($modelid); if(!$modelid || empty($field)) return false; $fields = getcache('model_field_'.$modelid,'model'); $keyid = $fields[$field]['linkageid']; $datas = getcache($keyid,'linkage'); $infos = $datas['data']; if(empty($linkageid)){ $linkageid = intval($_GET[$field]); if(!$linkageid) return false; } $urlrule = structure_filters_url($field,array(),1,$modelid); $urlrule = str_replace('{$'.$field.'}',$infos[$linkageid]['parentid'],$urlrule); array_unshift($array,array('name'=> $infos[$linkageid]['name'],'url'=>$urlrule)); if($infos[$linkageid]['parentid']){ return get_parent_url($modelid,$field,$infos[$linkageid]['parentid'],$array); } return $array; } /** * 构造筛选时候的sql语句 */ function structure_filters_sql($modelid) { $sql = $fieldname = $min = $max = ''; $fieldvalue = array(); $modelid = intval($modelid); $model = getcache('model','commons'); $fields = getcache('model_field_'.$modelid,'model'); $fields_key = array_keys($fields); //TODO $sql = '`catid`=\'' . $_GET[catid] . '\' and `status` = \'99\''; foreach ($_GET as $k=>$r) { if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) { if($fields[$k]['formtype'] == 'linkage') { $datas = getcache($fields[$k]['linkageid'],'linkage'); $infos = $datas['data']; if($infos[$r]['arrchildid']) { $sql .= ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')'; } } elseif($fields[$k]['rangetype']) { if(is_numeric($r)) { $sql .=" AND `$k` = '$r'"; } else { $fieldvalue = explode('_',$r); $min = intval($fieldvalue[0]); $max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999; $sql .=" AND `$k` >= '$min' AND `$k` < '$max'"; } } else { $sql .=" AND `$k` = '$r'"; } } } return $sql; } ?> 使用方法: 覆盖到\phpcms\libs\functions这个目录下 后台添加字段(类型只能是联动菜单,和下拉列表)、然后选择作为筛选字段。 模板使用 ===============================
您已选择:
{loop get_parent_url($modelid,'diqu') $r}
{$r['name']}
{/loop} ============================== 联动菜单使用: {php $zones = show_linkage(1,0,$modelid,'diqu')} {if !empty($zones)}
地区:
全部展开
{loop $zones $r} {$r['menu']} {/loop}
{/if} 或 {php $zones = show_linkage(3360,0,3,'bzfl', array('catid'=>9))} {if !empty($zones)} {loop $zones $r} {$r['menu']} {/loop} {/if} ========================== 下拉列表使用 {loop filters('xz',$modelid) $r} {$r[menu]} {/loop} ========================== 配合列表标签使用: {php $sql = structure_filters_sql($modelid);} {pc:content action="lists" where="$sql" catid="$catid" modelid="$modelid" num="10" page="$page"} 伪静态: .ht : RewriteRule ^.*list-(\d*)-(\d*)-(\d*)-(\d*)-(\d*)-(\d*)-(\d*)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&bzcolor=$2&bzfl=$3&pbsize=$4&pcsize=$5&sjsize=$6&page=$7 .is :
标签: none
相关文章推荐
上一篇:
PHPCMS v9最实用的23个调用代码
下一篇:
Steam on EL6 (RHEL6 / Scientific Linux 6 / CentOS 6)
订阅本站
(RSS)
订阅→
评论已关闭
搜素
Go
文章分类
默认分类
18
Linux
1
STEAM
3
Centos
3
最新文章
BusyBox漏洞分析及复现(CVE-2022-30065)
小鱼在家刷机
fix Samsung SSD 1Gb
Working with more than 64 CPUs in Powershell
华为24
思科 20
C++ 字符串与字符数组 详解
Windows server 2012 激活教程
英业达 24
mvn 编译配置
归档
October 2024
October 2023
January 2021
December 2020
January 2019
November 2018
September 2018
July 2018
April 2018
December 2017
May 2017
April 2017
March 2017
September 2015
July 2015
October 2014
April 2014
March 2014
热门标签
Top ↑
评论已关闭