Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Blogブログ

サイドバーにアイテムリストを利用したサムネイルを表示する

前回の記事ではアイテム管理機能に伴い新たに加わったテンプレートタグについてご紹介しました。今回はそれらのテンプレートタグを利用して、実際にサイドバーに最近の写真をリストを出力するサンプルをご紹介します。あわせてアイテムリストの出力に便利なテンプレートタグをご紹介します。

photos.jpg 215px*380px

テンプレート

この例では Movable Type 4 Beta 6 時点でのデフォルトテンプレートを元にサンプルを作成します。

<MTIfNonZero tag="AssetCount">
    <MTAssets type="image" lastn="10">
        <MTAssetsHeader>
    <div class="widget-assets widget">
        <h3 class="widget-header">Photos</h3>
        <div class="widget-content">
            <ul class="widget-list"></MTAssetsHeader>
                <li class="item"><a class="asset-image" href="<$MTAssetURL$>"><img src="<$MTAssetThumbnailURL height="70"$>" class="asset-img-thumb" alt="<$MTAssetLabel$>" title="<$MTAssetLabel$>" /></a></li>
            <MTAssetsFooter></ul>
        </div>
    </div>
        </MTAssetsFooter>
    </MTAssets>
</MTIfNonZero>

テンプレート内の各項目の詳細は以下のようになります。

<MTIfNonZero tag="AssetCount"></MTIfNonZero>
アイテムがまだ無い場合は囲んだ内容を表示しないようにします
<MTAssets type="image" lastn="10"></MTAssets>
Movable Type で管理されているアイテムを表示します。アトリビュート属性で種類を画像に、数を最新10件とするように設定しています
<MTAssetsHeader></MTAssetsHeader>
アイテムリストの最初に表示する項目を囲みます
<a class="asset-image" href="<$MTAssetURL$>" title="<$MTAssetLabel$>"> <img src="<$MTAssetThumbnailURL height="70"$>" class="asset-img-thumb" alt="<$MTAssetLabel$>" title="<$MTAssetLabel$>" /> </a>
オリジナルファイルへのリンクとサムネイル画像を表示する為の img 要素を出力します。サムネイル画像は 70px 辺の正方形で表示させたいので、CSS で見た目を調整しやすいように <$MTAssetThumbnailURL$> ファンクションタグに height アトリビュート属性を設定し、高さのみを決め打ちしておきます
<MTAssetsFooter></MTAssetsFooter>
アイテムリストの最後に表示する項目を囲みます

CSS

div.widget-assets div.widget-content ul.widget-list {
  overflow: auto;
  margin-right: 0;
}

li.item {
  display: table-cell;
  float: left;
  margin: 0pt 5px 8px;
  overflow: hidden;
  width: 70px;
}

CSS はリストの各項目の横幅を設定した画像の高さと同じ 70px にし、横方法に画像がはみだした場合は、はみ出した部分を非表示にするという方法をとっています。サムネイルは幅の決まったブロックの中で float プロパティを利用し通常の流れから外し左に寄せることで、一列に2個ずつ表示するようにしています。

Windows IE 6 には『float した方向と同じ方向に margin を設定すると指定値の倍の値が反映される』というバグがあります。float した要素は無条件に display: block; となり、それ以外の指定を無視しますが、display プロパティに inline 値を設定すると『margin の反映値が倍になるバグ』を回避できる為、display: inline; を設定しています。

  • このエントリーをはてなブックマークに追加