将评论区移动到内容区

Posted

技术标签:

【中文标题】将评论区移动到内容区【英文标题】:Move comment-area into content-area 【发布时间】:2016-12-13 19:18:55 【问题描述】:

注意:在这篇文章的底部,我刚刚添加了一个更新。更新中的 cmets 可能会使原始帖子的某些部分变得多余。 最终,我想在我的所有页面上都有一个评论部分。目前我只是在某些页面上激活了 cmets。

我没有在这个页面上激活 cmets http://www.rosstheexplorer.com/how-to-back-up-photos-when-abroad/

我确实在此页面上激活了 cmets http://www.rosstheexplorer.com/blue-moutnains-and-katoomba-nsw/

当我激活 cmets 时,FB 插件会从屏幕右侧移动到页面底部。我怎样才能防止这种情况?我改变了评论区的宽度,让评论区向左浮动,但这并没有解决我的问题。我还删除了“clear:both”文本,但这并没有解决问题。我现在已将“clear:both”文本放回我的代码中。

当没有 cmets 时,小部件区域位于站点内容内。

当有 cmets 时,小部件区域会移动。我怎样才能防止这种情况?这是造成问题的原因吗?

有人有什么建议吗?

评论区号是

`/* =Comments */

.comments-area 
margin: 24px auto 0;
border-top: 3px solid #eee;


.comments-title,
#respond h3 
font-size: 1.2em;
line-height: 1.36em;
color: #999;

.comments-title small,
.comment-reply-title small 
float: right;


.comment-list,
.comment-list .children 
list-style: none;


.comment-list 
margin: 0;


.comment-list > .comment:first-of-type 
padding-top: 0;
border-top: 0;


.comment 
margin-top: 26px;
padding-top: 27px;
border-top: 1px solid #eee;


.comment-meta 
text-transform: uppercase;

.comment-meta a 
color: #666;

.comment-meta .comment-author img 
float: left;
border-radius: 50%;

.comment-meta .comment-author .fn 
display: block;
font-weight: normal;
margin-left: 74px;
text-transform: none;

.bypostauthor > article .fn:after 
content: "\f304";
font-size: 16px;
left: 3px;
position: relative;
top: -5px;

.comment-meta .comment-metadata 
font-size: .8125em;
font-weight: normal;
line-height: 2.09231em;
margin-bottom: 27px;
margin-left: 74px;
letter-spacing: 1px;
color: #999;

.comment-meta .comment-metadata a 
color: #999;

.comment-meta .comment-metadata a:hover 
color: #1c7c7c;


.comments-area .edit-link:before 
display: inline;
margin: 0 7px;
content: ' ~ ';


.comment-form label 
display: inline-block;
width: 109px;


.required 
color: #1c7c7c;


.comment-form-author,
.comment-form-email,
.comment-form-url,
.comment-form-comment 
position: relative;
margin: 0 0 27px;

.comment-form-author label,
.comment-form-email label,
.comment-form-url label,
.comment-form-comment label 
font-size: .8125em;
font-weight: normal;
line-height: 2.09231em;
position: absolute;
top: 7px;
left: 0;
padding: 7px 14px;
letter-spacing: 1px;
text-transform: uppercase;

.comment-form-author input,
.comment-form-email input,
.comment-form-url input,
.comment-form-comment input 
display: block;
clear: both;
width: 100%;
margin: 0 0 27px;
padding-left: 100px;

.comment-form-author textarea,
.comment-form-email textarea,
.comment-form-url textarea,
.comment-form-comment textarea 

width: 100%;
margin: 0 0 27px;
padding: 54px 14px 7px;


.says 
display: none;


.form-allowed-tags 
color: #999;


.no-comments 
font-style: italic;
margin: 27px 0;
text-align: center;
color: #999;

index.php 代码是

<?php
/**
 * The main template file.

 *
 *
 * @package Penscratch
 */

get_header(); ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">



        <?php if ( have_posts() ) : ?>

            <?php /* Start the Loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>

                <?php
                    /* Include the Post-Format-specific template for the content.
                     * If you want to override this in a child theme, then include a file
                     * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                     */
                    get_template_part( 'content', get_post_format() );
                ?>

            <?php endwhile; ?>

            <?php penscratch_paging_nav(); ?>

        <?php else : ?>

            <?php get_template_part( 'content', 'none' ); ?>

        <?php endif; ?>

        </main><!-- #main -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

cmets.php 代码是

<?php
/**
 * The template for displaying Comments.
 *
 * The area of the page that contains both current comments
 * and the comment form.
 *
 * @package Penscratch
 */

/*
 * If the current post is protected by a password and
 * the visitor has not yet entered the password we will
 * return early without loading the comments.
 */
if ( post_password_required() ) 
    return;

?>

<div id="comments" class="comments-area">



    <?php // You can start editing here -- including this comment! ?>

    <?php if ( have_comments() ) : ?>
        <h2 class="comments-title">
            <?php
                printf( _nx( 'One thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', get_comments_number(), 'comments title', 'penscratch' ),
                    number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
            ?>
        </h2>

        <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>
        <nav id="comment-nav-above" class="comment-navigation" role="navigation">
            <h1 class="screen-reader-text"><?php _e( 'Comment navigation', 'penscratch' ); ?></h1>
            <div class="nav-previous"><?php previous_comments_link( __( '< Older Comments', 'penscratch' ) ); ?></div>
            <div class="nav-next"><?php next_comments_link( __( 'Newer Comments >', 'penscratch' ) ); ?></div>
        </nav><!-- #comment-nav-above -->
        <?php endif; // check for comment navigation ?>

        <ol class="comment-list">
            <?php
                wp_list_comments( array(
                    'style'       => 'ol',
                    'short_ping'  => true,
                    'avatar_size' => 60
                ) );
            ?>
        </ol><!-- .comment-list -->

        <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>
        <nav id="comment-nav-below" class="comment-navigation" role="navigation">
            <h1 class="screen-reader-text"><?php _e( 'Comment navigation', 'penscratch' ); ?></h1>
            <div class="nav-previous"><?php previous_comments_link( __( '< Older Comments', 'penscratch' ) ); ?></div>
            <div class="nav-next"><?php next_comments_link( __( 'Newer Comments >', 'penscratch' ) ); ?></div>
        </nav><!-- #comment-nav-below -->
        <?php endif; // check for comment navigation ?>

    <?php endif; // have_comments() ?>

    <?php
        // If comments are closed and there are comments, let's leave a little note, shall we?
        if ( ! comments_open() && '0' != get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
    ?>
        <p class="no-comments"><?php _e( 'Comments are closed.', 'penscratch' ); ?></p>
    <?php endif; ?>

    <?php comment_form(); ?>



</div><!-- #comments -->

更新 - 我更改了索引 .php 的底部

<?php get_sidebar(); ?>

</div><!-- #primary -->

<?php get_footer(); ?>

然后我在 IE 开发者工具中的评论区搞乱了。很明显,评论区是侧边栏或/和小部件区域的一部分。当我将评论区域的宽度更改为 200 像素时,它移动到了内容的右侧,而不是其下方。

然后使用 IE 开发工具,我移动了评论区域,使其嵌套在内容区域中。然后评论区和FB插件都出现了我希望它们出现的样子。

如何更改我的代码以使评论区永久嵌套在内容区中?

【问题讨论】:

这似乎不是 css 问题,似乎一个插件(可能)正在改变内容块的呈现方式。可以禁用所有插件,用cmets看一下帖子,看看是否一切正常? 我禁用了所有插件,除了一些关键的插件,如 Akismet,不幸的是它没有任何影响:( 这些图片是如何添加的?你能用一些虚拟文本在另一个测试帖子上激活 cmets 并链接它吗? 给你rosstheexplorer.com/test124 【参考方案1】:

您正在使用的模板的小部件区域设置在 cmets 下方。与其专注于移动 cmets,不如探索小部件区域所在的模板结构。

在 CSS 中,我看到小部件区域的代码:

.site-content .widget-area 
    margin-top: 27px;
    padding-top: 24px;
    border-top: 3px solid #eee;

@media screen and (min-width: 50em) 
    .site-content .widget-area 
        float: right;
        overflow: hidden;
        width: 28%;
        margin-top: 0;
        padding-top: 0;
        border-top: 0;
    

你说:

然后评论区和FB插件都出现了我想要的样子 出现。

您有您希望它们如何显示的屏幕截图吗?它肯定会有助于找到解决方法。

【讨论】:

【参考方案2】:

我发现蓝山页面使用的是 page.php 模板文件,而不是 index.php 文件。

然后经过大量实验,我通过将 page.php 模板文件的底部更改为以下内容来使其工作

在修改之前,sidebar.php 位于主 div 之外,与 cmets 相关的代码位于主 div 内。

修改后的代码是这样的

<?php get_sidebar(); ?>

</div><!-- #primary -->

<?php
                    // If comments are open or we have at least one comment, load up the comment template
                    if ( comments_open() || '0' != get_comments_number() ) :
                        comments_template();
                    endif;
                ?>



<?php get_footer(); ?>

【讨论】:

【参考方案3】:

我修改了您发布的代码。我添加了结束标记并将 cmets 代码移到它上面,这就是您需要将其放置在与主 div 相同宽度的位置。

get_sidebar 还会渲染一个辅助 div,该辅助 div 需要与主 div 并排放置,以便它漂浮在它旁边。我使用 firebug 修改代码并附上屏幕截图以阐明您正在寻找的内容。

<?php

if ( comments_open() || '0' != get_comments_number() ) :
 comments_template();
 endif;
?>

  </main>

</div><!-- #primary -->

<?php get_sidebar(); ?>

<?php get_footer(); ?>

【讨论】:

以上是关于将评论区移动到内容区的主要内容,如果未能解决你的问题,请参考以下文章

实现移动端顶部与底部固定,内容区优化的效果

案例:电梯导航功能

案例:电梯导航功能

小程序评论区动态刷新

Unity微信聊天框界面制作

GC 垃圾回收