用户登录

Drupal资源链接

http://zhupou.cn
drupal布道者,改成了"老葛的Drupal培训班",专心于培训事业
http://drupal.org
官方网站
http://drupalchina.org
中文的官方网站
http://acquia.com/
本站就是用这个版本构建的

使用Flag来标记精华评论

flag模块是一个灵活的标记模块,使用这个模块可以标记任意的节点、评论、用户等内容,可以通过这个模块将节点标记为精华、垃圾或者你想做的任何标记.flag模块还可以和views2进行整合进行操作,同时flag还支持action.在官方网站上有非常详细的文档.

下面我就讲讲利用Flag模块,给评论加个精华。

安装Flag模块

和所有模块一样,下载,在模块设置中进行安装.

配置Flag模块

全局的flag和私人的flag,在flag模块中,标记分为全局和私人的2类,如果是私人flag,那么每个有仅进行标记的人都可以去更改它,而不会影响他人,如对文章进行收藏,全局的flag改变之后对所有用户都会影响,如管理员对评论进行加精,那么所有人都会看到这个精华标志.

用admin/build/flags进行对flag进行设置:

flag 模块配置简解

flag 模块增加flag

flag 模块配置

增加好之后,在前台就可以对评论节点进行精华标志。

flag views配置

把区块放到模板的指定位置,就可以看到精华评论。

Flag模块在模板中运用。

前面这些工作完成之后,当然还没完,怎么加入精华的评论与一般评论没有区别,那还要针对模板进行一些设置。参考这里的内容

打开模板文件中的template.php文件,加入phptemplate_preprocess_comment函数

  static $flags;
  if (!module_exists('flag')) {
    return;
  }
  if (!isset($flags)) {
    $flags = flag_get_flags('comment');
  }
  // Note: is_flagged() and get_count() use internal cache,
  // so using them won't result in issuing excessive SQL queries.
  $classes = array();
  $cid = $vars['comment']->cid;
  foreach ($flags as $flag) {
    $css_name = str_replace('_', '-', $flag->name);
    if ( $flag->is_flagged($cid)) {
        $classes[] = 'comment-flagged-' . $css_name;
    }
  }
  $vars['flag_classes'] = implode(' ', $classes);

这段是取得是否标志精华,如果是的话,加了一个$vars['flag_classes']的类。这个东东就可以在comment.tpl.php文件中使用。

<!-- start comment.tpl.php -->
<div class="comment <?php print $comment_classes;?>  clear-block">
  <?php print $picture ?>
  <?php if ($comment->new): ?>
  <a id="new"></a>
  <span class="new"><?php print $new ?></span>
  <?php endif; ?>
  <h3 class="title <?php echo $flag_classes; ?>"><?php print $title ?></h3>
  <div class="submitted">
    <?php print $submitted ?>
  </div>
  <div class="content">
    <?php print $content ?>
    <?php if ($signature): ?>
    <div class="signature">
      <?php print $signature ?>
    </div>
    <?php endif; ?>
  </div>
  <?php if ($links): ?>
  <div class="links">
    <?php print $links ?>
  </div>
  <?php endif; ?>
</div>
<!-- /end comment.tpl.php -->

红色部份是我加入的代码,如果是精华的话,那么会在标题中有一个CSS类叫comment-flagged-picks,其中picks是我flag name.

然后在你的模板CSS文件中加入

.comment-flagged-picks{
  background: url('images/raquo.png') no-repeat left 0.833em; //图片当然自己去找
  padding-left: 13px;
}

特别注意

Flag模块也是支持模板的,但其中的模板文件是用flag--flagname.tpl.php,是2个-,一个不留神,搞了好长。

评论

谢谢你的分享

感谢你的分享,很受用,一直关注着这个站的rss, 谢谢!~