Page.php vs Single.php

时间:2012-11-27 作者:Lorenzo

我有一页。php和single。完全相同的php模板。然而,当我呈现页面时。php div的嵌套方式与single不同。php和布局被破坏。

我甚至区分了这两个页面的输出,除了元元素和不可见元素之外,它们也是完全相同的。

以下是两个模板的代码:

<?php get_header(); ?>

<?php 
  if ( have_posts() ) while ( have_posts() ) : the_post(); 
  $post_id = $post->ID;
?>

<div class=\'container span12\' id=\'single-post\'>

    <div class=\'span8 alignleft\'>
      <div class=\'post single\'>

        <h2 class=\'entry-title\'><?php the_title(); ?></h2>

        <?php the_content(); ?>

        <?php comments_template( \'\', true ); ?>
        <?php endwhile; ?>
      </div> 
    </div>

    <div class=\'span4 alignright\'>
      <div id=\'sidebar\'>
        <?php get_sidebar(); ?>
      </div>
    </div>

</div><!--end container-->

<?php get_footer(); ?>
我应该检查什么来解决此问题?

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

根据此评论编辑

注释注释模板有效。

问题在于中的模板标记comments.php. 您在某些输出中看到它而在其他输出中看不到它的可能原因可能是因为您在一个上下文中启用了注释,而在另一个上下文中没有启用注释。尝试比较启用和禁用评论的单个帖子,您可能会看到同样的情况。

原来,您在错误的位置关闭了循环。你的<?php endwhile; ?> 位于post容器标记的中间。而且,你永远不会关闭if 条款

我会修改您的标记,使其更加直观,并正确地关闭循环:

<div class=\'container span12\' id=\'single-post\'>

    <div class=\'span8 alignleft\'>

        <?php 
           if ( have_posts() ) while ( have_posts() ) : the_post(); 
           $post_id = $post->ID;
        ?>

        <div class=\'post single\'>

            <h2 class=\'entry-title\'><?php the_title(); ?></h2>

            <?php the_content(); ?>

            <?php comments_template( \'\', true ); ?>

        </div><!-- .post single -->

        <?php endwhile; endif; ?>

    </div><!-- .span8 alignleft -->

    <div class=\'span4 alignright\'>
      <div id=\'sidebar\'>
        <?php get_sidebar(); ?>
      </div>
    </div>

</div><!--end container-->
应该解决任何<div> 与循环相关的嵌套问题。如果没有,则需要提供到渲染输出的实时链接,以便我们可以看到发生了什么。

SO网友:s_ha_dum

我应该检查什么来解决此问题?

你的header.php. 您的小部件。您的边栏代码。即使您的CSS也可能导致<div>不要筑巢。

相同的代码不会在不同的位置产生不同的结果。计算机就是这样可靠的。您已破坏标记。你需要找到它。它可能位于<div>s变差了,正如页面的源代码所反映的那样,不一定是有目的的视觉布局。

使用W3C Validator. 这会有帮助的。您可以使用FireFox扩展名“Web Developer”提交本地文件,也可以手动上载。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。