5.20 书签共享系统——首页、书签分类一览及其RSS Feed
网站的首页上不仅要及时反映网站信息的更新情况,同时要尽量提供能吸引初次登录到网站的用户的信息。这里尽量遵循上述原则来设计书签共享系统的首页。本节除了介绍书签共享系统首页外,还将介绍书签分类一览页面以及RSS Feed的生成程序。
书签分类、RSS Feed
要点
本节介绍的页面和程序有一个共同的特点,都按照一定的条件从数据库中检索出数据后,将数据显示在页面上。
首页上显示了三种类型的数据,页面的左边显示最新20条登录的书签一览。页面的左边依次显示了用户的最新站内留言(用户登录网站后)、最受欢迎(被设置为朋友的次数最多者)的用户一览。
书签分类一览页面中按照追加的时间顺序分页显示同一类型的书签。与个人书签收藏夹页面,主页的最新书签一览一样,都是针对表bm_master的检索,只是彼此检索条件不同而已。检索出来的结果都放置在结构相似的数组(参照5.14节)中。
目录
代码
主页的动作方法。
setContentInfo方法设置主页右侧的最新人气书签一览信息。setSiderBarInfo方法设置左侧的站内最新留言一览以及受欢迎的用户一览的信息。
内容分类人气书签一览动作。
setBookmarkInfo方法用于检索相应类型的人气书签一览。
setSiderBarInfo方法用于设置书签共享系统主页的左侧信息(最新站内留言和最受欢迎用户一览)。
取得收件箱中未读留言的件数。
取出收件箱中最新的五件留言。
设置留言的链接,单击“链接”将链接到留言的详细页面。
调用getBestBookmark方法取得最受欢迎所有用户一览。
setContentInfo方法取得人气度最高的最近三个月登录的书签的前10件。
所谓最新且最人气的书签是体现在检索SQL文的排序方式上,即依次按照追加的日期(年月日、倒序)、人气度(倒序)、书签ID(倒序)来排序检索结果。
对检索结果进行格式化,格式化的项目与个人书签收藏夹页面的相似。
getBestBookmark方法中取出6个最受欢迎的用户信息。所谓最受欢迎即被接受为朋友的次数最多。
检索friendlist表,取出6个被人设为朋友次数最多的用户,即统计表friendlist的列fuid(朋友ID)的次数。
getBookmarkDetails方法取得书签相关的辅助信息,如关键字信息等。
setBookmarkInfo方法不仅要检索内容分类画面的左侧按人气顺序排列的书签信息,还要检索页面右侧按追加顺序排列的书签信息,同时还加入了分页功能。所以代码看起来比较复杂。
取得分页的件数以及当前页码。
取得分类ID。
取得页面类型(普通、新闻、影像等)ID。当用户单击页面类型时,本系统将显示所有同一Web页面类型的所有书签信息。
默认显示其他类型(分类ID为19)的内容。
当页面类型ID不为空,即进行页面类型ID的检索。
请注意这里为了编程的方便将模板变量命名为“categoryname”,实际保存的是页面类型名。
当内容分类ID不为空时,进行内容分类的检索。
取得内容分类名,用于页面上的显示。
对检索结果进行格式化,与个人书签收藏夹页面的格式化内容完全一致。
为了分页功能,根据条件取得书签的总数目。
调用getPager方法取得分页链接字符串。
122行到134行根据不同的分类,检索最新追加的书签一览,只返回前20条结果。
进行内容分类检索。
进行页面类型分类检索。
以下对检索结果进行格式化。
组合RSS链接URL。
定义分页方法getPager。getPager方法实现了内容分类一览页面的分页,以及页面类型一览页面的分页。5个参数分别为当前页码、系统URL、书签总件数、内容分类ID、页面类型ID。
定义链接URL。分页的处理过程与个人书签收藏夹页面的类型,请参照前面几节的说明。
为了生成RSS Feed必须将含有feedcreator类的PHP脚本包含进来。
标示生成不同RSS feed的条件——fid。关于RSS的生成过程已经在4.8节已经介绍过,请参照其解说,这里不再赘述了。
强制进行字符串代码转换的方法。
首先调用mb_detect_encoding函数判断现在字符串所采用的编码方式。
将字符串转换为UTF-8形式。
getRssInfoFid1方法用于在主页上生成RSS Feed前的书签检索处理,检索SQL文与主页的完全一致,但是不用再进行格式化处理。
与上面的方法getRssInfoFid1一样,getRssInfoFid3方法用于生成内容分类一览的RSS feed的书签检索。检索SQL与页面处理的一样。
调用Rss Feed生成方法。