「MTPaginate.pl」を導入しました。
しかしこれを利用するにはPHPにするしかないようです。
これを拡張子HTMLで利用する方法ってありますでしょうか?
.htaccessのRewriteRuleでHTML化をしてアクセスしても
ほかのページにアクセスするときに
「.php?page=2」がついてしまいます。
これを何かしらの方法で変更させたいのですが。。。
何か方法や良い案がありましたらお教えください。
どうぞよろしくお願いいたします。
http://masumin.maaya.jp/blog/archives/000137.html
Sky and Heart...: MTPaginate
html?page=2の形式になってもかまわないのであれば、最初のリンクの方法でいけます。具体的には、カテゴリーページの拡張子をhtmlに戻して、.htaccessでhtmlがphpとして実行できるようにする、ということです。
category1page2.htmlのようにしたい、ということであれば、このurlでアクセスしても大丈夫というのは、mod_rewriteでできますが、おそらく、質問は、表示されるリンクがphp?page=2の形式になってしまうことだと思います。
この場合、
<$MTPaginateNavigator format_all=”全てのエントリを表示” placement_all=”after” separator=” | ” format_current=”<font size=3>%d</font>”>
をはずして、かわりに、
# MTPaginateNumPages
ページ数
# MTPaginateCurrentPage
現在のページ数
# MTPaginatePreviousPage
前のページ数
# MTPaginateNextPage
次のページ数
を利用してたとえば、
<a href=”cat_<$MTCategoryID$>_page<$MTPaginateNextPage>.html”>next</a>
みたいな感じにしてはどうでしょうか。この場合、対応してrewrite_ruleを変更しておく必要があります。
次、前、現在の三つのリンクだけではなく、すべてページへのリンクをリストする形式は、javascriptをつかえば可能ですが、javascriptを使わずに実現するにはプラグインのソースをいじる必要がありそうです。
<script type=”text/javascript”>
for (i = 0; i < <$MTPaginateNumPages>; i++) {
document.write(”<a href=¥”cat_<$MTCategoryID$>_page” + i + ”.html¥”>” + i + ”</a> | ”);
}
</script>
実際に試したわけではないのですが、やりかたとしてはこんな感じではないでしょうか。
http://www.nonplus.net/software/mt/MTPaginate.htm
MT Extensions: MTPaginate 1.26
MTPaginate.pl内のphpスクリプトでは、実際にアクセスしたファイル名を取得して次ページへのアンカーを付けます。
ohtsu6さんの環境ではmod_rewriteを使っているので、.htmlの拡張子でアクセスしても、実際に参照している.phpなファイル名で取得してしまうのでしょう。
ちょっと強引ですが、取得するファイル名から .php の拡張子を取り払って、.htmlの拡張子を加えてしまうのはどうでしょう。
どのバージョンのpluginを使っているのか分かりませんが、手元の1.24では以下のような感じの修正で再構築したらできたようです。
275行目
¥$paginate_self = basename(¥$_SERVER['PHP_SELF']) . "?¥${paginate_self}$page_selector";
↓
¥$paginate_self = basename(¥$_SERVER['PHP_SELF'],".php") . ".html?¥${paginate_self}$page_selector";
nanamaki77さま
どうもありがとうございます。
確かにhtm?page=allでできるようになりました。
トップページ等のリストの拡張子も変更することができました。
もう少し皆さまのご意見を伺いたいと思います。
よろしくお願いします。
以下のようにするといいかと思います。
<MTCategories>
<a href=cat_<$MTCategoryID$>_page<$MTPaginateNextPage>.html>next</a>
</MTCategories>
MTCategoryIDをつかうときは、MTCategoriesの内側で使わなくてはいけない、というのがコンテナの意味です。
jounoさま
恥を捨ててもうひとつだけお教えください。
上記の例でやるとカテゴリーの数分だけ
nextが表示されてしまいました。
開いているカテゴリーのページの分だけ表示させるのは
どのようにすればよろしいのでしょうか?
先ほどのでできました。
ありがとうございました。
jounoさま
どうもありがとうございます。
_page<$MTPaginateNextPage>.html”>nextを
やってみたのですが、
「コンテナ・タグの外側で使われています」
とエラーが出てしまいました。
もしよろしかったら、もう少し詳しく教えてくださいませ。
どうぞよろしくお願いします。