Perl版ダイナミックパブリッシングとMTPaginateのブログ記事ページ分割を併用する

昨日、以下のようなご質問をいただきました。

DivPagesプラグインをブログで有効にするとMTPaginate(こちらはエントリーページの分割で使用しています)プラグインと併用できなくて困っています。

そこで、Perl版ダイナミックパブリッシングを使っている環境で、MTPaginateプラグインでブログ記事のページを分割する方法を紹介します。

ページ番号を横一列に出力する場合

MTPaginateプラグインでは、各ページへのナビゲーションを、「MTPaginateNavigator」というテンプレートタグで出力しています。
しかし、Perl版ダイナミックパブリッシングこのタグを使うと、このタグの出力が正しくなくなります。
そこで、MTPaginateNavigatorタグの代わりに、MTのテンプレートタグとPHPを組み合わせてナビゲーションを出力します。

ページ番号を横一列に出力する場合は、MTPaginateNavigatorタグを、以下のようなコードに置き換えます。

<$mt:PaginateNumPages setvar="page_count"$>
<mt:For var="page_number" from="1" to="$page_count">
  <?php if ($paginate_current_page == <$mt:GetVar name="page_number"$>) : ?>
    <$mt:GetVar name="page_number"$>
  <?php else : ?>
  <mt:If name="page_number" eq="1">
    <a href="<$mt:EntryPermalink$>"><$mt:GetVar name="page_number"$></a>
  <mt:Else>
    <a href="<$mt:EntryPermalink$>?page=<$mt:GetVar name="page_number"$>"><$mt:GetVar name="page_number"$></a>
  </mt:If>
  <?php endif; ?>
  <mt:If name="page_number" ne="$page_count">|</mt:If>
</mt:For>

selectでナビゲーションを出力する場合

MTPaginateNavigatorタグに「style="popup"」のモディファイアを指定すると、ナビゲーションをselectで出力することもできます。
これと同等のことを行うには、MTPaginateNavigatorタグを以下のようなコードに置き換えます。

<$mt:PaginateNumPages setvar="page_count"$>
<select onchange="location.href=options[selectedIndex].value">
<mt:For var="page_number" from="1" to="$page_count">
  <option value="<$mt:EntryPermalink$><mt:If name="page_number" ne="1">?page=<$mt:GetVar name="page_number"$></mt:If>"<?php if ($paginate_current_page == <$mt:GetVar name="page_number"$>) { echo ' selected="selected"'; } ?>><$mt:GetVar name="page_number"$></option>
</mt:For>
</select>