0

我正在尝试在 2 列中显示我的类别和该类别下的帖子。

我确实尝试过用 CSS 解决它,但结果并不好。

这是我的代码:

<?php
    $cat_id = get_query_var('cat');
    $catlist = get_categories('hide_empty=0&child_of=' . $cat_id);

    foreach($catlist as $categories_item) {
        echo "<div class='half'>";
        $cat_title = get_field('category_title' , 'category_'  . $categories_item->term_id);
        echo "<ol>";
        echo '<h3><a href="' . get_category_link( $categories_item->term_id ) . '" ' . '>' . $cat_title .'</a> </h3> ';
        query_posts(array(
        'cat' => $categories_item->term_id,
        'posts_per_page' => 9999,
        'order' => 'ASC', //order ascending
        'orderby' => 'title' //order by title
        ));

    if (have_posts()) : while (have_posts()) : the_post(); ?>
    <li><a href="<?php the_permalink();?>">
      <?php the_title(); ?>
      </a></li>
    <?php endwhile; endif; ?>
    <?php echo "</ol>"; echo "</div>"; ?>
    <?php } ?>

有任何想法吗?

提前致谢!:)

4

2 回答 2

1

当您连续有 2 个类别时,请在您的 php 代码上添加一行,<?php echo "<div class='clear'></div>"; ?>然后使用计数器。<?php echo "</ol>"; echo "</div>"; ?>

您的最后四行将如下所示:

<?php
$cat_id = get_query_var('cat');
$catlist = get_categories('hide_empty=0&child_of=' . $cat_id);

$counter = 0; // set counter initial value
foreach($catlist as $categories_item) {
    $counter++; // counter increment
    echo "<div class='half'>";
    $cat_title = get_field('category_title' , 'category_'  . $categories_item->term_id);
    echo "<ol>";
    echo '<h3><a href="' . get_category_link( $categories_item->term_id ) . '" ' . '>' . $cat_title .'</a> </h3> ';
    query_posts(array(
    'cat' => $categories_item->term_id,
    'posts_per_page' => 9999,
    'order' => 'ASC', //order ascending
    'orderby' => 'title' //order by title
    ));

if (have_posts()) : while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink();?>">
  <?php the_title(); ?>
  </a></li>
<?php endwhile; endif; ?>
<?php echo "</ol>"; echo "</div>"; ?>

<?php 
if($counter == 2){ // check is there two columns in a row
    echo "<div class='clear'></div>"; // this div will clear float here by css
    $counter = 0; // now reset the counter
}
?>
<?php } ?>

现在将以下 css 代码添加到您的 css 文件中

.clear {
    clear: both;
}

请检查。它可能会帮助你。谢谢。

于 2013-03-14T22:41:31.720 回答
0

我自己的非常简单但有效的解决方案

<div class="row-fluid">

            <?php
            $counter = 0;
            $counter2 = 0;

            $temp = $wp_query;
            $wp_query = null;
            $wp_query = new WP_Query();
            $wp_query->query('showposts=10&cat=2'.'&paged='.$paged);
            if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

            <!-- starting the loop -->
            <div class="span6">

                <p><?php the_title(); ?></p>

                <div class="row-fluid">
                    <div class="span5">
                        <?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID, 'thumbnail') ); ?>
                        <p><img src="<?php echo $url; ?>" /></p>
                    </div>
                    <div class="span7">
                        <?php the_excerpt(); ?>
                        <p><a class="btn" href="<?php the_permalink(); ?>">more &raquo;</a></p>
                    </div>
                </div>

            </div>

            <?php
            $postperpage = 10;
            $counter++;
            $counter2++;
            if ($counter == 2 && $counter2 <= $postperpage-1) {
                echo '</div><div class="row-fluid">';
            $counter = 0;
            }

            if ($counter2 == $postperpage) {
            echo '</div> <!-- the last row -->';
            }
            ?>

            <!-- loop end -->
            <?php endwhile; ?>
于 2014-06-20T18:56:33.760 回答