嗷嗷答 - 嗷嗷好的公务员考试网络答题平台

访客评论足迹插件

作者:不烦恼 发布时间:April 7, 2011 分类:快乐学习

根据WordPress 实现“您的足迹”功能,写了个typecho的相同功能的插件,不同之处是WP的插件用昵称作为筛选条件,而这个插件用邮箱作为筛选条件。
如果在本站发表过评论,可以在边栏看到类似下面图片的评论足迹效果:
CommentTracks.jpg
插件(../plugins/CommentTracks.php)代码如下:

  1. <?php
  2. /**
  3.  * 显示访客评论足迹
  4.  *
  5.  * @package CommentTracks
  6.  * @author 不烦恼
  7.  * @version 1.0.0
  8.  * @link http://bufannao.com
  9.  */
  10. class CommentTracks implements Typecho_Plugin_Interface
  11. {
  12. /**
  13.   * 激活插件方法,如果激活失败,直接抛出异常
  14.   *
  15.   * @access public
  16.   * @return void
  17.   * @throws Typecho_Plugin_Exception
  18.   */
  19. public static function activate() {}
  20.  
  21. /**
  22.   * 禁用插件方法,如果禁用失败,直接抛出异常
  23.   *
  24.   * @static
  25.   * @access public
  26.   * @return void
  27.   * @throws Typecho_Plugin_Exception
  28.   */
  29. public static function deactivate(){}
  30.  
  31. /**
  32.   * 获取插件配置面板
  33.   *
  34.   * @access public
  35.   * @param Typecho_Widget_Helper_Form $form 配置面板
  36.   * @return void
  37.   */
  38. public static function config(Typecho_Widget_Helper_Form $form)
  39. {
  40. $comments = new Typecho_Widget_Helper_Form_Element_Text('comments', NULL, '10', _t('评论足迹数量'), _t('默认显示访客评论足迹的数量'));
  41. $form->addInput($comments);
  42. }
  43.  
  44. /**
  45.   * 个人用户的配置面板
  46.   *
  47.   * @access public
  48.   * @param Typecho_Widget_Helper_Form $form
  49.   * @return void
  50.   */
  51. public static function personalConfig(Typecho_Widget_Helper_Form $form){}
  52.  
  53. /**
  54.   * 插件实现方法(输出评论足迹)
  55.   *
  56.   * @access public
  57.   * @param array $comment 评论结构
  58.   * @param Typecho_Widget $post 被评论的文章
  59.   * @return void
  60.   */
  61. public static function output($comments = 0)
  62. {
  63. $db = Typecho_Db::get();
  64. $track = Typecho_Widget::widget('Widget_Abstract_Comments@CommentTracks');
  65.  
  66. if(empty( $comments))
  67. {
  68. $comments = Helper::options()->plugin('CommentTracks')->comments;
  69. }
  70.  
  71. if($user = Typecho_Widget::widget('Widget_User') AND $user->hasLogin())
  72. {
  73. $mail = $user->mail;
  74. }
  75. else
  76. {
  77. $mail = Typecho_Cookie::get('__typecho_remember_mail');
  78. }
  79.  
  80. $select = $track->select()->limit((int)$comments)
  81. ->where('table.comments.status = ?', 'approved')
  82. ->where('table.comments.mail = ?', $mail)
  83. ->order('table.comments.coid', Typecho_Db::SORT_DESC);
  84.  
  85. $db->fetchAll($select, array($track, 'push'));
  86. return $track;
  87. }
  88. }

主题(sidebar.php)调用代码例子:

  1. <?php if(CommentTracks::output()->to($tracks)->have()): ?>
  2. <div class="widget">
  3. <h3><?php _e('您的足迹'); ?></h3>
  4. <ul>
  5. <?php while($tracks->next()): ?>
  6. <li><a href="<?php $tracks->permalink(); ?>" title="<?php $tracks->title(); ?>"><?php $tracks->author(false); ?></a>: <?php $tracks->excerpt(9, '...'); ?></li>
  7. <?php endwhile; ?>
  8. </ul>
  9. </div>
  10. <?php endif; ?>

已有 23 条评论 »

  1. 在哪里下载?复制代码带行号蛋疼 = =

    1. 蚂蚱 蚂蚱

      GESHi插件这个行号不会复制进去的。

  2. 测试。仰慕下牛人

    1. 牛人这个称呼不适合我,我只是个小菜鸟。
      欢迎常来!

  3. 好像您还没有留下任何评论或留言,无法寻找您的足迹.
    这个怎么做的?判断是否登陆?

      1. <?php if(CommentTracks::output()->to($tracks)->have()): ?>
      2. …………
      3. <?php else: ?>
      4. <p>好像您还没有留下任何评论或留言,无法寻找您的足迹!</p>
      5. <?php endif; ?>
      1. 收到,我的是登录后才显示足迹。
        ps:回复还是没有邮件通知。

        1. 试试是不是又进垃圾箱了?

          1. 不知道什么问题,第一次评论的时候确实是出错了。。

  4. csweb csweb

    前来顶大大!!

    另外前来希望大大出个 "加强摘要功能" 插件 :
    http://forum.typecho.org/topic.php?id=1748

    1. csweb拿走了几个插件了,把地址也发出来参观下啊

      1. csweb csweb

        汗,还没上线呢 ,在弄,准备好了就购域名,到时候一定回来给个网址,哈哈

    2. 这个需要和你沟通一下,加我QQ吧:肆柒肆叁玖肆零玖柒

  5. 从论坛上过来围观的。。

    1. 久仰大名,我用TE的时间比较晚,向你学习。

      1. 没什么大名,纯属瞎折腾。。
        大家多多交流,吼吼。

        1. test。。。
          邮件通知貌似有问题。。

          1. 什么问题呢?昨天才装的CommentToMail插件,版本是1.2.1

  6. CXM CXM

    下一个插件大人。GOOD~

  7. 测试测试下效果。。。

  8. 很不错的功能 分享了~~~~~~~~~~

  9. 第一个顶,这完全是私人定制插件,感谢不烦恼的帮助。

    1. 哥们不用客气,能力有限,尽力而为!

添加新评论 »