flag模块是一个灵活的标记模块,使用这个模块可以标记任意的节点、评论、用户等内容,可以通过这个模块将节点标记为精华、垃圾或者你想做的任何标记.flag模块还可以和views2进行整合进行操作,同时flag还支持action.在官方网站上有非常详细的文档.
下面我就讲讲利用Flag模块,给评论加个精华。
安装Flag模块
和所有模块一样,下载,在模块设置中进行安装.
配置Flag模块
全局的flag和私人的flag,在flag模块中,标记分为全局和私人的2类,如果是私人flag,那么每个有仅进行标记的人都可以去更改它,而不会影响他人,如对文章进行收藏,全局的flag改变之后对所有用户都会影响,如管理员对评论进行加精,那么所有人都会看到这个精华标志.
用admin/build/flags进行对flag进行设置:
增加好之后,在前台就可以对评论节点进行精华标志。
把区块放到模板的指定位置,就可以看到精华评论。
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个-,一个不留神,搞了好长。
下面我就讲讲利用Flag模块,给评论加个精华。
安装Flag模块
和所有模块一样,下载,在模块设置中进行安装.
配置Flag模块
全局的flag和私人的flag,在flag模块中,标记分为全局和私人的2类,如果是私人flag,那么每个有仅进行标记的人都可以去更改它,而不会影响他人,如对文章进行收藏,全局的flag改变之后对所有用户都会影响,如管理员对评论进行加精,那么所有人都会看到这个精华标志.
用admin/build/flags进行对flag进行设置:
增加好之后,在前台就可以对评论节点进行精华标志。
把区块放到模板的指定位置,就可以看到精华评论。
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个-,一个不留神,搞了好长。