方卡在线ASP系统的前台筛选,效果图如下:
后台:
前台:
实现方法:
前台根据数据生成URL,然后调用后台数据。
注意:本次修改是在ISite企业建站系统V1.2.3的基础之上修改的。
实现过程:
1、创建字段之类的就不说了,只说程序修改。
2、构建模板的我就不说了。上面字段显示的代码为:{$SearchFieldstr$}
3、JQ代码为:
$(function(){ //筛选开始 $("#filter li a").click(function () { $(this).parents("ul").children("li").each(function () { $('a',this).removeClass("on"); }); $(this).attr("class", "on"); {$If(0,{$ModuleId$},=)$} $("#filter_a").attr("href","/Search/?SearchType=1"+RetSelecteds()); {$Else$} location.href = "/Search/?SearchType=1"+RetSelecteds(); {$End If$} }); //获取传来的信息并变色 //var fieldlist = getUrlParam('SearchFieldList'); var fieldlist = "{$SearchFieldList$}"; var field = fieldlist.split(","); for (var i=0 ; i< field.length-1 ; i++) { fields = field[i].split("||"); $("[date='"+fields[1]+"']").attr("class", "on"); } //筛选结束 }
4、修改ASP程序,打开Class/Cls_Template.asp文件,在约580行的Public Function SearchChange(TemplateCode)函数中增加
TemplateCode=ReplaceTag(TemplateCode,"{$SearchFieldstr$}",Getfilter(SearchType))
并在该文件结尾增加函数
'============================== '函 数 名:Getfilter '作 用:获取筛选字段 '参 数:seachType 搜索类型 '============================== Private Function Getfilter(SearchType) Dim sqlstr,Fieldstr,Field_option,search_Temp,SearchTypes Select case SearchType case 0 SearchTypes = 1 case 1 SearchTypes = 0 end Select Sqlstr="Select * From [Fk_Field] Where Fk_Field_Isfilter=1 And Fk_Field_Model=" & SearchTypes Rs.Open Sqlstr,Conn,1,1 If Not Rs.Eof Then Fieldstr = "" While (Not Rs.Eof) if Rs("Fk_Field_Option")<>"" Then Fieldstr = Fieldstr & "<ul id="""&Rs("Fk_Field_Tag")&"""><li> <strong>" & Rs("Fk_Field_Name") & "</strong><a href=""javascript:void(0);"" rel="""&Rs("Fk_Field_Tag")&""" date="""">全部</a>" Field_option=Split(Rs("Fk_Field_Option"),"<br />") For Each search_Temp In Field_option If Instr(search_Temp,"||")>0 Then Fieldstr = Fieldstr & " <a href=""javascript:void(0);"" rel="""&Rs("Fk_Field_Tag")&""" date="""&Split(search_Temp,"||")(0)&""">" &Split(search_Temp,"||")(1)&"</a>" End If Next Fieldstr = Fieldstr & "</li></ul>" &vbCrLf End if Rs.MoveNext Wend End If Rs.Close Getfilter=Fieldstr End Function
在文件约840行
ElseIf SearchStr<>"" Then Sqlstr=Sqlstr&" And (Fk_Article_Title Like '%%"&SearchStr&"%%'" If SearchField<>"" Then search_TempArr=Split(SearchField,",") For Each search_Temp In search_TempArr If search_Temp="IsContent" Then Sqlstr=Sqlstr&" Or Fk_Article_Content Like '%%"&SearchStr&"%%'" Else Sqlstr=Sqlstr&" Or Fk_Article_Field Like '%%"&search_Temp&"|-Fangka_Field-|%%"&SearchStr&"%%'" End If Next End If Sqlstr=Sqlstr&")" End If
的End If上面新增加
ElseIf SearchFieldList<>"" Then '20160125提升IF结构 search_TempArr=Split(SearchFieldList,",") For Each search_Temp In search_TempArr If Instr(search_Temp,"||")>0 Then Sqlstr=Sqlstr&" And Fk_Article_Field Like '%%"&Split(search_Temp,"||")(0)&"|-Fangka_Field-|%%"&Split(search_Temp,"||")(1)&"%%'" End If Next
代码。
在约1051行Select Case VauleArr(2)之上修改
if SearchFieldList<>"" Then '20160125提升IF结构 search_TempArr=Split(SearchFieldList,",") For Each search_Temp In search_TempArr If Instr(search_Temp,"||")>0 Then If Split(search_Temp,"||")(0)="Module" Then Module=Cint(Split(search_Temp,"||")(1)) if Module<>0 Then Rs.Open "select Fk_Module_Id From [Fk_Module] Where Fk_Module_Level="&Module,Conn,1,1 modulestr=cstr(Module) While (Not Rs.Eof) modulestr = modulestr & "," & rs("Fk_Module_Id") Rs.Movenext Wend Rs.Close Sqlstr=Sqlstr&" And Fk_Product_Module In ("&modulestr&")" End if Else Sqlstr=Sqlstr&" And Fk_Product_Field Like '%%"&Split(search_Temp,"||")(0)&"|-Fangka_Field-|%%"&Split(search_Temp,"||")(1)&"%%'" End if'20160227结束 End If Next End if
代码。
已经将修改过的Cls_Template.asp文件上传,可以对照修改。
代码最终结果如下:Cls_Template.asp