[修改]新闻内容中的图片自动适应页面大小、增加自身连接和无级缩放功能。
如果全部图片栏目(新闻内容中只有一张图片,没有其他任何内容)的话,则可以实现点击图片打开下一页的功能
第一步:
打开:Foosun\Admin\Refresh\Function.asp
找到大约278行,增加两个函数:
'====================2006-06-16=====================================
Function NextNews(TempNewsID)
IF Fun_Refresh_Type <> "News" Then Exit Function
Dim TempID,TempCID,TSql,TObj,TempSql,TempObj
TSql = "Select ID,ClassID From Fs_News Where NewsID = '" & TempNewsID & "'"
Set TObj = Conn.Execute(TSql)
If Not TObj.Eof Then
TempID = TObj("ID")
TempCID = TObj("ClassID")
TempSql = "Select Top 1 * From Fs_News Where ID > " & TempID & " And AuditTF = 1 And DelTF = 0 And ClassID = '" & TempCID & "' Order By ID"
Set TempObj = Conn.Execute(TempSql)
If Not TempObj.Eof Then
NextNews = GetOneNewsLinkURL(TempObj("NewsID"))
Else
Exit Function
End If
Else
Exit Function
End If
TempObj.Close
Set TempObj = Nothing
TObj.Close
Set TObj = Nothing
End Function
'======================================================================================
'==============2006-05-07==============================================================
Function coden(contentss)
dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
re.Pattern="(script)"
Contentss=re.Replace(Contentss,"s cript")
re.Pattern="<img.[^>]*src(=| )(.[^>]*)>"
If instr(1,Contentss,"<IMG") = 1 Then
Contentss=re.replace(Contentss,"<a href=""" & NextNews(Fun_Refresh_ID) & """ title=""下一张图片""><img src=$2 class=""tk"" style=""cursor: pointer"" onmousewheel=""return zoom_img(event,this)"" onload=""return imgzoom(this,580)""></a>")
Else
Contentss=re.replace(Contentss,"<img src=$2 class=""tk"" onclick=""javascript:window.open(this.src);"" style=""cursor: pointer"" alt=按此在新窗口浏览图片 onmousewheel=""return zoom_img(event,this)"" onload=""return imgzoom(this,580)"">")
End if
set re = nothing
coden = contentss
end function
'=======================end=====================================================================
(this,700)这个700,你可以根据你的新闻浏览页面的表格的宽度自己改成合适你的。
对以下几句做一下说明:
onclick=""javascript:window.open(this.src);"" 点击图片新窗口打开自身,如果图片本身有连接,这一句可以不要。
style=""cursor: pointer"" 鼠标移动到图片上面的样式,可以不要。
alt=按此在新窗口浏览图片 这一句就不用解释了吧,呵呵。
onmousewheel=""return zoom_img(event,this)"" 这一句配合模板中的js代码,实现无级缩放。
onload=""return imgzoom(this,700)"">" 这一句配合模板中的js代码,实现打开时的自动缩小到设置的宽度和高度。
这个修改用正则替换做了简单的替换,没必要做太过复杂的判断吧,呵呵~。再说,再复杂一点,我也不会了,呵呵。
第二步:
还是Foosun\Admin\Refresh\Function.asp找到:
TempletContent = Replace(TempletContent,"{News_Content}",NewsContent)
改成:
TempletContent = Replace(TempletContent,"{News_Content}",coden(NewsContent))
第三步:
在新闻浏览页的模板的</head>标记前面加入以下代码:
<script language="javascript">
function imgzoom(img,maxsize){
var a=new Image();
a.src=img.src
if(a.width > maxsize * 2)
{
img.style.width=maxsize;
}
else if(a.width >= maxsize)
{
img.style.width=Math.round(a.width * Math.floor(2 * maxsize / a.width) / 2);
}
return false;
}
function zoom_img(e, o)
{
var zoom = parseInt(o.style.zoom, 10) || 100;
zoom += event.wheelDelta / 12;
if (zoom > 0) o.style.zoom = zoom + '%';
return false;
}
</script>
这个修改参照动网论坛的代码修改的,我没有仔细测试,需要修改的各位请先注意备份好相关文件。然后如果哪位高手发现有不合理的地方,希望能提供修正,谢谢。
[此贴子已经被作者于2006-6-16 17:10:27编辑过]