MovableTypeでカテゴリーのページを分割したくて、

「MTPaginate.pl」を導入しました。

しかしこれを利用するにはPHPにするしかないようです。
これを拡張子HTMLで利用する方法ってありますでしょうか?

.htaccessのRewriteRuleでHTML化をしてアクセスしても
ほかのページにアクセスするときに
「.php?page=2」がついてしまいます。
これを何かしらの方法で変更させたいのですが。。。

何か方法や良い案がありましたらお教えください。

どうぞよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:jouno No.1

回答回数280ベストアンサー獲得回数0

ポイント200pt

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>


実際に試したわけではないのですが、やりかたとしてはこんな感じではないでしょうか。

id:ohtsu6

jounoさま

どうもありがとうございます。

_page<$MTPaginateNextPage>.html”>next

やってみたのですが、

「コンテナ・タグの外側で使われています」

とエラーが出てしまいました。

もしよろしかったら、もう少し詳しく教えてくださいませ。

どうぞよろしくお願いします。

2005/06/27 20:54:19
id:nanamaki77 No.2

回答回数1ベストアンサー獲得回数0

ポイント100pt

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";

id:ohtsu6

nanamaki77さま

どうもありがとうございます。

確かにhtm?page=allでできるようになりました。

トップページ等のリストの拡張子も変更することができました。

もう少し皆さまのご意見を伺いたいと思います。

よろしくお願いします。

2005/06/27 22:43:23
id:jouno No.3

回答回数280ベストアンサー獲得回数0

ポイント300pt

以下のようにするといいかと思います。


<MTCategories>

<a href=cat_<$MTCategoryID$>_page<$MTPaginateNextPage>.html>next</a>

</MTCategories>


MTCategoryIDをつかうときは、MTCategoriesの内側で使わなくてはいけない、というのがコンテナの意味です。

id:ohtsu6

jounoさま

恥を捨ててもうひとつだけお教えください。

上記の例でやるとカテゴリーの数分だけ

nextが表示されてしまいました。

開いているカテゴリーのページの分だけ表示させるのは

どのようにすればよろしいのでしょうか?

先ほどのでできました。

ありがとうございました。

2005/06/28 22:43:40

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません