方卡在线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
