Under the Bridge

a Picture of the Late Him

MT5:複数ブログのアイテムを新着順に並べるサムネイルエントリリスト

2009年11月14日 16:22 | Writer: yoshi | 記事本文 | コメント(1) | トラックバック(0)

お題

「複数のブログがある場合、投稿したエントリ中にアイテム(画像)が存在する場合はリスト化し、そのリスト中の画像には画像そのもののへのリンクではなく当該エントリへのリンクを貼る」

Movable Type 5 のベータ版で作りました。

どんな風に見える?

このブログのトップページhttp://www.apstars.com/blog/)の、サイドバー「photo」の写真リストのような感じになります。

複数ブログにまたがった場合でも新しいアイテムを順に取得できます。

コード

<!-- インクリメントカウンタの初期化 -->
<$mt:setvar name="counter" value="0"$>

<MTBlogs include_blogs="site">
   <MTEntries lastn="0">

      <MTEntryAssets type="image" lastn="1">
         <!-- カウンタのインクリメント -->
         <$mt:setvar name="counter" op="++"$>

         <!-- エントリの更新日時をEntDate変数へセット -->
         <MTSetVarBlock name="EntDate">
            <$MTEntryDate format_name="iso8601"$>
         </MTSetVarBlock>

         <!-- エントリのパーマリンクをEntryLink変数(配列)へセット -->
         <MTSetVarBlock name="EntryLink[$counter]">
            <$MTEntryPermalink$>
         </MTSetVarBlock>

        <MTSetVarBlock name="ImageCode[$counter]"><img src="<$MTAssetThumbnailURL height="70" square="1"$>" alt="on <$MTEntryTitle$>" title="on <$MTEntryTitle$>" /></MTSetVarBlock>

      </MTEntryAssets>

      <!-- hash配列構築 -->
      <MTSetHashVar name="Compare">
         <!-- Keyのセット -->
         <MTSetVarBlock name="$EntDate">
            <!-- Valueのセット -->
            <a href="<MTGetVar name="EntryLink[$counter]">"><MTGetVar name="ImageCode[$counter]"></a>
         </MTSetVarBlock>
      </MTSetHashVar>

   </MTEntries>
</MTBlogs>

<!-- インクリメントカウンタBを初期化 -->
<MTSetvar name="CountB" value="0">

<!-- counterで制御。画像が一枚以上あるとき処理を行う。 -->
<MTIf name="counter" ge="1">
   <!-- 新しい順に並べ替え、リスト生成 -->
   <ul>
   <MTLoop name="Compare" sort_by="key reverse">

      <!-- Inc変数が上限に達しない場合のみ値の取得をする。アイテム数を変更するときはここの数値を変更する -->
      <MTIf name="CountB" lt="2">

         <!-- CountB変数をインクリメントして出力した画像数を記憶 -->
         <MTSetvar name="CountB" op="++">

         <!-- 出力 -->
         <li>
            <MTGetVar name="__value__"><br />
         </li>

      </MTIf>
   </MTLoop>
   </ul>
</MTIf>

留意点

  • 実装するときは上記コードのコメントを削除し、SetvarBlockなどは一行に続け書きすることをお勧めします。(そのままでは生成されるhtmlソースにコメントが残るし、htmlソースに無駄なスペースが大量にできて見栄えが悪いです)
  • 画像数を変更するには上記コードの47行目を変更してください。(例:画像を6枚 lt="2" → lt="6")(なお、画像が少ない場合はあるだけ出ます。エラーにはなりません。)
  • imgのalt属性やtitle属性は適宜変更してください。現在はon & エントリタイトルとしています。
  • 13行目 エントリ投稿日時を秒単位で比較するために<$MTEntryDate format_name="iso8601"$>としました。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT5:複数ブログのアイテムを新着順に並べるサムネイルエントリリスト

このブログ記事に対するトラックバックURL:

コメント(1)

初心者 (2010年7月 6日 17:13)

1P内に上記の記述を2回(ブログIDが異なるもの)設置することはできますか?

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)