科汛KesionCMS:商城幻灯片调用商品大图方法[原创]
使用kesioncms的商城模型时,发现如果分别上传商品的大图和小图时,商城模型的幻灯片调用的却是商品的小图,这就让人郁闷了,在论坛求助后无人问津,只好自己动手!
曾经用LB和SQL两种标签都做过幻灯片部分的优化处理,但这次对6.5新增的Flash幻灯4是没想好怎么实现,只好对系统函数动刀,原理是新增判断幻灯模型是否为商城模型,如果是则调用商品大图,很简单吧!这样无论哪种幻灯都能应用自如。下面对我的方法进行详解,不知是不是最合适的,如果你有更牛X的,欢迎分享!
首先找到文件 Kesion.Label.FunctionCls.asp,查找到通用幻灯函数GetSlide,以下是具体修改及说明,如有疑问,留言处理!ps. 红色为新增部分
Function GetSlide(LabelStyle)
LoadLabelParam
If LoadSucceed = false Then GetSlide="标签加载出错!":Exit Function
Dim SqlStr,TableName,FieldStr
If ModelID="0" Then
TableName = "[KS_ItemInfo]" : FieldStr="I.InfoID as ID,I.Title,I.ChannelID,I.Tid,I.PhotoUrl,I.Fname"
Param = Param & " and PhotoUrl<>''"
Else If ModelID="5" Then '如果是商城模型,则调出商品大图
TableName = "[KS_Product]" : FieldStr="I.ID,I.Title,I.Tid,I.PhotoUrl,I.BigPhoto,I.Fname"
Else
TableName = KS.C_S(ModelID,2) : FieldStr="I.ID,I.Title,I.Tid,I.PhotoUrl,I.Fname"
If KS.C_S(ModelID,6)=1 Then Param=Param & " and I.PicNews=1"
End If
End If
SqlStr = "SELECT TOP " & Num & " " & FieldStr & " FROM " & TableName & " I " & Param & " ORDER BY I.ID Desc"
'''''''''以下代码部分省略,找到并修改函数部分 ExplainSlideLabelBody()'''''''''
IF Cint(SlideType)<>1 Then
Dim ImgArrStr,LinkArrStr,TextArrStr
N=0
For K=0 To TotalNum-1
Set Node=DocNode.Item(n)
Title = Node.SelectSingleNode("@title").text
'PhotoUrl = Node.SelectSingleNode("@photourl").text : PhotoUrl= GetPicUrl(PhotoUrl) '此行为原句,注释掉
'修改开始:如果是商城模型则调出商品大图作为幻灯图片
If ModelID="5" Then
PhotoUrl = Node.SelectSingleNode("@bigphoto").text : PhotoUrl= GetPicUrl(PhotoUrl)
Else
PhotoUrl = Node.SelectSingleNode("@photourl").text : PhotoUrl= GetPicUrl(PhotoUrl)
End If
'修改结束:如果是商城模型则调出商品大图作为幻灯图片
If ModelID=0 Then CurrModelID=Cint(Node.SelectSingleNode("@channelid").text) Else CurrModelID=ModelID
LinkUrl = KS.GetItemURL(CurrModelID,Node.SelectSingleNode("@tid").text,Node.SelectSingleNode("@id").text,Node.SelectSingleNode("@fname").text)
'''''''''以下代码部分省略'''''''''