5.16 书签共享系统——实现标签云(PEAR::HTML_TagCloud)
本系统中将在页面上以标签云(TagCloud)的形式显示在书签登录的同时登录的标签(tag)。具体显示的位置在个人书签收藏夹等页面的右侧部分,最多显示最新的前200个标签。点击标签云的标签,将显示与标签相关联的书签一览。
要点
什么是标签云
首先,大家知道标签就是区分书签用的关键字。在本共享书签系统中,可根据与具体书签相关联的标签来分类书签。标签云就是,将这些标签集中起来的显示方式。在标签云上,使用频率高的标签通常用大的字型,引人注目的颜色表示。
这样的标签云,当然也可以手动来生成它,而这里介绍使用PEAR::HTML_TagCloud程序库来高效率的生成它。PEAR::HTML_TagCloud,顾名思义就是用于做成标签云用的程序库,只要将标签相关的数据传过去,就会自动帮助生成标签云(链接字符串)。
目录结构
代码
定义根据标签检索书签的方法。
对检索出的书签信息进行格式化。包括标签所属网站URL(26行到32行)以及所有者标志(33行)。
调用getBookmarkDetails方法取得其他相关信息。
定义取得书签辅助信息的方法。
将URL进行代码转换处理,转换后的URL中汉字等双字节字符将以类似“%34%21”的形式显示。也可以如下的形式在tpl模板中进行相同的转换处理。
取得书签的收藏用户数(人气度)。
取得书签的标签与关键字集合。
getTagcloud方法是通过从表bm_tag中检索出最新的前200件标签,生成标签云,并将结果以HTML字符串的形式返回。
使用HTML_TagCloud类来完成具体的标签云的生成。HTML_TagCloud类使用addElement方法将从表bm_tag中取出的标签一一追加到其中。addElement方法带4个参数,依次为标签名、标签的链接URL、标签的数目、最终更新日(因为表bm_tag中并没有管理书签的更新时间,这里使用了虚拟的时间—现在的时间加上标签的登录数目来代替)。
标签名会在HTML_TagCloud中进行代码转换,应用程序里不用再进行相应的转换处理了。
登录完标签信息后,使用buildAll取得显示标签云的HTML(包括CSS)字符串。
调用标签云生成函数,并设置模板变量。
标签检索页面的书签一览部分与个人书签收藏夹页面是完全一致的,只有页面的右侧部分有显著的区别:书签检索页面中不显示个人文件夹与朋友列表。
书签一览的介绍请参照5.14节。
补充
在其他动作(action)中调用标签云生成函数以及显示标签云
在上面的5.15节介绍动作中bm/index/index已经介绍过调用标签云生成方法getTagcloud。
然后在对应的模板文件(对应于上面的动作,模板文件为list.tpl)中,加入标签云链接字符串的设置,就可以显示它了。
知识专栏:免费PHP论坛构筑软件——Discuz!
论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月,CNNIC发布的最新统计表明,43.2%的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即时通信IM,成为仅次于收发E-mail的互联网基本应用。
Crossday Discuz!Board(以下简称Discuz!)是康盛创想(北京)科技有限公司(英文简称Comsenz)推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。Discuz!的基础架构采用世界上最流行的Web编程组合PHP+MySQL实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。
作为国内最大的社区软件及服务提供商,Comsenz旗下的Discuz!开发组具有丰富的Web应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法、数据结构到产品安全性方面的领先技术。使得Discuz!无论在稳定性、负载能力、安全保障等方面都居于国内外同类产品领先地位。
自2001年6月面世以来,Discuz!已有近9年的应用历史和三十多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。现在的最新稳定版是Discuz!7.2。
共有条评论 网友评论