最近朋友在弄个减肥网站,看到他仿的网站上有个专题功能很不错,让我帮他做一个,我看了一下,发现那个网站的专题用DEDECMS默认的专题功能是做不出的。他并不是对每个专题将其他栏目中相关的内容聚合进来,而是这个专题相当于一个大栏目,下面好多小栏目,也就是每个具体的专题了,比如:冬季减肥、夏季减肥等,而相关的文章是分别再发表到这些对应栏目的。
其实这就是一个频道加二级分类的功能,但主要是这个频道封面的首页展示形式比较特别,就是一排对应栏目的列表,有缩略图,栏目名称,栏目介绍,就像一般的文章列表一样,而DEDE默认栏目的列表是实现不了的。如图:
这里记录一下我解决的过程:
首先我想到栏目的介绍可以用设置的描述内容来获取,就是在栏目设置的高级选项中添加栏目描述,这个比较简单,最大的问题是缩略图的添加。我是用栏目内容来实现,点开子分类的“更改”切换到栏目内容选项,如图:
然后前台利用{dede:channel}{/dede:channel},但DEDE默认这个标签调用不出栏目内容里的东西,所以要修改:include/taglib/channel.lib.php 这个文件,找到以下代码
$sql = “Select id,typename,typedir,isdefault,ispart,description,content,defaultname,namerule2,moresite,siteurl,sitepath
From `#@__arctype` where reid=’$typeid’ And ishidden<>1 order by sortrank asc limit 0, $line “;
在select后面那些字段中添加content这一字段就可以了。这样是调用出来了,但却又有问题了,栏目内容里添加的图片,默认编辑器里会生成一些代码,而不是单纯的一个图片“<img>”代码,是像这样的:
<div><img style=”cursor: pointer” onclick=”window.open(‘/uploads/allimg/100823/1_100823173030_1.jpg’)” border=”0″ alt=”" src=”http://127.0.0.1:827/uploads/allimg/100823/1_100823173030_1.jpg” width=”449″ height=”403″ /><br />
</div>
或者是这样:
<p><img style=”cursor: pointer” border=”0″ alt=”" width=”280″ height=”220″ onclick=”window.open(‘/uploads/allimg/100819/1_100819203632_1.jpg’)” src=”/uploads/allimg/100819/1_100819203632_1.jpg” /></p>
<p> </p>
这些都会直接调用到前台的代码中,这样就很麻烦了,不能很好地设置CSS,而且产生不必要的代码,当然如果去改编辑器应该可以弄好,但是编辑器改了可能引起发表其他文章也出现问题,所以最好还是不动这些系统原来的代码。
DEDE的模板标签真的很强大,支持很多PHP函数,接下来我利用字符串和正则替换搞定了这个,代码如下:
<img src=”[field:content function='ereg_replace("width=(.+)\"","",str_replace("<br />","",str_replace(" ","",str_replace("<div>","",str_replace("</div>","",str_replace("<p>","",str_replace("</p>","",str_replace("\" />","",ereg_replace("<img(.+)src=\"","",@me)))))))))'/]” alt=”[field:typename/]” />
这里我把所有代码都替换为空,只留下了图片的地址,这样自己写IMG标签是为了加个ALT属性方便,都设置为对应的栏目名称,这样就不用在后台上传图片时再去写ALT文字,省了点时间。因为对正则不怎么会,可能里面的代码还有更好的替换方式,有知道的朋友还请指正。
对了,还有一点,随着以后专题内容会越来越多,可能会增加不少子分类,那就不能只在一个页面显示了,下次有时间我再研究一下栏目列表的分页,搞定了就发上来,呵呵。
这个页面的最终效果请查看:http://www.jfte.cn/jianfeizhuanti/ ,也是我朋友的新站,大家多多支持哈。
如果哪位朋友有更好的方法,希望能分享,觉得有用的朋友记得收藏哦,万一哪天要用了,找不到就麻烦,嘿嘿。
想问下站长 增加了 栏目缩略图 如何在 首页调用呢!
是了一下,不行呢
实验了,不行,不能提取任意一个id,只能提取下级每个栏目,son之类的才行,单独的比如typeid=’28′,就不能用了,百搭
没用过呀 不过还是支持下
认真学习下,感谢肖老师
恩不错啊我有时间也看看
dede 没想到这么强大
萧寒大哥你好,我也用了你的主题,非常好,在此表示衷心感谢,但我又遇到一个问题,我看到网上有个Wordpress Security Scan插件,可以通过修改数据库前缀提高安全性,于是我就装上了并且运行了,数据库前缀修改掉了,这时我在您的主题首页进后台又进不去了,显示我没有足够权限登陆后台。但网站访问显示正常。目前我通过FTP登陆后台,把这个插件删除了,又通过数据库管理后台把数据库前缀都手动改回了wp-,但登陆网站后台还是显示我没有足够权限,您能在百忙中给些指点么?小弟不胜感激,我是实在没有办法了!谢谢
不错,支持一下!
这可是好东西啊,拿回去试试
先收藏了,也许以后用得到的,萧涵厉害
dede 一直都很强大