Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法

Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法

Posted at June 23,2021 11:55 PM
Tag:[MovableType, PageBute]

Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法を紹介します。

1.はじめに

Movable Type 7のコンテンツデータ(個別ページ)をページ分割する方法です。

ページ分割にはPageButeプラグインを利用します。

テンプレート種別でいうところの、「コンテンツタイプリストアーカイブ」をページ分割するのは情報があるようですが、「コンテンツタイプアーカイブ」をページ分割する情報がないようなので、本記事で紹介します。

なお、分割するにあたっては下記の条件となります。

  • 分割対象はコンテンツタイプ内の特定のコンテンツフィールド(テキスト(複数行))のみ

分割する方法は2つあるので、順番に説明します。

サンプルでは、分割するコンテンツフィールドの名前を「本文」としています。

2.コンテンツデータ(コンテンツタイプアーカイブ)をページ分割する(その1:コメント挿入)

まず、コンテンツタイプアーカイブテンプレートを次のように設定します。

前半の5行がコンテンツフィールドのページ分割、残りの部分はごちゃごちゃしてますがページネーションのためのテンプレート(Pagebuteの公式サイトから引用)です。

<mt:PageContents count="1">
  <mt:ContentField content_field="本文">
    <mt:ContentFieldValue><$mt:PageSeparator$>
  </mt:ContentField>
</mt:PageContents>
 
<mt:Pagination>
  <mt:PaginationHeader>
<div class="pagenate"><ul>
    <mt:IfPaginationFirst><li><a class="link_before" href="<$mt:PaginationFirst$>">&lt;&lt;</a></li></mt:IfPaginationFirst>
        <mt:IfPaginationPrev><li><a class="link_before" href="<$mt:PaginationPrev$>">&lt;</a></li></mt:IfPaginationPrev>
  </mt:PaginationHeader>
  <mt:IfPaginationCurrent>
    <mt:ignore>現在のページ</mt:ignore>
  <li><span><mt:PaginationLink element="number"></span></li>
  <mt:Else>
    <mt:ignore>それ以外(遷移用のリンクあり)</mt:ignore>
    <li><a href="<$mt:PaginationLink$>"><$mt:PaginationLink element="number"$></a></li>
  </mt:IfPaginationCurrent>
  <mt:PaginationFooter>
    <mt:IfPaginationNext><li><a class="link_next" href="<$mt:PaginationNext$>">&gt;</a></li></mt:IfPaginationNext>
    <mt:IfPaginationLast><li><a class="link_next" href="<$mt:PaginationLast$>">&gt;&gt;</a></li></mt:IfPaginationLast>
</ul></div>
  </mt:PaginationFooter>
</mt:Pagination>

そして、コンテンツデータ作成時、コンテンツフィールド「本文」に対し、ページ分割したい箇所に

<!-- Separator for PageBute -->

を挿入します。

たとえば以下のように挿入します。

本文(1ページ目)
 :
本文(1ページ目)
 
<!-- Separator for PageBute -->
 
本文(2ページ目)
 :
本文(2ページ目)
 
<!-- Separator for PageBute -->
 
本文(3ページ目)
 :
本文(3ページ目)

3.コンテンツデータ(コンテンツタイプアーカイブ)をページ分割する(その2:mtevalモディファイアを利用)

まず、コンテンツタイプアーカイブテンプレートを次のように設定します。

<mt:PageContents count="1">
  <mt:ContentField content_field="本文">
    <mt:ContentFieldValue mteval="1"><$mt:PageSeparator$>
  </mt:ContentField>
</mt:PageContents>
  
<mt:Pagination>
  <mt:PaginationHeader>
<div class="pagenate"><ul>
    <mt:IfPaginationFirst><li><a class="link_before" href="<$mt:PaginationFirst$>">&lt;&lt;</a></li></mt:IfPaginationFirst>
    <mt:IfPaginationPrev><li><a class="link_before" href="<$mt:PaginationPrev$>">&lt;</a></li></mt:IfPaginationPrev>
  </mt:PaginationHeader>
  <mt:IfPaginationCurrent>
    <mt:ignore>現在のページ</mt:ignore>
    <li><span><mt:PaginationLink element="number"></span></li>
  <mt:Else>
    <mt:ignore>それ以外(遷移用のリンクあり)</mt:ignore>
  <li><a href="<$mt:PaginationLink$>"><$mt:PaginationLink element="number"$></a></li>
  </mt:IfPaginationCurrent>
  <mt:PaginationFooter>
    <mt:IfPaginationNext><li><a class="link_next" href="<$mt:PaginationNext$>">&gt;</a></li></mt:IfPaginationNext>
    <mt:IfPaginationLast><li><a class="link_next" href="<$mt:PaginationLast$>">&gt;&gt;</a></li></mt:IfPaginationLast>
</ul></div>
  </mt:PaginationFooter>
</mt:Pagination>

そして、コンテンツデータ作成時、コンテンツフィールド「本文」に対し、ページ分割したい箇所に

<$mt:PageSeparator$>

を挿入します。

たとえば以下のように挿入します。

本文(1ページ目)
 :
本文(1ページ目)
 
<$mt:PageSeparator$>
 
本文(2ページ目)
 :
本文(2ページ目)
 
<$mt:PageSeparator$>
 
本文(3ページ目)
 :
本文(3ページ目)

3.その他のコンテンツフィールドについて

ページ分割対象でないコンテンツフィールドは、MTPageContentsタグの外に書くか、中に書くかで表示方法が変わります。

  1. MTPageContentsタグの中に書く:1ページ目のみに表示
  2. MTPageContentsタグの外に書く:すべてのページに表示

1.の書き方の例は下記です。

<mt:PageContents count="1">
商品名:<mt:ContentField content_field="商品名"><mt:ContentFieldValue></mt:ContentField>
価格:<mt:ContentField content_field="価格"><mt:ContentFieldValue></mt:ContentField>
  <mt:ContentField content_field="本文">
    <mt:ContentFieldValue mteval="1"><$mt:PageSeparator$>
  </mt:ContentField>
</mt:PageContents>
 :

2.の書き方の例は下記です。

商品名:<mt:ContentField content_field="商品名"><mt:ContentFieldValue></mt:ContentField>
価格:<mt:ContentField content_field="価格"><mt:ContentFieldValue></mt:ContentField>
<mt:PageContents count="1">
  <mt:ContentField content_field="本文">
    <mt:ContentFieldValue mteval="1"><$mt:PageSeparator$>
  </mt:ContentField>
</mt:PageContents>
 :
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)