在wordpress列表页(首页)显示各文章评论

LMS
2.1K+ 9

好像一夜之间介于博客和微博之间的轻博(此轻博非彼轻薄)突然就冒了出来了,昨天我还在看蓝冰同学用 Typecho 程序做的轻博客,那简洁的主题让我眼馋,今天早上沙师弟就在群里发了条地址,说他在新开的点点注册了个轻薄(这会在升级服务中不能访问了),在那里炫耀,我说给你的博客换个皮肤也能和他那一样,你要是能画个你想要的主题出来我免费给你做一个。

为防止万一沙师弟真的去学画画叫我做主题,我稍微看了一下轻博客,暂时没发现什么特别的,功能上 wordpress 都可以实现,唯一一点区别的是在首页文章下面有列出该篇文章的评论,而 wordpress 一般都是点进 single 页面才列评论的,用默认的评论模板肯定是不行的,所以网络上找了一下解决方法,只找到下面一种:

解决方法是在WordPress主题文件夹下的 index.php 文件的文章调用循环内,即 while (have_posts()) : the_post();endwhile; 之间适当位置,添加以下代码:

<?php
    global $withcomments;
    $withcomments = true;

    // 包含评论模板文件,
    comments_template("/inline-comments.php");
?>

使用全局变量 $withcomments,并将其值改成 true(或者$withcomments = 1;)第6行的inline-comments.php文件是为首页特制的评论模板,默认的模板在id什么的上面会有冲突,不适合首页使用。下面是个首页评论模板的例子。

<div <?php if( is_single() || is_page() ){ echo 'id="comments"'; } ?> class="entry-comments">
<?php if ( post_password_required() ){ return; } ?>
<?php /* Count the number of comments and trackbacks (or pings) */
$ping_count = $comment_count = 0;
foreach ( $comments as $comment )
 get_comment_type() == "comment" ? ++$comment_count : ++$ping_count;
?>

<?php if ( have_comments() ) : ?>
<div class="inline-comments-list">
<ul class="commentslist inlinecomments">
        <?php wp_list_comments('type=comment&callback=stf_comment_inline'); ?>
</ul>
</div>
<?php endif; ?>

<?php $pc = 0; ?>
<?php if ( stf_show_comment_form() && $pc == 0 && ! post_password_required() ) : ?>
        <?php $pc++; ?>
        <div class="respond-wrap"<?php if ( ! is_singular() ): ?> style="display: none; "<?php endif; ?>>
                <?php
                        $p2_comment_args = array(
                                'title_reply' => __( 'Reply', 'p2' ),
                                'comment_field' => '<div class="form"><textarea id="comment" class="expand50-100" name="comment" cols="45" rows="3"></textarea></div> <label class="post-error" for="comment" id="commenttext_error"></label>',
                                'comment_notes_before' => '<p class="comment-notes">' . ( get_option( 'require_name_email' ) ? sprintf( ' ' . __('Required fields are marked %s'), '<span class="required">*</span>' ) : '' ) . '</p>',
                                'comment_notes_after' => '',
                                'label_submit' => __( 'Reply', 'p2' ),
                                'id_submit' => 'comment-submit',
                        );
                        comment_form( $p2_comment_args );
                ?>
        </div>
<?php endif; ?>
</div>

这个方法适用于分类页、标签页、日期归档页等文章列表页!

THE END

评论 9

  1. 悲剧了 你真去研究了。
    我最近忙的不开交,不过另外师傅要过来让我很开心啊。 :mrgreen:

    1. 不羡慕不极度,无视,喝开水!

      1. 你看你嫉妒的都打错字了哈哈哈哈哈 :mrgreen:

  2. 额~各种代码~~飘过!

  3. 这样的技术文章不能没有我的份,收藏学习

  4. 天呐!最怕的就是看到有关程序的东西!上课的时候看小说,现在后悔都来不及啦!

发表评论

Submit