腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

如何改造Discuz的门户列表让其变得简洁大气

2
回复
913
查看
[复制链接]

763

主题

777

帖子

3万

积分

董事

Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72

积分
32946
发表于 19-4-3 14:45:59 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                  在中国互联网中,也许从业者无人不知道Disucz的大名,因为它确实一款非常优秀的开源建 站软件,也因此运行在国内各个网站服务器之上。说到它大家可能最大的印象就是做社区论坛,其实从本质上讲这块产品包括了很多模块,而我们最常用的BBS只 是其中的一部分而已,同样的道理,门户也是其中的模块之一。
. [% p* B( y9 D; q9 H; i) }  也许在国内也有过很多优秀的开源CMS建站系统,但就是因为DZ聚合了很多个模块,而且进行各个模块的相互整合技术成本会很低,因此有不少的站 长想直接利用这个程序解决自己所有问题,即全部用这套程序搭建问题。但就在这个时候,大家可能都有所感受,其实DZ的精髓还是在于它的论坛部分,而其他的 模块就是不痛不痒了,特别是门户部分甚至在其官方没有确切的入口。因此,大家也知道默认的门户模板是很久都没有更新的,而且默认的确实有点上不了台面;比 如今天就跟大家说说门户的列表页吧,我就通过我之前做的一个实例来分享下改造过程吧,实现后就是下面的样子,接下来我就讲解下基本的思路吧。% O: s3 W! u" A7 R
+ w8 Y$ m. V- k# C% o0 a0 f# W" U
452bc7e4dc9a3290b60c56fbd02781ef.jpg ) R  x5 {4 I5 P
  第一,设计好样式并不书写好HTML和CSS,当然这也是最简单的一部分。这一点我相信只要懂做网站的朋友都会,甚至可以直接copy那些比较 优秀网站的前端代码,也就是大家所谓的仿站中的一部分。当然我建议还是自己设计出版式来,这样更具个性,而且是你想做成什么样就是什么样的。1 J" `3 U. Z7 u" I) X* H- R
  第二,调用动态参数。上面第一步我们完成的仅仅是一个静态的页面,而我们现在做的肯定是需要让其内容动起来,而这些参数无非就是DZ内部的一些 动态变量参数。比如文章的发布日期的变量是$value[dateline],文章的地址是$article_url,当然这些参数只要参考默认模板中的 即可。这里又会有一个问题,也许大家可能会在这个页面需要加上默认模板没有的,而在默认模板其他页面有的。是不是自己复制另外页面的相应参数就可以了呢? 肯定是不行的,DZ是一套比较复杂的系统,不同的页面的很多参数是不能通用的,这样就需要对部分进行二次开发。比如就如上面展示的列表那样需要加上原来没 有的浏览数和评论数,就需要在相关的函数中添加一些功能性语句了,比如这个列表的相关函数存储在
+ y- d9 G* [) V6 B0 G0 d. Y  /source/module/portal/portal_list.php中1 i" l; }- u" Q! |$ c
  在中间的自定义函数category_get_list中添加让通用变量启用的语句 
; J' E0 C$ r4 v! d  a
  1. $article_count =  C::t('portal_article_count')->fetch($value['aid']);  if($article_count) $value = array_merge($article_count, $value);
复制代码
  这样进行简单的二次开发后就可以在门户的列表页使用$value[commentnum]调用评论数以及用$value[viewnum]调用浏览数了;当然其他的一些功能也是类似的,当然需要你有一定的PHP基础。
& F4 }& c  i5 J4 j% {) d- ?  第三,优化性能。就如这种图文列表的形式,我们不可能在一个单页列表中包含的数据记录数只会三五个,一般地我们得在单页有近二十条数据,但这样 就会出现一个问题,当用户首次打开这个列表的时候数据量会特别的大。比如就二十条数据,图片每个40KB,光列表中的图片大小就有了800KB,这样打开 起来肯定不可能太快。这里就需要我们进行适当的性能优化,比如可以进行分屏加载,而使用jQuery和AJAX等技术都可以实现这些,比如jQuery的 插件Lazy Load就可以实现图片的分屏加载,当然至于怎么用网上有很多相关的教程。在这里我不得不提示大家,jQuery  默认情况下会与DZ的JS冲突,因为DZ变量用的 是 $  开头,而jQuery也是用$这个所以会有冲突。解决的办法也很简单,jQuery库不改变,只在引用的时候改变一下就可以了,可以先赋予一个变量如 var jq = jQuery.noConflict();然后用这个变量jq代替引用中的$就可以解决这个冲突了。' G! {7 \( Y4 X2 b2 _) H
  上面就是一个简单的实例分享,希望对大家有所帮助。其实上面的内容也提示了大家一些问题,那就是最好自己先掌握一些基础知识,同时不要胡乱添加一些代码,比如很多站长甚至不知道jQuery会和DZ冲突,而在网上随意下载特效添加在网站中,这样不出问题才怪!
. U' U. k- r4 c% |
4 F$ k5 o& P3 b0 h$ n6 @; v            

0

主题

10

帖子

4

积分

1°伸手党

Rank: 2

积分
4
发表于 19-12-22 05:30:18 | 显示全部楼层         
支持一下
回复

使用道具 举报

0

主题

9

帖子

4

积分

1°伸手党

Rank: 2

积分
4
发表于 19-12-24 23:52:00 | 显示全部楼层         
小手一抖,钱钱到手!
回复

使用道具 举报

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除