MovableType.net 逆引き辞典

応用

指定した記事をページネーションの1ページ目だけに表示する

ページ送り機能のある記事一覧リストの1ページ目のみに、特定の記事を表示する実装です。
メインページ内の記事一覧に、ピックアップしたい記事がある場合に有効な方法です。
実際に、General Blogテーマのメインページの記事一覧には「ピックアップ!」としてこの方法を使用しています。

まずは記事のカスタムフィールドにチェックボックスを用意します。
拡張子はentry_pickupです。

続いて、MTタグを設定します。

使用するMTタグ

まずはmt:SetVarBlock内に、field:entry_pickup="1"mt:Entries lastn="5"の記述でentry_pickupのカスタムフィールドでチェックが入っている最新の5件の記事情報を取り出して変数として保存。
名前を pickup-entry-list とします。

続いてmt:SetVarBlock内に、entry-listモジュール(後述)を読み込ませて、名前をentry-listとして変数に保存します。

記述サンプル

メインページ記述

<mt:SetVarBlock name="pickup-entry-list">
  <mt:Entries lastn="3" field:entry_pickup="1">
    <mt:EntriesHeader>
      <p><strong>ピックアップ!</strong></p>
    </mt:EntriesHeader>
      <div>
        <h1><$mt:EntryTitle encode_html="1"$></h1>
        <p>
          <$mt:EntryDate format="%Y.%m.%d"$><br />
        </p>
      </div>
  </mt:Entries>
</mt:SetVarBlock>
<mt:SetVarBlock name="entry-list">
    <p><strong>記事一覧</strong></p>
    <div>
    <$mt:Include module="entry-list"$>
    </div>
</mt:SetVarBlock>
<mt:If name="is_first_page">
  <$mt:Var name="pickup-entry-list"$>
</mt:If>
    <$mt:Var name="entry-list"$>

新しくモジュールを作成します。モジュール名は「entry-list」です。

mt:SetVarに、1ページ目としてvalue="1"の値を保存しておきます。
名前はname="is_first_page"で指定し、メインページでの振り分けに使用します。

ページ送りのmt:PaginationHasPrevious内ではmt:SetVarvalue="0"を指定します。
それによりis_first_pageの値が、ページ送りで前のページリンクがない場合1ページ目と判断し1を、ある場合は2ページ目以降として判断し0になります。

これによって、メインページのmt:If name="is_first_page"で変数に保存しておいたpickup-entry-listのピックアップの表示を出し分けることができます。

entry-listモジュール記述

<$mt:SetVar name="is_first_page" value="1"$>
<mt:Entries unique="1" paginate_by="3">
  <div>
    <h1><$mt:EntryTitle$></h1>
    <p><$mt:EntryDate format="%Y.%m.%d"$></p>
  </div>
  <mt:EntriesFooter>
  <nav>
    <ul>
      <mt:PaginationHasPrevious>
      <li><a href="<$mt:PaginationPreviousURL$>" rel="prev">前の3件</a></li>
      <$mt:SetVar name="is_first_page" value="0"$>
      </mt:PaginationHasPrevious>
      <mt:PaginationHasNext>
      <li><a href="<$mt:PaginationNextURL$>" rel="next">次の3件</a></li>
      </mt:PaginationHasNext>
    </ul>
  </nav>
  </mt:EntriesFooter>
</mt:Entries>