サポート » 使い方全般 » 記事によりカスタムフィールドの設定数が違う場合のテーブル表示

  • 解決済 iy5970

    (@iy5970)


    初心者です。
    各記事に、以下のようなカスタムフィールドを設定しています。
    name01、img01、txt01…を認識的にひとつのグループとして、数字の部分は現在03までしか作成しないルールになっています。
    表示部分は…
    name01 name02 name03
    ┌─────┐┌─────┐┌─────┐
    │img01││img02││img03│
    └─────┘└─────┘└─────┘
    txt01 txt02 txt03
    …のように表示してあります(投降時ズレてたらすいません;;)。
    テンプレートには、予め1×3のテーブルを作成して、<img src=””>なども記述した状態で、そこにカスタムフィールドの値を入れて出力しているだけです。値がない場合の処理も多少施してありますが、いずれにしても1×3のテーブルのみが必ず表示されるような作りになっています。
    なので、もしname04などを作成したとしても当然表示されません。

    この前提で、数に限りなく増やせる状態にしたいです(実際に100も200も設定することはなくせいぜい10個程度かと思いますが…)。
    記事によって、03までだったり04だったり…という状態になるかと思うのですが、そのように設定数がバラバラでも、1行につき3列のテーブルを崩すことなく表示したいです(3の倍数の時</tr><tr>でそれ以外は値が入っていなくても<td></td>…これで分かって頂けますか?)。

    ループで出来そうなかんじはするのですが、実際出来ますか?
    当方HTMLはOKですがPHPは初心者レベルなので、実際にソースを提示してご教示くださいますと大変助かります。
    宜しくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 iy5970

    (@iy5970)

    やはりズレました…余計に分かりにくくなっています。
    ↑の意味不明な表示部分は、ソースで言うと…
    <table>
    <tr>
    <td>name01、img01、txt01</td>
    <td>name02、img02、txt02</td>
    <td>name03、img03、txt03</td>
    </tr>
    </table>
    …です。
    すいませんが、宜しくお願い致します。

    #未検証

    番号は 0詰めの2ケタ、で良いなら:

    <table>
    <?php
    $repeat = true;
    $i = 0;
    while ( $repeat ) :
      echo '<tr>';
      for ( $col=0; $col<3; $col++ ) :
        $num  = zeroise( ++$i, 2 );
        $name = post_custom( 'name' . $num );
        $img  = post_custom( 'img'  . $num );
        $txt  = post_custom( 'txt'  . $num );
        if ( $repeat && $name && $img && $txt ) { // 値アリの判定:適宜変更してね
          echo "<td>$name $img $txt</td>"; // 値の出力:適宜変更してね
        } else {
          echo '<td></td>';
          $repeat = false;
        }
      endfor;
      echo '</tr>';
    endwhile;
    ?>
    </table>

    トピック投稿者 iy5970

    (@iy5970)

    ありがとうございます!思ったように表示されました。
    zeroiseがイマイチ理解が出来なかったので自分なりに調べて完全に理解したいと思います。
    本当にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「記事によりカスタムフィールドの設定数が違う場合のテーブル表示」には新たに返信することはできません。