0

ですから、WPテーマのフォルダーにあるindex.phpを編集しています。基本的に、これを実行したいのは次のとおりです。

  • ブログの最初のページに4つの投稿を表示します。

  • 最初のページの最初の(最新の)投稿のスタイルを変えます。他の3つも同じようにスタイリングします。

  • 他のすべてのページ付けされたページに6つの投稿を表示します。

これが私が作業しているループです。最初のページは正常に表示されますが、何らかの理由で2ページ目以降では実行が非常に奇妙で、追加の各ページに1つの投稿しか表示されません。また、タイトルのみが表示され、日付や抜粋は表示されません。これが私のコードです:

           <?php 
            if( is_home() && !is_paged() ){
            global $query_string;
            parse_str( $query_string, $args );
            $args['posts_per_page'] = 4;
            query_posts($args);
            if (have_posts()) :
                while (have_posts()) : the_post();
           if (++$counter == 1) { ?>
            <div class="featured_post">
                <p class="date"><?php the_date('M j, Y'); ?></p>
                <a href="<?php the_permalink(); ?>"><h2><?php the_title(); ?></h2></a>
                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('featuredblog'); ?></a>
                <?php the_excerpt(); ?>
            </div>
          <?php } else { ?>
            <div class="regular_post">
                <p class="date"><?php the_date('M j, Y'); ?></p>
                <div class="postimage"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('regularblog'); ?></a></div>
                <a href="<?php the_permalink(); ?>"><h3><?php
                    // short_title($after, $length)
                    echo short_title('...', 7);
                    ?></h3></a>
                <?php the_excerpt(); ?>
            </div>
          <?php } ?>
        <?php endwhile;
        else :
           // Code for no posts found here
        endif;
        } else {
            global $query_string;
            parse_str( $query_string, $args );
            $args['posts_per_page'] = 6;
            query_posts($args); ?>
            <div class="regular_post">
                <p class="date"><?php the_date('M j, Y'); ?></p>
                <div class="postimage"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('regularblog'); ?></a></div>
                <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
                <?php the_excerpt(); ?>
            </div>
        <?php } ?>

たぶん、そこに...他のステートメントが多すぎますか?

4

3 に答える 3

1

ある種のフレームワークを使用していますか?それはかなり悪いtempalteエンジンです。

とにかく、yuoがスタイルを追加する必要がある場合は、CSSに仕事を任せる必要があります。

非常に高い精度が必要な場合は、異なるスタイルにする必要がある要素ごとにカウンターを備えたクラスを残すことができます。

お気に入り<div class="Element<?php echo ++$counter; ?>"></div>

その後、CSSでスタイルを追加できます

.Element1,.Element2,.Element3 {styles}
.Element4 {other styles}

このようにして、PHPコードで生活を簡素化します

いつの日か、クラスカウンターを追加する必要さえなくなることを覚えておいてください。近い将来、nth-child css selector http://reference.sitepoint.com/css/pseudoclass-nthchildを使用できるようになります。

編集:くそー私は50%のARで誰かに返信しました

于 2011-04-06T23:10:26.867 に答える
1

私の提案はyes123に従いますが、実際にはすべてcssに任せます。基本的に、すべての投稿は親divでラップする必要があり、それぞれを同じ方法で分類する必要があります。

<div id="content">
    <div class="post">
        <div class="title"></div>
    </div>
    <div class="post">
        <div class="title"></div>
    </div>
    <div class="post">
        <div class="title"></div>
    </div>
    <div class="post">
        <div class="title"></div>
    </div>
</div>

それはあなたが解決すべきことについてであり、明らかに、投稿にもっと多くのタグがあります。

そこから、最初の投稿のスタイルを変える方法は、#content > .post:first-childセレクターを使用することです。

また、ページごとに異なる投稿数を設定することは、おそらく良い考えではありません。私は実際にそれを実際に試したことがありませんが、ページングが台無しになる場所を見ることができ、おそらく投稿5または6は表示されないでしょう。常にポスト7から開始する必要があります。ただし、ポジティブではありません。

于 2011-04-06T23:23:17.097 に答える
0
<?php if (is_home() && !is_paged() ) {
                global $query_string;
                parse_str( $query_string, $args );
                $args['posts_per_page'] = 4;
                query_posts($args);
                } else { 
                global $query_string;
                parse_str( $query_string, $args );
                $args['posts_per_page'] = 6;
                query_posts($args);
                } ?>
            <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
            <div class="post<?php echo ++$counter; ?>">
                    <?php if ( is_home() && !is_paged() && $counter == 1 ) { ?>
                        do stuff
                    <?php } else { ?>
                        do other stuff
                    <?php } ?> 
            </div>
            <?php endwhile; ?>
于 2011-04-07T17:11:06.793 に答える