找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 563|回复: 0

怎么解决织梦DEDECMS内容页图片太大,撑破表格或不显示超出部分图片?

[复制链接]
发表于 2012-4-18 10:48:31 | 显示全部楼层 |阅读模式
怎么解决织梦DEDECMS内容页图片太大,撑破表格或不显示超出部分图片?
      这个问题相信很多使用织梦DEDECMS模板的朋友都遇到过,但是怎么解决这个问题呢?
  我们在使用DEDE模板在后台发布一篇普通文章,如果图片宽度超过内容区域大小,图片就会把表格撑大,打乱面页的布局,懂CSS的朋友能会通过css来定义,让超出的部分隐藏起来,但这样,图片的美观性就很差,显示不出来超出的部分,论坛中还有一些朋友,用css方法,当图片过大后,将图片自动缩小,但是我试过,因为CSS对各个浏览器存在兼容问题,我在IE6下测试,一点作用也没有
  下面给大家介绍一下我们模板团的方法
  大家打开文章后,可以先看一下图片原始大小,大家把属标放到图片上右键选择属性,打开后复制图片地址,然后打开,看下图片大小,文章中的图片,是将原始图片等比例缩小了,
  现在给大家共享的这个功能:
  首先,我们找到 include/arc.archives.class.php 文件,使用DW打开
  找到下面的代码:
  //设置全局环境变量
            $this->Fields['typename'] = $this->TypeLink->TypeInfos['typename'];
            @SetSysEnv($this->Fields['typeid'],$this->Fields['typename'],$this->Fields['id'],$this->Fields['title'],'archives');
在下面加入代码:

    //替换图片Alt为文档标题
    $this->Fields['body'] = str_ireplace(array('alt=""','alt=\'\''),'',$this->Fields['body']);
    $this->Fields['body'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s]
      
    @isU"," ",$this->Fields['body']);
    $this->Fields['body'] = str_ireplace("Fields['title']."\"
      
    ",$this->Fields['body']);
    //img标签中加入超宽缩小JS调用代码
    $suolue='onload="java script:ImgReSize(this)"';
    $this->Fields['body'] = str_ireplace("Fields['body']);
    //屏蔽height属性
    $this->Fields['body'] = preg_replace('//i',"",$this->Fields['body']);

其次,第二步:

打开你前台文章页模版 默认的是:/templets/default/article_article.htm (有些网站内容页的模版可能不是这个默认的的模板)

打开模版后将下面代码插入到  中 ,注意那个670的数值,这个值意思是当图片超过这个数值,自动将图片缩小,宽度缩小为670,高度自动按比例缩小,这样不会变型,

     
    function ImgReSize(e)
    {
      
    if(e.width>670) // 670可根据你文章的内容区域大小,可调整
    {
    e.width=670; // 等同上面你设的那个数值
    e.style.width="";
    }
    if(e.height>10)
    {
    e.style.height="";
    }
      
                                    
         
    }
     

到这里,就完成了,如果会修改CSS的可以找到这个内容区域的CSS,将它的宽设定好,然后定义一下,超出部分隐藏,因为有时候,文章在加载的过程中,显示的是你原始大小,加载完成后,JS才会起作用,将图片缩小。


这里需要注意:要将$this->Fields['body'] = preg_replace('//i',"",$this-

>Fields['body']);
变成一行,不然会出500错误
$this->Fields['body'] = preg_replace('//i',"",$this- >Fields['body']);
OK了,方法在这里发布出来了,来学习使用吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|要学吧论坛

GMT+8, 2026-1-24 01:10 , Processed in 0.033950 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表