人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MovableTypeでカテゴリーのページを分割したくて、
「MTPaginate.pl」を導入しました。

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

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

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

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

●質問者: ohtsu6
●カテゴリ:ウェブ制作
✍キーワード:.htaccess HTML MovableType PHP アクセス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● jouno
●200ポイント

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

◎質問者からの返答

jounoさま

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

_page<$MTPaginateNextPage>.html”>next

やってみたのですが、

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

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

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

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


2 ● nanamaki77
●100ポイント

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でできるようになりました。

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

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

よろしくお願いします。


3 ● jouno
●300ポイント

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


<MTCategories>

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

</MTCategories>


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

◎質問者からの返答

jounoさま

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

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

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

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

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

先ほどのでできました。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ