ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4018618 MT4.1でCMS
質問者:MAT335 MT4.1でとある企業サイトを構築しようと考えてます。
会社概要などの固定ページが数ページと、頻繁に更新する複数の
コンテンツ(プレスリリース、企業ブログ)、という構造を以下
のような構成で作り始めてます。

○汎用ウェブサイト
 ・サイトトップページ
 ・会社概要等(ウェブページ)
 ・固定ページの更新情報(ブログ【A】)
○既定のブログ・プレスリリース(ブログ【B】)
○既定のブログ・企業ブログ(ブログ【C】)

上記の三つをMultiBlogを使ってまとめ、汎用ウェブサイトを親
サイトとして【A】〜【C】の情報を統合したトップページを構築
したいと考えています。
そのトップページの要素の一つとして、【A】〜【C】のブログ記
事の中からある一件の[タイトル]、[本文]の一部、[画像]の縮小
版を表示させたいと思っています。

とりあえずクローズアップに表示を「する・しない」の二択を指
定するカスタムフィールドを作成し、【A】〜【C】の各ブログの
各ブログ記事でフラグを立てられるようにしているのですが、こ
の条件で【A】〜【C】のブログ記事のうち、closeupを「する」と
設定した中で最も新しいブログ記事を取得してトップページの
「クローズアップ」に上記の内容で表示させる、といったことは
可能なのでしょうか。
また、どのように構築すればよろしいでしょうか。

よろしくお願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/05/13 10:17
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.3 追記:今日出された情報ですが、Movable Type 4.15では、簡単にカスタムフィールドの値がフィルタリングできるみたいです。
「カスタムフィールドの値で並べ替えやフィルタリングする」
http://www.movabletype.jp/blog/filtering_sorting_based_on_a_customf...
使ってみないとわかりませんが、とても簡単そうに見えます・・・
回答者:Muller3
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/14 18:27
この回答へのお礼わざわざありがとうございます!
残念ながら4.15はまだ使えない環境のため、先日お教えいただいた方法で試したところ、上手く動作しました。
おかげさまで大変助かりました。
ありがとうございます。
また何かでつまずいた時はよろしくお願いします!

回答

ANo.2 <MTEntries lastn="1">で条件に一致する最初のエントリーが表示されるのかと思っていたのですが、どうも違うみたいです(MTElseで条件に一致しないものを出してみたらわかりました)

http://www.movabletype.jp/blog/mt41_tagcloud.html
ここを参考にしてみました。解説もこちらを参照下さい。

<MTSetVar name="i" value="1">
<MTEntries lastn="10"> ←最新10件のエントリーを条件にあてはまるかチェックするという意味なので、もし最新10件が「しない」の場合、何も出ません。適宜変更下さい ※要はこれが"1"だったので「新しい記事の「closeup」が「する」になっている場合のみ表示がされ」ていたということらしいです;;)
<$MTCloseup setvar="Closeup"$>
<MTUnless name="seen{$Closeup}">
<MTIf name="closeup" eq="する">
<MTIf name="i" gt="0">
<MTSetVar name="i" op="--">
<MTSetVar name="seen" key="$Closeup" value="1">
<MTSetVarBlock name="tag_htmls" function="push"><$MTEntryTitle$><$MTEntryExcerpt$><MTEntryAssets><img src="<$MTAssetThumbnailURL$>" alt="<$MTAssetLabel$>" title="<$MTAssetLabel$>" />
</MTEntryAssets></MTSetVarBlock>
<MTLoop name="tag_htmls">
<MTVar name="__value__">
</MTLoop>
</MTIf>
</MTIf>
</MTUnless>
</MTEntries>

参考先のソースをちょっと変えてみただけですので(すみません)、もしかしたら不要な記述があったりもっと他にいい方法があるかもしれません。(MultiBlogは未検証です。これをMTMultiBlogで囲んでみてください・・・)

出力されるHTMLには<h*>などのHTMLタグを全く入れていませんので、このままだととってもプレーンな状態で出力されます。参考先の「出力される HTMl を配列変数 tag_htmls に代入」を参考にしてみてください。
回答者:Muller3
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/14 15:42
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 <MTMultiBlog include_blogs="*,*,*" mode="context">
<MTEntries lastn="1">
<MTSetVarBlock name="closeup"><$MT[カスタムフィールドで設定したベースネーム]$></MTSetVarBlock>
<MTIf name="closeup" eq="する">
<$MTEntryTitle$>
<$MTEntryExcerpt$>
<MTEntryAssets>
<img src="<$MTAssetThumbnailURL$>" alt="<$MTAssetLabel$>" title="<$MTAssetLabel$>" />
</MTEntryAssets>
</MTIf>
</MTEntries>
</MTMultiBlog>

MTSetVarBlockでカスタムフィールドで入れた値を取得し、MTIfを使って条件抽出、これをMTMultiBlogタグで囲めばできないかなと思ったのですが、検証してないのでできなかったらすみません・・・
HTMLタグなどは入れていません。

「テンプレート内で、カスタムフィールド項目を利用する」
http://www.movabletype.jp/documentation/professional/custom-fields....

蛇足ですが、モジュールにしてトップページにインクルードということになるかと思いますが、他のブログを更新したとき、トップページも再構築されないと更新情報は反映しないので、再構築トリガーを設定する必要があるかと。(ダイナミックパブリッシングだったら不要)
http://www.movabletype.jp/documentation/designer/multiblog/configur...
回答者:Muller3
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/13 14:24
この回答へのお礼詳細なご説明ありがとうございます。
お教えいただいた通りやってみたのですが、残念ながら【A】〜【C】のブログ記事で最も新しい記事の「closeup」が「する」になっている場合のみ表示がされ、逆に「しない」になっていると「クローズアップ」自体が表示されないようです。
私の説明が不十分だったのですが、仮に最新の記事が「しない」になっている場合でもトップページのクローズアップは常に表示されていて、表示される記事は現存する記事で「する」を設定している中の最も新しい記事、という形ができればと考えています。
よろしければアドバイスお願いいたします。