科汛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) 

'''''''''以下代码部分省略'''''''''