首页 > 学习收获 > wordpress > Sandbox使用Thread Comment小心得
2008
10-29

Sandbox使用Thread Comment小心得

前段时间使用了偶爱偶家的 Thread Comment ,插件自不用说,非常好用,不过在和我的sandbox配合时,有一些显示效果上的小问题。昨天一时兴起,修改sandbox的评论显示让其支持gravatar,同时也动手磨合了一下两个系统。

问题其实不大,最开始就是背景配色,这个很简单,修改一下css,去掉一个背景色就OK了。然后显示gravatar,也只是一个函数的问题。主要的问题是,我用的这套基于sandbox的css,可以在文章作者的评论的作者名后面加上一排星星的背景,用于区分作者和浏览者。但是用了thread comment后,作者线性回复的评论中,就不会显示那一排星星。

翻阅其代码可见,sandbox在评论区一开始是这样一个结构:

  • 这个页面,简言之就是,对于作者回复的文章,class会包括bypostauthor这个属性。

    于是,在CSS中,配合下面这行定义,就可以实现在作者的评论上添加星星背景。

    li.bypostauthor div.comment-author {background:#f0f0f0 url(starbk.png) top left repeat-x}

    这里就出现了问题,对于独立的评论而言,每个评论隶属于一个li结构,因此每个评论会单独进行判定。但是使用了thread comment后,所有线性的评论同属于一个li,因此整个评论都不会被加星。

    为了解决这个问题,考虑在li中再次嵌套li,修改thread comment的配置,添加li后,显示更为混乱,貌似这种显示是不可取的,于是,干脆将评论中用户名和发表时间的两个div再装在一个div里面,该div会调用sandbox_comment_class获得一个class,并且将默认的显示代码全部换成sandbox的显示代码,于是将整个html修改为:

    “>

    回复说:
    |
    Permalink‘,’sandbox’),
    get_comment_date(),
    get_comment_time(),’#comment-‘ . get_comment_ID() );
    edit_comment_link(__(‘Edit’, ‘sandbox’), ‘ | ‘, ‘‘); ?>

    comment_approved == ‘0’) _e(“tttttYour comment is awaiting moderation.n”, ‘sandbox’) ?>
    [content]

  • 并且在sandbox的css中加入一句:

    div.bypostauthor div.comment-author {background:#f0f0f0 url(starbk.png) top left repeat-x}

    初步测试成功。可以正常的加星了。

    UPDATE:后来发现,在几层嵌套后,后面的sandbox_comment_class可能返回byuser,但是不能正常返回bypostauthor,也许是函数本身的问题。由于我的小站只有我一个用户,因此将上面最后的CSS换为下面这样即可暂时彻底的解决问题。

    div.byuser div.comment-author {background:#f0f0f0 url(starbk.png) top left repeat-x}

    另外,这样应该会出现这种问题:即如果第一个评论是作者添加的,那么其后的一串线性回复都在同一个li下面,并且该li有bypostauthor属性。那么那一串都会被加星。不过鉴于一般我不会主动在自己的文章下写评论,这个问题暂时可以无视。

    最后编辑:
    作者:龙天
    匿名
    这个作者貌似有点懒,什么都没有留下。