在PHP IF条件中更正HTML结构

时间:2014-04-10 09:56:05

标签: php html wordpress

这是我修改过的Wordpress循环,带有PHP If和Else Condition代码。

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

<?php
$i = 1;

while (have_posts()) {

    the_post(); 


    if ($i <= 1) {

            echo '<div class="firstp">';

                echo '<a href="'; the_permalink(); echo '"'; echo 'alt="'; the_title(); echo '"'; echo 'title="'; the_title(); echo '">';
                    the_post_thumbnail('article-oneimg', array( 'id'    => "article-oneimg")); 
                echo '</a>';

                echo '<div class="thedate1">';
                    the_date();
                echo '</div>';

                echo '<h1><a href="'; the_permalink(); echo '"'; echo 'alt="'; the_title(); echo '"'; echo 'title="'; the_title(); echo '">';;
                    the_title();
                echo '</a></h1>';

                echo '<p>';
                    the_excerpt();
                echo '</p>';

            echo '</div>';



    } elseif ($i <= 10) {
        echo '<div class="HOLDER-OF-secondp">';     
        include "secondp.php";
        echo '</div>';



    } else {
        // There should be a bunch of HTML mixed in here too
        the_title();
    }
    $i++;
}

?>



<?php else : ?>

<h2>No Posts Found</h2>

<?php endif; ?>

secondp.php 包含以下代码:

<div class="secondp">
    <a href="<?php the_permalink() ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>">
        <?php the_post_thumbnail('article-twoimg', array( 'id'  => "article-twoimg")); ?>
    </a>
    <div class="thedate2">
        <?php the_date(); ?>
    </div>
    <h1>
        <a href="<?php the_permalink() ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </h1>
</div>

我在这里尝试做的只是添加secondp.php的持有者/容器,因为它有几个帖子。但每次我使用echo '<div class="HOLDER-OF-secondp">';之前和之后include "second.php";发生这种情况后(参见下面使用Firebug拍摄的图片。)

enter image description here

PHP IF条件中的HTML结构有什么问题?我试图实现的是放置一个容纳所有divs类secondp的容器。

在简单的HTML中,它是这样的:

<div class="holderofsecondp">
<div class="secondp">
a href="<?php the_permalink() ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>">
        <?php the_post_thumbnail('article-twoimg', array( 'id'  => "article-twoimg")); ?>
    </a>
    <div class="thedate2">
        <?php the_date(); ?>
    </div>
    <h1>
        <a href="<?php the_permalink() ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </h1>
</div>
</div>

3 个答案:

答案 0 :(得分:1)

试试这段代码: -

<?php global $wp_query;?>
<?php if (have_posts()) : ?>

<?php
$i = 1;
$start_hoder = true
$total_posts = $wp_query->found_posts;
while (have_posts())
{

    the_post();

    if ($i <= 1) {

        echo '<div class="firstp">';

            echo '<a href="'; the_permalink(); echo '"'; echo 'alt="'; the_title(); echo '"'; echo 'title="'; the_title(); echo '">';
                the_post_thumbnail('article-oneimg', array( 'id'    => "article-oneimg"));
            echo '</a>';

            echo '<div class="thedate1">';
                the_date();
            echo '</div>';

            echo '<h1><a href="'; the_permalink(); echo '"'; echo 'alt="'; the_title(); echo '"'; echo 'title="'; the_title(); echo '">';;
                the_title();
            echo '</a></h1>';

            echo '<p>';
                the_excerpt();
            echo '</p>';

        echo '</div>';

    } elseif ($i <= 10) {
        if($start_hoder)
        {
            echo '<div class="HOLDER-OF-secondp">';
            $start_hoder = false;
        }
            include "secondp.php";
        if($total_posts == $i && $start_hoder == false)
        {
            echo '</div>';
        }
    } else {
        // There should be a bunch of HTML mixed in here too
        the_title();
    }
    $i++;
}
?>

<?php else : ?>

<h2>No Posts Found</h2>

<?php endif; ?>

这可能会帮助您获得预期的输出。

答案 1 :(得分:-1)

看起来你有一个循环,你的循环内部你反复echo持有者。您希望重新排列代码,使其不在循环内。

答案 2 :(得分:-1)

<div class="holderofsecondp">
<?php  while (have_posts()) { ?>

    <div class="secondp"></div>
    <div class="secondp"></div>
    <div class="secondp"></div>
    <div class="secondp"></div>
    <div class="secondp"></div>
    <div class="secondp"></div>
    <div class="secondp"></div>

<?php } ?>

</div>

<div class="holderofsecondp">这将永远不在循环中

或在您的代码中执行此操作

<?php if($i==0) {?> <div class="HOLDER-OF-secondp"><?php } ?>

并将div添加到循环中,但这不是个好主意。如果您需要更多帮助,请告诉我。