拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
エントリー内の画像をリストアップするプラグイン(その7)
「エントリー内の画像をリストアップするプラグイン」を使って、以下のようなことを行いたいというご要望がありました。
各カテゴリーから1件ずつ画像を取り出し、表組みにして表示したい。
このプラグインだけでは、カテゴリーをまたがって表組みにすることはできません。
しかし、拙作のVarHandlerプラグインを組み合わせればできますので、その例を紹介します。
1.考え方
カテゴリーをまたがって表組みにする場合、「変数」を利用して列の番号を管理するようにします。
例えば、3列の表組みにしたい場合、以下のように処理するようにします。
1.列の番号が1の時は、行の先頭なので、<tr>タグを出力する
2.画像を1つ出力する
3.列の番号が3の時は、行の最後なので、</tr>タグを出力する
4.列の番号を1つ増やし、その値が4になったら行が変わったことになるので、列の番号を1に戻す
また、カテゴリーの数によっては、行の途中(1列目や2列目)で表の出力が終わってしまい、表の最後の行で行末の</tr>タグが出力されません。
例えば、カテゴリーが7個の場合、1行目と2行目に3カテゴリーずつ出力され、3行目に1カテゴリーだけ出力されて、あと2列が出力されません。
そこで、各カテゴリーの画像を出力し終わったら、行の途中で出力が止まっているかどうかを判断して、空白のセルと、行末の<tr>タグを出力するようにします。
2.例
上記の話に基づいて、3列の表組みにする例を作ってみました。
「col_count」という変数を使って、列の番号を管理しています。
なお、前述したように、この例ではVarHandlerプラグインで拡張したタグを使っていますので、このプラグインもインストールする必要があります。
<MTSetVar name="col_count" value="1"> <table class="image-list" cellspacing="0" cellpadding="0"> <MTSubCategories> <MTEntriesIfHaveImages> <MTIfNumVar name="col_count" value="1"><tr></MTIfNumVar> <MTEntryImages img_lastn="1"> <td> <table> <tr> <td class="image-list-item"><a href="<$MTEntryImageSrc regex="s/(.*)-thumb\.(.*)/$1.$2/"$>" target="_blank"><img src="<$MTEntryImageSrc$>" width="<$MTEntryImageWidth cell_size="120,90"$>" height="<$MTEntryImageHeight cell_size="120,90"$>" alt="<$MTEntryImageAlt$>" /></a></td> </tr> <tr> <td><MTEntryImageEntry><a href="<$MTEntryPermalink$>"><$MTCategoryLabel$>:<$MTEntryTitle$></a></MTEntryImageEntry></td> </tr> </table> </td> </MTEntryImages> <MTIfNumVar name="col_count" value="3"></tr></MTIfNumVar> <MTAddVar name="col_count" value="1"> <MTIfNumVar name="col_count" value="4"><MTSetVar name="col_count" value="1"></MTIfNumVar> </MTEntriesIfHaveImages> <MTSubCatsRecurse> </MTSubCategories> <MTIfNumVar name="col_count" value="2"><td></td><MTAddVar name="col_count" value="1"></MTIfNumVar> <MTIfNumVar name="col_count" value="3"><td></td></tr><MTAddVar name="col_count" value="1"></MTIfNumVar> </table>