KesionCMS V6宣布了一段时间了,使用过V6的朋侪都知道pp电子的系统函数标签已经是很是无邪了,更让人心动的是她的自界说样式输出(类似sql标签的循环体),但官方在思量到整体性能的条件下,默认情形下只能用一些常见的字段
默认的可用字段如下:
但这些可用字段有可能不可完全知足所有用户的需求,好比一些用户想挪用文章的作者,泉源等,那就实现不了了
可以见这个用户的需求(http://bbs.kesion.com/dispbbs.asp?boardid=41&Id=104363&page=5)
没关系,若是有这个需求又不想用sql标签,只需要简朴一步,就可以实现随意挪用你想到的字段
V6最先的标签诠释引擎已周全升级,扩展性极简朴.pp电子的系统函数标签诠释文件主要在kesion.label.functioncls.asp这个文件中,那么请你用DW翻开ks_cls/kesion.label.functioncls.asp
找到结构sql盘问语句的通用函数,约莫在200多行吧
'加载模子通用盘问字段
Public Sub LoadField(ByVal ModelID,ByVal PrintType,ByVal PicStyle,ByVal ShowPicFlag,ByRef FieldStr,ByRef TableName,ByRef Param)
If ModelID="0" Then
TableName = "[KS_ItemInfo]"
FieldStr = "I.ChannelID,I.InfoID as ID,I.Title,I.Tid,I.Intro,I.PhotoUrl,I.AddDate,I.Inputer,I.Popular,I.Fname,I.Hits"
If PrintType=2 or (instr(LabelStyle,"{@photourl}")>0 and PrintType>2) Then Param = Param & " And I.PhotoUrl<>''"
Else
TableName=KS.C_S(ModelID,2)
Select Case KS.C_S(ModelID,6)
Case 1
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
FieldStr=FieldStr & ",I.TitleType,I.TitleFontColor,I.TitleFontType"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.Intro" : If PrintType=2 or (instr(LabelStyle,"{@photourl}")>0 and PrintType>2) Then Param = Param & " And I.PicNews=1"
If PrintType>=3 Then FieldStr=FieldStr & ",I.ReadPoint"
Case 2
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.PictureContent As Intro"
If PrintType>=3 Then FieldStr=FieldStr & ",I.ReadPoint"
Case 3
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.DownContent As Intro,I.DownSize,I.Rank"
If PrintType>=3 Then FieldStr=FieldStr & ",I.ReadPoint"
Case 4
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.FlashContent As Intro,I.Author,I.Rank"
If PrintType>=3 Then FieldStr=FieldStr & ",I.ReadPoint"
Case 5
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.ProIntro As Intro,I.BigPhoto,I.Price_market,I.Price_member,I.Price,I.Price_Original,I.Discount,I.Promodel,I.Point"
If KS.ChkClng(ParamNode.getAttribute("producttype"))<>0 Then Param =Param & " And I.ProductType="&KS.ChkClng(ParamNode.getAttribute("producttype"))
Case 7
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.MovieContent As Intro"
If PrintType>=3 Or PicStyle=13 Or PicStyle=14 Or PicStyle=15 Then FieldStr=FieldStr & ",I.MovieAct,I.MovieDY,I.MovieDQ,I.MovieTime,I.MovieYY,I.ReadPoint,I.Rank"
If PrintType=2 And PicStyle=15 Then FieldStr=FieldStr & ",I.MovieDy"
Case 8
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits,I.TypeID"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.GQContent As Intro"
If PrintType>=3 Or PicStyle=16 Or PicStyle=17 Then FieldStr=FieldStr & ",I.ValidDate,I.ContactMan,I.Tel,I.Address,I.Province,I.City,I.CompanyName"
If KS.ChkClng(ParamNode.getAttribute("typeid"))<>0 Then Param =Param & " And I.TypeID="&KS.ChkClng(ParamNode.getAttribute("typeid"))
Case Else
FieldStr = "I.ID,I.Title,I.Tid,I.PhotoUrl,I.AddDate,I.Inputer,I.Popular,I.Fname,I.Hits"
If PrintType=2 or (instr(LabelStyle,"{@photourl}")>0 and PrintType>2) Then Param = Param & " And I.PhotoUrl<>''"
End Select
If PrintType=4 Then FieldStr=FieldStr & GetDiyFieldStr(ModelID)
End If
End Sub
若是看懂代码的用户,相信很容易看出来是凭证模子结构的盘问字段,这里我们就以文章模子为例,找到如下代码
Case 1
FieldStr = "I.ID,I.Title,I.Tid,I.Inputer,I.Fname,I.AddDate,I.Popular,I.Hits,I.Author"
FieldStr=FieldStr & ",I.TitleType,I.TitleFontColor,I.TitleFontType"
If PrintType>=2 Then FieldStr=FieldStr & ",I.PhotoUrl,I.Intro" : If PrintType=2 or (instr(LabelStyle,"{@photourl}")>0 and PrintType>2) Then Param = Param & " And I.PicNews=1"
If PrintType>=3 Then FieldStr=FieldStr & ",I.ReadPoint"
其中红色的,i.author 是我加上的,就这么简朴一步,你的系统函数标签的自界说样式里就已经直接用{@author}这样的标签挪用出文章的作者了,其它模子类似,详细想要挪用的字段可以翻开ks_article表审查
疑问:
1.那这么简朴,官方为什么不把所有字段都加进去呢?这样就不必用户自己加了,我利便?
答:我上面已经说到了思量到性能问题,盘问字段应该只管的少.以是也不是说你盘问越多越好.
2.为什么我按上面修改了,但我用{@字段名称}照旧盘问不出来呢?
答:检查标签属性里的规模有没有指定详细的模子,只有指定详细模子才有用,否则她盘问的是KS_ItemInfo表