サポート » テーマ » 一覧ページの記事を3パターンで繰り返したい

  • 解決済 unicococo

    (@unicococo)


    一覧ページの表示形式を
    A→C→C→C→C→C→C→B→B→C→C
    で繰り返したいです。

    loop.php内に$loopcounterを使って実装してみましたが、
    phpに不慣れなため、上手くいきません。

    <?php
    if ( have_posts() ) : 
    while ( have_posts() ) : the_post();
    $loopcounter++;
    ?>
    
    <?php if ($loopcounter <=1 || $loopcounter%12 == 0) : ?>
    Aのコード
    <?php elseif ($loopcounter%8 == 0 || $loopcounter%9 == 0) : ?>
    Bのコード
    <?php else : ?>
    Cのコード
    <?php endif; ?>
    
    <?php
    endwhile;
    endif;
    ?>

    初歩的な質問で恐縮ですが、
    お力を貸していただけますと幸いです。

    何卒よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • すいませんワードプレスともPHPとも関係がないお話かと思いますので終わってしまうかもしれないので提案を書いておきます。

    <?php
    //現状
    //それぞれの倍数ごとに唐突にふりわけられ公倍数は分岐上位に含まれます
    //カウンタ初期化
    $loopcounter=0;
    //これは記事ループの代用です
    for($i=0;$i<256;$i++){
    	$loopcounter++;
    	if ($loopcounter <=1 || $loopcounter%12 == 0){
    		echo "A".$loopcounter."<br />\n";
    	}else
    	if ($loopcounter%8 == 0 || $loopcounter%9 == 0){
    		echo "B".$loopcounter."<br />\n";
    	}else{
    		echo "C".$loopcounter."<br />\n";
    	}
    }
    ?>
    <?php
    //カウンタ初期化
    $loopcounter=0;
    //これは記事ループの代用です
    for($i=0;$i<256;$i++){
    	//これはループ記述ではないですが変数の位置が初期化されもどるので
    	//実質ループになっています
    	//小ループ先頭の場合
    	if($loopcounter==0){
    		echo "A".$loopcounter."<br />\n";
    	}else
    	if($loopcounter > 0 && $loopcounter <=6){
    		//小ループ1から6の場合
    		echo "C".$loopcounter."<br />\n";
    	}else
    	if($loopcounter >= 7 && $loopcounter <=8){
    		//小ループ7から8の場合
    		echo "B".$loopcounter."<br />\n";
    	}else
    	if($loopcounter >= 9 && $loopcounter <=10){
    		//小ループ9から10の場合
    		echo "C".$loopcounter."<br />\n";
    	}
    	//小ループを担う部分
    	if($loopcounter <10){
    		//10以下であれば進める
    		$loopcounter++;
    	}else{
    		//10に至ればループバック
    		$loopcounter=0;
    	}
    }
    ?>
    
    • この返信は3 週間、 3 日前に  msio さんが編集しました。理由: 解決すれば幸いです。

    記事のデザインだけどうにかしたいという話であれば、
    CSSの :nth-of-type や、 :nth-child が手軽かもしれません。

    こんにちは

    A→C→C→C→C→C→C→B→B→C→C

    なにか規則性があるのでしょうか?規則性があればそれを式にできると思いますが・・・。
    規則性がないとすると、パターンのテーブルをもつ方法でもいいかも。

    <?php
    $table = 'ACCCCCCBBCC';
    $loopcounter = 0;
    if ( have_posts() ) : 
    while ( have_posts() ) : the_post();
    $pattern = substr( $table, $loopcounter % strlen( $table ), 1 );
    $loopcounter++;
    ?>
    
    <?php if ( $pattern === 'A' ) : ?>
    Aのコード
    <?php elseif ( $pattern === 'B' ) : ?>
    (省略)

    お返事が遅くなってしまい申し訳ありません。
    たくさんのご提案ありがとうございした。

    大きさの違うサムネイルを並べる一覧を想定しており、
    ishitaka様からいただいたパターンのテーブルをもつ方法で無事実装することができました!
    この度は誠にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。