dedecms57调用出现严重失真,缩略图显示严重变形
你这样写:
<img src="{dede:arclist orderby='id' orderway='desc' flag='' limit='0,1'}[field:litpic/]{/dede:arclist}" alt="{dede:arclist orderby='id' orderway='desc' flag='' limit='0,1'}[field:fulltitle/]{/dede:arclist}"/> 不正确。
列表页调用这样写:
{dede:list pagesize='16' typeid='1' orderby='id'}
<li>
<a href="[field:arcurl/]" target="_blank"><img src="[field:litpic/]" alt="[field:title/]" width="295" height="196" class="lazy"/></a>
<p><a href="[field:arcurl/]">[field:title/] - 浏览次数:[field:click/]</a></p>
</li>
{/dede:list}
参考下面方法
首先,打开后台——模板——默认模板管理——indexhtm
看到有一句,
rel="stylesheet" media="screen" type="text/css" />说明,模板是根据这个 CSS 来布局网
页的,于是就打开网站目录下面的templets\style\dedecmscss然后来分析一下CSS的构成。
根据主页的调用,来研究 CSS 这样容易理解。打开主页模板,找到:
那么 w960 center clear mt1 都定义了什么呢?打开 DEDECMSCSS 找打相关的定义。
center{
1 margin:0px auto; 定义了CSS 模块的边缘位置都是 0,也就是这个center 的层
距离上右下左都是 0px;
2 }
3 w960{
4 width:960px; 定义了整体的宽度为 960px;
5
6 }
7 pright infos_userinfo {
8 margin-bottom: 0px; 定义了首页右部下的互动中心的下面边缘为 0px;
9 }
10 mt1{
11 margin-top:8px; 定义了mt1 的顶部边缘为8px;
12 }
13 pright mt1{
14 margin-top:0px; 定义了pright 下面的mt1 顶部边缘为0px;
15 }
16 mt2{
17 margin-top:16px; 顶部边缘为16px;
18 }
19 clear{
20 overflow:hidden; 如果clear 层里面的内容超出了 层的范围 就隐藏起来。
21 }
这个pleft 的定义没有在dedecmscss 中,但是会发现一句
话
@import url("layoutcss");
@import url("pagecss");
这说明,在dedecmscss 中引用了 pagecss 和layoutcss 这两个样式表,于是就在
pagecss 中找到了pleft 的定义
pleft{
width:712px;定义了宽度
float:left;该层向左浮动
overflow:hidden;超出范围则隐藏
}
在该层下面调用的是新闻头条的内容,看看它的 css
index bignews{
width:424px;
height:400px;
float:right; 向右浮动
border:1px solid #DFF2F5;表示边框线用 #dff2f5 的实体颜色填充
background:url(/images/headbg-topgif) repeat-x;背景为 headbg-topgif 并且横
向平铺
overflow:hidden;超出则隐藏。
}
所以,看到头条的这部分是在 flash 幻灯片右边显示,并且加上了浅蓝色的边框线。
再来看看 onenews 是如何定义的。
index bignews onenews{
margin:0 3px 0 3px; 左右外边距分别空3 个像素
padding:7px 6px;上左内边距分别空7,6 个像素
border-bottom:1px dashed #EBEBEB;下边框加一个 #ebebeb 的虚线
}
所以看见头条的文章左右都有一定的距离,并且下面还有一个虚线显示
这个下面调用的是以往的头条,默认的有 4 篇文章,调用了d1 d1arc 2 个css
index bignews divd1{
padding:6px 10px;
clear:both;这句话是清除浮动,如果不加它,大家可以试试看,是不是 d1 这个层就跑到 头条的
右边了。
width:406px;
overflow:hidden;
}
index bignews divd1arc{
margin-right:12px;
width:190px;
float:left;因为此时要调用4 篇文章,改文章是 22 排列的,如果不加这个属性,新闻就应该垂
直排列了(因为刚才用 clear:both 清除浮动啦),大家试试看是不是这样的。
height:24px;
line-height:24px;行间距,即字体最底端与字体内部顶端之间的距离
overflow:hidden;
}
最新文章
下面看看 newarticle 这个css 吧,还是拿快学网的首页举例子,上面的这句是用来显示 “最近
更新”那几个绿颜色字的,看看它是怎么定义的。
index bignews divnewarticle{
height:24px; 高度
background:url(/images/new-articlegif) 8px 3px no-repeat;背景在x 轴8px 和y 轴
3px 出出现
font-size:0px;
color:#fff;
} 所以,能看到那个最近更新并且还有一个横条,其实它是个,大家右键另存为
看看就知道了
这里面调用了 c2 和ico1 两个 css
index bignews ulc2{
width:416px;
padding:0px 4px 0px; 内边距为 上0 右4 下0
clear:both;清除浮动 和上面的意思一样
overflow:hidden;
}
ico1 这个css 在layoutcss 中了。
ico1 li{
padding-left:16px; 指的是 新闻列表左内边距为 16px
background:url(/images/ico-1gif) 7px 11px no-repeat; 背景在7px,11px 处出现,所以看到最新文章的列表左边都有一个小黑点,这个小黑点就是 ico-1gif
}
到此,中部的头条新闻和最近更新已经分析完了。
看看flash 的 css 定义
index flashnews{
width:280px;
height:192px;
overflow:hidden;
float:left;这句决定了,flash 的新闻列表在 头条的左边显示。如果把 bignews 和flashnews
的float 属性互换一下应该是上面结果呢?大家试试看。
}
这边是特别推荐调用的样式,还是来看看 css
index latestnews{
width:280px;
height:200px;
margin-top:8px;
float:left;
}
index latestnews dl dd{
padding:2px 5px;
}
index latestnews ul a{
color:#555;
} 这里面就不用解释了吧,可以和上面的对照一下就能明白上面意思了。关键 dl dt dd 要弄明白
是什么意思。
dl 内容块
dt 内容块的标题
dd 内容
可以这么写:
标题
内容1
内容2
在layoutcss 中找到 tbox 的相关定义,其他的都不用罗嗦了,只有一句大家注意看一
下
tbox dt strong{
height:26px;
line-height:26px; !important;line-height:25px; 这一句是为了兼容 IE 和FF,比如
font-size: 12px !important;
font-size: 13px;
在 IE里面,由于 IE不理解 !important,则字体大小按照最后设定的 13px 展示
而FF 里面, !important 为提高优先级别,则字体大小按照 !important标记的12px 展示
某些css 某些代码在这两类浏览器里的显示是有差别的(注意这也是使用!important 的主要原因
所在),比如height: 21px;,在 IE6 和(IE7,FF)里显示就有差别,后者(IE7,FF)会比前
者(IE6)少一个像素。
padding-left:22px;
padding-right:4px;
display:block;//变成块级 ,因为strong 是内联元素,必须强制转换,不然的话是没有办法
定义padding 的。大家可以百度一下 内联元素看看。
float:left;
color:#397CBE;
background:url(/images/fbicogif) 5px 6px no-repeat;
letter-spacing:1px;
}
首先在网站后台系统中设置网站缩略图尺寸大小和模板中调用最大尺寸相同
再打开文件include/helpers/extendhelpesphp 在最下面加上以下代码
if ( ! function_exists('thumb'))
{
function thumb($imgurl, $width, $height, $bg = true)
{
global $cfg_mainsite,$cfg_multi_site;
$thumb = eregi("http://",$imgurl)str_replace($cfg_mainsite,'',$imgurl):$imgurl;
list($thumbname,$extname) = explode('',$thumb);
$newthumb = $thumbname'_'$width'_'$height''$extname;
if(!$thumbname || !$extname || !file_exists(DEDEROOT$thumb)) return $imgurl;
if(!file_exists(DEDEROOT$newthumb))
{
include_once DEDEINC'/imagefuncphp';
if($bg==true)
{
ImageResizeNew(DEDEROOT$thumb, $width, $height, DEDEROOT$newthumb);
}
else
{
ImageResize(DEDEROOT$thumb, $width, $height, DEDEROOT$newthumb);
}
}
return $cfg_multi_site=='Y'$cfg_mainsite$newthumb:$newthumb;
}
}
调用方法:
标签 : [field:picname function='thumb(@me,$width,$height,$bg)'/]
参数说明:
$width:缩略图宽度(整数)
$height:缩略图高度(整数)
$bg:是否用空白填补,默认自动填补,背景填充颜色在系统-附件设置里(true/false)
举例:
调用长宽为100像素的缩略图:[field:picname function='thumb(@me,100,100)'/]
保留原有比例,不自动填充(不建议):[field:picname function='thumb(@me,100,100,false)'/]
再到 include/helpers/imagehelpesphp 中写入以下代码
/
缩自动生成函数,来源支持bmp、gif、jpg、png
但生成的小图只用jpg或png格式
@access public
@param string $srcFile 路径
@param string $toW 转换到的宽度
@param string $toH 转换到的高度
@param string $toFile 输出文件到
@return string
/
if ( ! function_exists('ImageResize'))
{
function ImageResize($srcFile, $toW, $toH, $toFile="")
{
global $cfg_photo_type;
if($toFile=="")
{
$toFile = $srcFile;
}
$info = "";
$srcInfo = GetImageSize($srcFile,$info);
switch ($srcInfo[2])
{
case 1:
if(!$cfg_photo_type['gif'])
{
return false;
}
$im = imagecreatefromgif($srcFile);
break;
case 2:
if(!$cfg_photo_type['jpeg'])
{
return false;
}
$im = imagecreatefromjpeg($srcFile);
break;
case 3:
if(!$cfg_photo_type['png'])
{
return false;
}
$im = imagecreatefrompng($srcFile);
break;
case 6:
if(!$cfg_photo_type['bmp'])
{
return false;
}
$im = imagecreatefromwbmp($srcFile);
break;
}
$srcW=ImageSX($im);
$srcH=ImageSY($im);
if($srcW<=$toW && $srcH<=$toH )
{
return true;
}
//缩略生成并裁剪
$newW = $toH $srcW / $srcH;
$newH = $toW $srcH / $srcW;
if($newH >= $toH)
{
$ftoW = $toW;
$ftoH = $newH;
}
else
{
$ftoW = $newW;
$ftoH = $toH;
}
if($srcW>$toW||$srcH>$toH)
{
if(function_exists("imagecreatetruecolor"))
{
@$ni = imagecreatetruecolor($ftoW,$ftoH);
if($ni)
{
imagecopyresampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
else
{
$ni=imagecreate($ftoW,$ftoH);
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
}
else
{
$ni=imagecreate($ftoW,$ftoH);
imagecopyresized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
}
//裁剪成标准缩略图
$new_imgx = imagecreatetruecolor($toW,$toH);
if($newH >= $toH)
{
imagecopyresampled($new_imgx,$ni,0,0,0,($newH - $toH)/2,$toW,$toH,$toW,$toH);
}
else
{
imagecopyresampled($new_imgx,$ni,0,0,($newW - $toW)/2,0,$toW,$toH,$toW,$toH);
}
switch ($srcInfo[2])
{
case 1:
imagegif($new_imgx,$toFile);
break;
case 2:
imagejpeg($new_imgx,$toFile,85);
break;
case 3:
imagepng($new_imgx,$toFile);
break;
case 6:
imagebmp($new_imgx,$toFile);
break;
default:
return false;
}
imagedestroy($new_imgx);
imagedestroy($ni);
}
imagedestroy($im);
return true;
}
}
即可
QQ:51461981
0条评论