高分请教关于DEDECMS57调用缩略图的问题!,求救,在线等!!!
首先在网站后台系统中设置网站缩略图尺寸大小和模板中调用最大尺寸相同
再打开文件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
(1)模板:先找到首页模板,然后看一下大小
(2)文章:找到那篇文章,然后看一下缩略图的大小。
2个方法可以解决该问题
(1)统一模板上的大小到你的文章中,上传和模板里面定义的大小相同的缩略图。(不使用“使用第一张为缩略图”)
(2)统一文章中的缩略图大小,并把模板中的大小以及CSS样式改掉。
57的type改成了listtype='',所以你的type='image'里面还多了个要改成listtype='image'
<a href="[field:arcurl/]">[field:image/]</span></a>这段标签对明显不是完整的,掉了一个<span>,要改成<a href="[field:arcurl/]"><span>[field:image/]</span></a>
从你给出的代码只发现了这些问题,建议缩略图调用最好使用:
<img src="[field:picname/]" width=" ";height=" " border="0" alt="[field:title function='html2text(@me)'/]" />这样的形式,有利于网站代码优化。
你先试试楼上的方法~
如果不行那就用万能调用,无论什么数据只要数据库中有就能显示出来~
大致操作如下:
1、使用sql标签(dede帮助文档中有例子,很容易理解)
2、下载个数据库查看软件,打开dede你所做网站的数据库,找到软件字段所在的数据表(不懂数据库也没关系,就那些表,一个一个点开找就行啦,或百度“dede软件所在数据表”)
3、找到相应字段~!
ok了,sql需要的2个条件(数据表名称、字段名称)你都有了,按1的实现就行了
当然可以,但是这需要你掌握html代码,以及了解一点javascript,反正会比较麻烦。最简单的办法是了解首页幻灯片是怎么调用的,调用标签是
{dede:arclist flag='f' row='5'}
linkarr[[field:globalautoindex/]] = "[field:arcurl/]";
picarr[[field:globalautoindex/]] = "[field:litpic/]";
textarr[[field:globalautoindex/]] = "[field:title function='html2text(@me)'/]";
{/dede:arclist}
也就是说,你可以发布五篇文章,为每篇文章设置一张缩略图,大小你自己设置,然后给每篇文章的自定义属性设置勾选幻灯[f]
那么首页就可以调用这五篇文章的缩略图做成首页的幻灯片了。
需要对列表模板代码修改及样式添加。
1:模板代码修改成:
<div class="list">
<ul>
{dede:list pagesize='12' titlelen='25'}
<li><a href="[field:arcurl/]"><img src="[field:litpic/]" border="0" /></a>
<p><a href="[field:arcurl/]">[field:title /]</a></p>
</li>
{/dede:list}
<div style="clear:both"></div>
</ul>
<div style="clear:both"></div>
</div>
2:样式元素添加
list{background-color:#FFFFFF; padding:14px; line-height:24px;border:solid 1px #E9E9E9;}
list li{ float:left; width:150px; margin:15px 13px;}
list li img{ width:150px; height:100px; border:solid 1px #E9E9E9; padding:1px; margin-bottom:5px;}
list li span{ float:right;}
list p{ text-align:center}
上述两步都操作完之后 ,你可能会发现存在错位或者尺寸不符合您要求。你需要对样式进行微调。具体网站具体对待,才可以修改完美。
秀站网整理回答,如对您有帮助,请采纳,谢谢!
0条评论