当前位置: 网学 > 编程文档 > PHP > 正文

web2.0中的tag及其技术实现

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/17
下载{$ArticleTitle}原创论文样式

web1.0做网站
比如一个新闻网站 我们用一个新闻系统
主要的实体是article 那么表设计一般是这样
id title c_id content pubtime author hit
自动编号 文章标题 所属类别编号 内容 发布时间 作者 点击率
然后又一个实体 文章类别
id classname
自动编号 类别名称
具体的做法是网站的编辑上传一篇文章 同时选择一个分类 比如体育
这样整个网站的前台,体育栏目中就多了这条新闻

分类与文章之间的关系是一对多 就是一个类别有很多篇文章 一篇文章属于一个类别

web2.0时期
出现了一个概念叫做标签,正宗是叫tag

简单的做法:
tag表
id tagname num
tag-article表
id article_id tag_id
这样的tag-article表是tag和article的多对多关系
一般仍然是编辑人员 在添加文章的时候手动添加tag,或者从tag库中选取,或者程序从文章标题、内容中检索出tag库有的tag

那么从UGC的角度去看 这还是1.0的做法
改进的做法:
tag表
id tagname num user_id
tag-article表不变
这样在article的展示页面,有一个登录用户的添加标签入口
就是说随便一个网站的注册用户都可以对任何一篇article加tag

再谈谈tag cloud
这是web2.0中实现不同量级tag不同css的术语
具体算法如下:
@toptags = Tag.find_by_sql("select id,tagname,sum(num) as sumnum from tags group by tagname order by sum(num) desc

limit 0,60")
选取热门标签
@max=@toptags[0].sumnum.to_i
@min=@toptags[59].sumnum.to_i
@distribution = (@max-@min)/5
@toptags = @toptags.sort_by{|tag| tag.id }
重新将toptags按照id排序
这样才会看到正宗的web2.0热门标签
定义css:
<style>
.moltopiccolo { font-size: 12px; }
.piccolo{ font-size: 14px; }
.medio { font-size: 16px; }
.grande{ font-size: 20px; font-weight: bold;}
.enorme{ font-size: 25px; font-weight: bold; }
</style>
前台页面对每个tag处理:
        <% for @tag in @toptags %>   
        <% if @tag.sumnum.to_i==@min %>   
        <%     @css = "moltopiccolo" %>
        <%  elsif @tag.sumnum.to_i==@max %>
        <%     @css = "enorme" %>
        <%  elsif @tag.sumnum.to_i> @min + (@distribution * 2) %>
        <%     @css = "grande" %>
        <%  elsif @tag.sumnum.to_i> @min + @distribution %>
        <%     @css = "medio" %>
        <% else @css = "piccolo" %>
        <% end %>

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号