3.2x-ja
MTRandomEntries、Collect Plugin:エントリ内の画像をランダム表示【改】
先日、エントリ内の画像をランダムに表示してみようというエントリをあげたところ、
思いのほか反応があってビックリしました。みなさんありがとうございました!
そのときのやりとりの中で、
・画像がないエントリが選択されると画像表示部分が空白になってしまう件、
・画像があるのに表示されない件(こんなうっかりはわたしだけ?)
・カテゴリーアーカイブ、個別アーカイブでも同一カテゴリー画像をランダム表示
について教えていただいたり、思いついたりと、覚え書きしておきたいことがでてきたので、
【改】と称して再エントリです。(ようはまとめのようなものです・・)
まずは経過のご案内です。
・読んだ本をランダムに表示してみる【追記アリ】
・別のブログから特定の画像をランダム表示
以下に書いてあることは、これらのエントリのまとめ・続編のようなものです。
既にメインページにランダム表示されていることを前提に書いてありますので、
設置については上記エントリを参考にしてください。
・画像がないエントリが選択されると画像表示部分が空白になってしまう件
画像がないものを対象外にできるのかも知れませんが分かりませんでした・・。
なので、必ず画像を出したい場合は、対象エントリ全てに画像を入れるか、
ランダム表示用の専用カテゴリを作って対象エントリをそこに入れてしまうとか、
このぐらいしか思いつきませんでした・・。
それじゃイヤー!という方には、代替画像を表示させる方法もあるようです。
この件については、おーたむさんのエントリで解説されています。
詳しくは下記のエントリをご覧ください。
(ちなみにわたしは今のところ全部画像入りなのでこの対策はしてません)
Diary@多読の小部屋 : 画像がない場合(エントリー画像をランダムに表示)
・画像があるのに表示されない件
設置は無事に済んだものの、全部画像は入っているのにおかしいなあー・・?と、
多くはないけど、少なくないエントリのどこをチェックしたらいいものか分からず、
この件についてはしばらく原因を掴めないでいました・・・が!
代替画像入れてみて画像がでないエントリチェックすればいいじゃん!
ということに気づき、試してみました。
*修正前:「Baron: The Cat Returns」が表示されません・・
*修正後:「Baron: The Cat Returns」表示されました!
これについては、エントリ本文中のイメージタグが「IMG」と大文字になっていたために
起こっていたようです。さっそく管理画面からエントリ内の「IMG」タグを検索し、
「img」に置換したら表示されるようになりました。
でもまだ表示されないエントリがある・・。
なんでだろう、なんでだろうと散々考えましたが、答えが分かれば簡単です。
Collect Plugin のタグ対象部分を以下のように書き換えることで解消されました。
修正前> <$MTEntryBody$>
修正後> <$MTEntryBody$><$MTEntryMore$>
表示されなかったのは、本文中に画像はなく、追記部分に画像があるエントリ
だったのでした・・。
これで、このブログのランダムはきちんと3つづつ表示されるようになりました。
はー、スッキリした!(爆)
ちなみにこれはチェック用に作った画像です。
せっかくなので出してみます(笑)。
代替画像が手元になく、これで構わないという方は
ご自由にお持ち帰りください。
・カテゴリーアーカイブ、個別アーカイブでも同一カテゴリー画像をランダム表示
これはおーたむさんの「エントリー画像をランダムに表示」エントリを拝見して
やってみましたが、下記はおーたむさんのご紹介とは別のプラグインを使用してます。
(ちなみにおーたむさんご紹介のプラグインは別のことで使用中)
きっかけは自分の個別アーカイブを見ていてぴぴっときたことでした。
リニューアル覚え書きに書き忘れていたのですが、個別アーカイブのエントリリストを、
小粋空間:個別エントリーアーカイブに同一カテゴリーのエントリーを表示
こちらを参考にしていたのでした。
そして、今回のアーカイブでのランダム表示はこの方法を流用しています。
ここでプラグインを入手し、plugins ディレクトリにアップロードします。
(プラグインの内容については小粋空間さんで詳しく説明されています)
MT Extensions:MTTagInvoke 0.9
そして表示させたい場所に以下のタグをいれます。
※カテゴリアーカイブ、個別アーカイブともにこのタグになります。
<div class="sidetitle">RANDOM PICKUP</div>
<div class="side">
<MTTagInvoke tag_name="MTRandomEntries">
<MTTagAttribute name="category"><$MTArchiveCategory$></MTTagAttribute>
<MTTagAttribute name="lastn">3</MTTagAttribute>
<MTTagContent>
<MTCollect tags="img">
<MTCollectThis show="0">
<$MTEntryBody$><$MTEntryMore$>
</MTCollectThis>
<MTIfCollected tags="img">
<MTCollected tags="img" lastn="1">
<a href="<$MTEntryLink$>" title="<$MTEntryDate format="%x"$>/<$MTEntryTitle$>"><img width="59" src= "<$MTCollectedAttr attr="src"$>" alt="<$MTEntryDate format="%x"$>/<$MTEntryTitle$>" style="margin-right:0px; border:none;" /></a>
</MTCollected>
</MTIfCollected>
</MTCollect>
</MTTagContent>
</MTTagInvoke>
</div>
classや、画像サイズなどは各自で調整して、再構築すればできあがりです。
そしてこれ、月別アーカイブでもその月のランダムとか何とかならないかな?と、
タグとアトリビュートでいろいろやってみましたができませんでした・・。
(表示している月別ごとに、などの条件がなければ表示させることは可能です)
・おまけ(ランダム動作について)
ランダムはそのページの再構築によって行われます。
管理画面からの再構築や、エントリ投稿、コメント投稿、トラックバック受信などが、
そのトリガーになっています。
なのでカテゴリーアーカイブや、個別アーカイブに設置するとランダムがかかりにくい。
この辺りをモジュール化してPHPを利用することで何とかならないか?と思ったのですが、アーカイブに属しているタグ?ってインデックステンプレートで作成できないんですね。上のタグで作成してみようと思ったらダメでした。(こんなことも知らなかったです・・)
これらを踏まえて、わたしの個人的な感想を書いてみると・・・
・モジュール化の場合
読んだ本をランダムに表示してみる【追記アリ】バージョンなら、
インデックステンプレートで作成できるのでモジュール化できます。
「自動に再構築する」にチェックをいれておけば、メインページと同じ動作で
ランダムがかかります。
ただ、1つのモジュールを使い回すと表示される画像は全て同じになります。
各カテゴリごとにモジュール化していけばそれぞれで動作しますが・・面倒かも。
モジュール化については小粋空間さんの下記エントリで詳しく説明されています。
導入についてはこちらを参考にしてみてください。
小粋空間:モジュール化 アーカイブ
・カテゴリー、個別アーカイブに直接設置した場合
その対象エントリやカテゴリが再構築されない限りランダムされません。
でも同一カテゴリーでしばりをつけられるし、設置も上のタグを入れるだけなので楽かも。
こんな感じになります。
アーカイブに設置する場合は、好みの動作で選ぶのがいいかもしれません。
・・・ここまで書いて何ですが、わたしはアーカイブには設置してません(爆)。
これからも設置予定はないのですが、プラグインとかタグとかアトリビュートとか
いろいろ理解するきっかけになってよかったです。
はー・・長かった・・。
コメントありがとう!
じゅんじゅんさん、こんにちはー。
画像いただきました♪ありがとうございますー!
実は「代わりの画像……」と少しだけ悩んでいたのです。
(お絵かき苦手:爆)
画像の無いエントリー、結構あるので楽しみです♪
Posted by: ぷぅ | 2006年03月01日 10:42
■ぷぅさん
お役にたてて良かったです!出した甲斐がありました。
>画像の無いエントリー、結構あるので楽しみです♪
・・わたしはドキドキしちゃいます(笑)。
ともあれ、ご連絡ありがとうございましたー!
Posted by: じゅんじゅん | 2006年03月01日 12:02