dedecms的图集功能一直是我觉得很鸡肋的功能,无法直观的自定义缩略图大小,无法选择缩略某个具体图片,无法按照指定数量分页等等。既然开源,我有需要,那就拿起鼠标,修改!
主要修改的内容:
1、可自定义小图的尺寸;
2、可自定义缩略图的大小;
3、常用缩略图尺寸可任意选择;
4、可以任意指定具体的缩略图;
5、文章来源可选;
6、完美的缩略图,参考此文:DeDecms中实现更漂亮整齐的缩略图;
7、重新布局图集添加页面。
特别提醒:此修改仅针对DeDecms4.0RC肥龙修改版SP1(含原版)
使用方法提醒:
1、缩略图为-lit结尾的图片
2、小图为-lp结尾的图片
代码下载:album.rar
对应覆盖以下五个文件。
dede/album_add.php
dede/album_add_action.php
dede/album_edit.php
dede/album_edit_action.php
dede/inc/inc_archives_functions.php
Have fun!
在我的博客为dedecms增加栏目文章统计功能此文中,介绍了如何统计最终列表栏目的文章数目,但是对于含有子栏目的栏目的总体文章数量统计并没有实现,以下的实现办法为修订的方法,可实现任意指定栏目的文章数量统计,包括最终列表栏目和含有子栏目的栏目。
修改include/inc_functions.php文件
$dsql = new DedeSql(false);
if(!empty($typeid))
{
$reids = explode(",",$typeid);
$ridnum = count($reids);
if($ridnum>1){
$tpsql = "";
for($i=0;$i<$ridnum;$i++){
if($tpsql=="") $tpsql .= " And (".TypeGetSunID($reids[$i],$dsql,'');
else $tpsql .= " Or ".TypeGetSunID($reids[$i],$dsql,'');
}
$tpsql .= ") ";
$orwhere .= $tpsql;
unset($tpsql);
}else{
$orwhere .= " And ".TypeGetSunID($typeid,$dsql,'');
}
unset($reids);
}
$row = $dsql->GetOne("Select count(ID) as dd From #@__archives where typeid>0 $orwhere");
return $row['dd'];
}
调用方法
[field:id function=’GetTotalArc(@me)’/]
关于dedecms更多修改请参考我的博文:DeDecms专栏
Have fun!
version: dedecms4_0_1_dragon_sp1
author:肥龙龙(expendable)
link:http://www.blog-dragon.com
date:2007-10-31
请访问 http://www.blog-dragon.com和http://www.cmshelp.com.cn/获得最新版本下载
如有疑问,请到http://forum.cmshelp.com.cn提问
下载地址:DeDecms4.0RC肥龙修改版SP1
本程序包含完整的肥龙龙修改版,补丁升级方法,参照(5)
//———肥龙龙修改版SP1新增特性
1、修补限定栏目内的上下链接的BUG
2、增加栏目文章统计功能
使用方法,id为栏目编号:
[field:id function=’GetTotalArc(@me)’/]
3、改进缩略图功能,介绍请参考:http://www.blog-dragon.com/2007/10/dedecms-litpic.html
4、利用文章关键字增加简单tag功能
使用方法:
{dede:field name=’keywords’ function=’Tags2Keywords(@me)’/}
具体方法请参考模板article_article.htm
5、增加原版至肥龙版数据库升级补丁
原版至肥龙版的升级使用方法:
(1)使用后台功能备份原有数据
(2)将肥龙版程序的include、dede、plus三个目录上传覆盖,注意不要覆盖config_base.php和config_hand.php这两个文件
(3)使用后台功能恢复数据
(4)运行数据库升级程序,/plus/updb.php。看到三个成功标志表示升级成功,如果出现失败信息,表示你的数据库无需升级
(5)升级成功后,请删除/plus/updb.php
//———肥龙龙修改版改进特性
1、增加超链接栏目支持
允许建立超链接类型的栏目,新建链接目标字段,可自定义是否在新窗口打开栏目。
修改:
表arctype(sql_4_0.txt和sql_4_1.txt)
`redirecturl` varchar(200) NOT NULL default ”,
`linktarget` varchar(10) NOT NULL default ”,
`litpic` varchar(100) NOT NULL default ”,
inc_typelink.php 的 GetChannelList 、GetOneTypeUrl
inc_channel_unit_functions.php 的 GetTypeUrl
2、分页标准化编码
把分页代码修改为支持web标准的,去除table标签
修改:
inc_arclist_view.php 的 GetPageListDM
3、友情链接标准化
新增xflink的标签,保留原有flink标签,使用xflink输出符合标准的html代码。
增加:
inc_arcpart_view.php 的 GetFriendLinkDiv
4、文章完整标题
增加alltitle属性,支持完整标题输出
修改:
inc\inc_fun_SpGetArcList.php的 SpGetArcList
5、图集可自定义分页
新增全局变量cfg_img_pagesize(config_hand.php),当图集选择多页显示时,可自定义每页显示得图片数目,默认为5。
修改:
inc_channel_unit.php 的 GetImgLinks
6、增加栏目图片介绍功能
栏目增加litpic字段,可选择站内图片作为栏目的图片。
修改:
catalog_add.php
catalog_edit.php
7、去除提示信息的DEDECMS标志
消息提示去掉DEDECMS
修改:
inc_functions.php 的 ShowMsg
8、显示当前栏目名字支持
可在任何页面调用当前栏目的名称。
使用方法:
[field:typeid function=”GetTypeName(@me)”/]
增加:
inc_functions.php 的 GetTypeName
9、限定栏目内的上下链接
保证文章的上一篇和下一篇都在本栏目内。
修改:
inc_archives_view.php 的 GetPreNext
10、自带chinaz模板(DIV+CSS)
安装时候可自定义。
That about does it - enjoy!
dedecms通过标签arclist输出文章列表的时候,文章的标题会被titlelen属性截取为指定长度的字符串, 但是我们在实际使用的过程中,经常会用到文章标题的完整内容,在dedecms中如何实现呢,方法很多,这里推荐通过小小的修改程序,达到目的。
解决方法:
修改include\inc\inc_fun_SpGetArcList.php文件,修改函数SpGetArcList,找到以下代码:
$row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."'>";
$row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
$row['title'] = cn_substr($row['title'],$titlelen);
$row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";
if($row['color']!="") $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
if($row['iscommend']==5||$row['iscommend']==16) $row['title'] = "<b>".$row['title']."</b>";
修改为:
$row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".ereg_replace("['><]","",$row['title'])."'>";
$row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
$row['alltitle'] = $row['title']; //增加文章标题属性支持
$row['title'] = cn_substr($row['title'],$titlelen);
$row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";
if($row['color']!="") $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
if($row['iscommend']==5||$row['iscommend']==16) $row['title'] = "<b>".$row['title']."</b>";
代码中增加了
$row[’alltitle’] = $row[’title’];
重新定义一个数组变量存放标题的内容。
然后你在模板中就可以使用类似[field:alltitle/]这样的标签调用文章完整标题。
例如:
<li><a href="[field:filename /]" title="[field:alltitle/]">[field:title/]</a></li>
{/dede:arclist}
That about does it - enjoy!
此方法的思路是直接调用dedecms每篇文章的关键词,以此作为tag标签,在通过模板的编程为每个关键词增加搜索链接,好处即为无需修改程序即可实现简单的tag标签功能,实现方法参考如下:
修改模板文件,例如article_article.htm,在需要增加tag的地方,增加如下代码:
if(!empty(@me)){
$kws = explode(' ',@me);
@me = "";
foreach($kws as $k){
@me .= "<a href='/plus/search.php?keyword=".urlencode($k)."' target=_blank >$k</a> ";
}
@me= str_replace('+', ' ',trim(@me));
}
{/dede:field}
转文点评:dede的缩略图被很多人投诉过,其原因是直接将原有的大图限制块宽度直接缩小或放大,如此一来自然缩略图的效果非常差。本身php就允许对图片进行各种截取、重新生成、合并、压缩等操作,因此为了追求完美,你可以参考下文。
刚开始使用DEDE不久,最初采集发现自动生成的缩略图片其实是根据自定义的最大长宽,原比例的缩小原图片,不利于图片索引页排版,不得已CSS里采用了自动判断调整高宽—但比较耗资源。所以还是决定改改缩图函数—-再次感谢DEDE的开源!!
修改文件:inc_photograph.php
$ftoW=$toW;
$ftoH=$ftoW*($srcH/$srcW);
}
else{
$ftoH=$toH;
$ftoW=$ftoH*($srcW/$srcH);
}
更改为
$ftoW=$toW;
if ($toWH<=$srcWH) {
$src_Y = 0;
$src_X = ($srcW-$srcH*$toWH)/2;
$srcW = $srcH*$toWH;
} else {
$src_X = 0;
$src_Y = ($srcH-$srcW/$toWH)/2;
$srcH = $srcW/$toWH;
}
关键点:
($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH)
更改为
($ni,$im,0,0,$src_X,$src_Y,$ftoW,$ftoH,$srcW,$srcH)
其实就一小小改动,就是在原图中截取最大面积的符合自定义缩略图长宽比列的一部分生成缩略图。


