FoosunCMS-制作强大的通用标签
导航:返回上一页
什么是通用标签[ ]
简单地说,就是标签中调用标签 如:{FS_{FS_当前类目}_热点}
通用标签有什么用[ ]
利用通用标签可以让N个类目共同调用一个模板,而显示的内容又各不相同。 它可以大大减少你制作模板的工作,也会给日常的维护带来很大的方便。
通用标签的原理是什么[ ]
现在有多少个要表现的类就要写多少个模板与之对应。 比如说:网页技术下有ASP、JSP、PHP、JAVA、CGI等等一堆子栏目。每个子栏目需要写一个对应的模板和它对应。因为每个模板上的“相关新闻”、“热点新闻”等都不能用同一个标签。如果写一个可以自动得出目前栏目所在的父类的方法,放到一个公共模板里供标签调用,无论有多少个子栏目页面,只要显示的栏目一样,只需要写二个模板就够了。一个是Class_public.htm,一个是Detail_public.htm
怎么实现呢?比如需要在asp,jsp,php,java,cgk几个板块中“热点新闻”。只需要在Class_public.htm中定义{FS_{FS_当前栏目}_热点新闻},然后去自定义标签里加上{FS_asp_热点新闻}{FS_jsp_热点新闻}。等就可以了。好象讲了半天也没说清楚。 PS解释下:{FS_{FS_当前栏目}_热点}
会自动先把{FS_当前栏目}得出来,(当前栏目也是自动获取的,不需要指定) 假设当前栏目的名称是asp,那么就变成了{FS_asp_热点}。只需要在标签库中有{FS_asp_热点}就可以显示ASP的热点新闻了
实现通用标签需要改三个页面。不要嫌麻烦,它真的会带给你前所未有的轻松!
建议先备份下述三个文件:
- Admin\Refresh\RefreshFunction.asp
- Admin\Refresh\Function.asp
- Admin\Refresh\SelectFunction.asp
第一步[ ]
打开Admin\Refresh\RefreshFunction.asp ,拉到倒数第二行(也就是%>前面),,把下面的代码复制上去
'****************************** '根据ID得到当前所在栏目的名称 'author:lino 'Start '***************************** Function ypren() Select Case RefreshType Case "Class" ypren = GetClassNameById(RefreshID) Case "News" ypren = GetNewsClassNameById(RefreshID) Case "Special" ypren = GetSpecialClassNameById(RefreshID) Case "DownLoad" ypren = GetDownloadClassNameById(RefreshID) Case Else ypren = "" End Select End Function '栏目名称 Function GetClassNameById(ClassID) Dim SqlClass,RsClassObj if ClassID = "" then Exit Function '**********如果是3.1版,把下行NewsClass改成FS_NewsClass Set RsClassObj = Conn.Execute("Select ClassCName from NewsClass where ClassID='" & ClassID & "'") if Not RsClassObj.Eof then GetClassNameById=RsClassObj("ClassCName") end if RsClassObj.Close Set RsClassObj = Nothing End Function '新闻所在的类目 Function GetNewsClassNameById(NewsID) Dim SqlClass,RsClassObj if NewsID = "" then Exit Function '**********如果是3.1版,把下行News改成FS_News Set RsClassObj = Conn.Execute("Select ClassID from News where NewsID='" & NewsID & "' ") if Not RsClassObj.Eof then GetNewsClassNameById=RsClassObj("ClassID") GetNewsClassNameById=GetClassNameById(GetNewsClassNameById) end if RsClassObj.Close Set RsClassObj = Nothing End Function '专题所在的类目 Function GetSpecialClassNameById(SpecialID) Dim SqlClass,RsClassObj if SpecialID = "" then Exit Function '**********如果是3.1版,把下行Special改成FS_Special Set RsClassObj = Conn.Execute("Select CName from Special where SpecialID='" & SpecialID & "' ") if Not RsClassObj.Eof then GetSpecialClassNameById=RsClassObj("CName") end if RsClassObj.Close Set RsClassObj = Nothing End Function '下载所在的类目 Function GetDownloadClassNameById(DownloadID) Dim SqlClass,RsClassObj if DownloadID = "" then Exit Function '**********如果是3.1版,把下行Download改成FS_Download Set RsClassObj = Conn.Execute("Select ClassID from Download where DownloadID='" & DownloadID & "' ") if Not RsClassObj.Eof then GetDownloadClassNameById=RsClassObj("ClassID") GetDownloadClassNameById=GetClassNameById(GetDownloadClassNameById) end if RsClassObj.Close Set RsClassObj = Nothing End Function '************************** 'End '**************************
第二步[ ]
打开Admin\Refresh\Function.asp (sorry,这里应把RefreshFunction.asp 更正为Function.asp。,拉到倒数第二行(也就是%>前面),,把下面的代码复制上去
'****************************** '把{FS_当前类目}转成类目名称 'author:lino 'Start '***************************** Function ReplaceYpren(Content) Dim whatIsClass whatIsClass=GetLableContent("ypren,") Content=replace(Content,"{FS_当前类目}",whatIsCLass) ReplaceYpren=Content 'response.write("Content is:"&Content) End Function '************************** 'End '**************************
第三步[ ]
打开Admin\Refresh\Function.asp (2005.10.23日修正)
搜索 Function ReplaceAllLable(Content) ,把下面代码放在其下一行
'************** 'Replace Lable '************** Content=ReplaceYpren(Content)
小提示:可以通过编辑器中的"查找"功能来找到Function ReplaceAllLable(Content)
第四步[ ]
打开Admin\Refresh\SelectFunction.asp
从(约)第9行
Select Case LCase(ParaArray(0))
开始,加入下面代码:
'****************************** '根据标签调用ypren()方法 'author:lino 'Start '***************************** Case "ypren" If UBound(ParaArray) = 1 then GetLableContent = ypren() Else Exit Function End if '************************** 'End '**************************
OK,现在你可以在一个模板中用{FS_{FS_当前类目}_热点}、{FS_{FS_当前类目}_推荐}等等标签去体会通用标签的强大了!