お知らせ

ブログ簡単パワーアップ FC2ブログスーパーカスタマイズテクニック2008年1月11日

拙著新刊の「ブログ簡単パワーアップ FC2ブログスーパーカスタマイズテクニック」が発売されました。
FC2ブログのさまざまなカスタマイズ方法を解説しています。
FC2ブログユーザーの皆様はぜひお買い求めください。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

ページ分割プラグイン(Perl版ダイナミック・パブリッシング専用)・その1

| コメント(63) | トラックバック(8)

先日、Perlでダイナミック・パブリッシングを行う方法を紹介しましたが、それ用のページ分割プラグインを作りましたので公開します。
エントリーを一定の件数ずつ表示し、前後のページへ移動できるようにするものです。

導入の手順は以下の通りです。

1.プラグインのダウンロードとインストール

まず、以下のリンクをクリックしてプラグインのページを開き、その内容をすべてコピーしてメモ帳等に貼り付け、「DivPages.pl」というファイル名で保存します。

プラグインのダウンロード

そして、そのファイルをMovable Typeの「plugins」ディレクトリにアップロードします。

2.MTDivPagesInitタグの追加

ページ分割を行いたいテンプレートで、その先頭に<$MTDivPagesInit per_page="n"$>のタグを追加します。
「per_page="n"」の部分で、1ページあたりに表示するエントリーの数を指定します。例えば、1ページあたり5件のエントリーを表示するには、「per_page="5"」にします。
なお、「per_page="n"」を省略すると、1ページあたり10件ずつエントリーを出力します。

3.MTEntriesタグの書き換え

テンプレートの中で、エントリーの一覧を出力する部分を探します。
そして、その先頭の「<MTEntries ・・・>」のタグを「<MTEntriesDivPages ・・・>」に書き換えます。
また、最後の「</MTEntries>」を「</MTEntriesDivPages>」に書き換えます。

4.ページ移動リンクを作る

最後に、ページを移動するためのリンクを作ります。エントリー一覧の直後あたりに入れると良いでしょう。
例えば、以下のようなタグを入れると、先頭/最後/前/次ページへのリンクと、ページ番号で移動先を選ぶリストボックスが表示されます。

<MTDivPagesIfMulti>
<form id="page_sel" name="page_sel" action="get">
<div>
<MTDivPagesIfPrevPage><a href="<$MTDivPagesFirstPageLink$>">先頭ページ</a>|<a href="<$MTDivPagesPrevPageLink$>">前のページ</a>|</MTDivPagesIfPrevPage>
<select name="page_num" onchange="location.href='<$MTDivPagesCurPageLink mode="relative"$>?page=' + document.page_sel.page_num.value;">
<MTDivPagesLoop all="1">
  <option value="<$MTDivPagesNumber$>"<MTDivPagesIfCurPage> selected="selected"</MTDivPagesIfCurPage>><$MTDivPagesNumber$></option>
</MTDivPagesLoop>
</select>ページ/<$MTDivPagesCount$>ページ
<MTDivPagesIfNextPage>|<a href="<$MTDivPagesNextPageLink$>">次のページ</a>|<a href="<$MTDivPagesLastPageLink$>">最終ページ</a></MTDivPagesIfNextPage>
</div>
</form>
</MTDivPagesIfMulti>

なお、このプラグインで追加されるタグについては、次回以降のエントリーで解説します。

トラックバック(8件)

このブログ記事を参照しているブログ一覧: ページ分割プラグイン(Perl版ダイナミック・パブリッシング専用)・その1

このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/212.

» dynamic(MovableType(MT) Wiki | MTまとめサイト? | (PukiWiki/TrackBack 0.3))からのトラックバック

MT-Wiki ダイナミックパブリッシングについて † ↑Perl版ダイナミックパブリッシング † 再構築不要... 続きを読む

» ページ分割してみる♪(++Blog-MELL++)からのトラックバック

昨日は 一日 サイトが表示されない事態に なっておりました Perl版 ダイナミ... 続きを読む

» Movable Type エラー奮闘4 -Perl版ページ分割プラグインでエラー-(アフィリエイト・ライフ)からのトラックバック

「Movable Type」のカスタマイズ設置中でミスをしてしまいエラーが出るようになった。 (その経緯はこちらに) その後MYSQL、MTなどを... 続きを読む

» ページ分割プラグイン「DivPages」(MOVABLETYPEでスキップ)からのトラックバック

「The blog of H.Fujimoto」様でリリースされている、ページ... 続きを読む

» Movable Typeでダイナミック・パブリッシング(サラリーマン白書)からのトラックバック

はじめにでも少し述べましたが、当ブログではサイトマップ以外のページはダイナミック・バブリッシング(動的生成)によりページを表示させております。このダイナミ... 続きを読む

» ページ分割プラグイン「DivePages」を上下二箇所につける(MOVABLETYPEでスキップ)からのトラックバック

先に紹介させていただいた、ページ分割プラグイン「DivePagea]ですが、ト... 続きを読む

» ダイナミックパブリッシング版ページナビをつけた(Glassleaf)からのトラックバック

まだエントリーが全然無いので必要性は無いけどアーカイブページに改ページのコード... 続きを読む

» ページ分割プラグインの導入など(All My Life)からのトラックバック

先月はサーバー移転やBlogのカスタマイズを若干行ったので… 御参考迄にメモを残... 続きを読む

コメント(スレッド16件,コメント63件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 ぽぽ : (無題)

便利な機能がたくさん掲載されていて、とても助かっています。
Perl版ダイナミックパブリッシングは、どうにかクリアできました。

その後、ページ分割に挑戦したのですが、上記「4.ページ移動リンクを作る」のタグを記述すると、再構築する途中でエラーになってしまいます。

ちなみに、selectタグ部分を記述しなければ、エラーにはなりません。ただし、その場合でも「次ページ」のリンクが、本来は「http://www.aaa.jp/blog/?page=2」になるはずなのに、「http://www.aaa.jp/?page=2」となってしまいます。

解決方法がわかるととても助かります。よろしくお願いします。

No.2  : (無題)

>ぽぽさん
こんにちは。

エラーが出たとのことですが、具体的にどのようなエラーメッセージが表示されたでしょうか。
また、実際に運用されているサイトもお見せいただければと思います。

No.3 ぽぽ : (無題)

お返事ありがとうございます!
エラーメッセージは次のとおりです。

テンプレート「メインページ」の再構築に失敗しました: タグでエラーが発生しました:

運用しているサイトは、メールに書いたとおりです。
どうぞよろしくお願いします。

No.4 ぽぽ : (無題)

すいません。タグ部分が消えてしまいました。
もう一度、エラーメッセージを書きますね。

テンプレート「メインページ」の再構築に失敗しました: <MTDivPagesIfMulti>タグでエラーが発生しました:

よろしくお願いします。

No.5  : (無題)

>ぽぽさん
いただいたエラーメッセージだけでは、原因はちょっと分かりません。
原因を究明するには、そちらのサーバーで実際にデバッグしてみることが必要な感じです。

No.6 ぽぽ : (無題)

>壱さん
そうですか…。
サーバーでデバッグするところまでお願いするのは申し訳ないので、もう一度、自分で挑戦してみます。
色々とありがとうございました!

No.7 Roppon : (無題)

Perl版ダイナミック・パブリッシング(正常動作)→ページ分割設定後、アーカイブページにアクセスするといかのエラーが吐き出されてしまいます。どこにミスがありそうなのか検討がつかないのでアドバイスいただければ幸いです。


---------------
Smarty error: [in mt:15 line 1]: syntax error: unrecognized tag 'MTDivPagesInit' (Smarty_Compiler.class.php, line 580)

No.8  Author Profile Page: (無題)

>Ropponさん
こんにちは。

そのエラーは、Perl版ダイナミックパブリッシングではなく、MT標準のダイナミックパブリッシングが出力しているものです。
つまり、Perl版ダイナミックパブリッシングが動作していません。
おそらく、.htaccessファイルの修正を忘れていると思いますので、そこを見直してみてください。

No.9 Roppon : (無題)

>>壱さん
ご指摘のとおりでした。
時間はかかりましたが、無事導入できとてもうれしいです。
ありがとうございました

No.10 maechan : (無題)

はじめまして。
「MovableTypeスーパーカスタマイズテクニック」を購入し、
そしてこのサイトを知るようになり、
自身のブログをダイナミックパブリッシング化し、
こちらのプラグインを導入してページ分割をしています。
非常に素晴らしいツールで大変重宝しております。
ありがとうございます。

質問をさせていただきたいのですが、
カテゴリーアーカイブをページ分割しているのですが、
1ページ目はちゃんと5つの記事が表示されるのですが、
2ページ目以降は1つの記事しか表示されません。

原因がまったくわからないのですが、
ご教授いただけますでしょうか。
よろしくお願いします。

現在はMT3.3を使っています。

No.11  Author Profile Page: (無題)

>maechanさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、MT3.3自体の不具合です。
昨日リリースされたMT3.31では、この不具合が修正されていますので、MT3.31にバージョンアップしてください。

No.12 MELL Author Profile Page: (無題)

懲りずにこれもやってみたのですが

リビルドエラーとなってしまいます

何とか導入できないのかなぁ・・・

No.13 MELL Author Profile Page: (無題)

何とか自己解決し出来上がりました

ちょっとシンプルにしちゃいましたけど

もうちょっと理解出来たら ましになるかな?w

No.14 あやね : (無題)

こんにちは。ダイナミックパブリッシングと共に、こちらのプラグインを便利に使わせていただいています。どうもありがとうございます。

さて、下記サイトを参考に年別アーカイブを作成したのですが、そのページ(例:2006年アーカイブ)ではページ分割ができないのでお問い合わせです。

MovableType備忘録: MovableTypeに年別アーカイブを追加する
http://bizcaz.com/archives/2006/06/24-200811.php

ページの内容はちゃんとその年のエントリーが全部表示されていますが、ページ分割がされていない状態です。年別なので当然エントリー数も多く、出来ればページ分割させたいのですが・・・プラグインそのものの修正が必要でしょうか?

ちなみに、通常の月別アーカイブやカテゴリーアーカイブでは、ページ分割は機能しています。それではよろしくお願いいたします。

No.15  Author Profile Page: (無題)

>あやねさん
こんにちは。

当方のDivPagesプラグインは、通常のMTEntriesタグの処理が行われることを前提に作ってあります。
年別アーカイブのプラグインとの組み合わせは、申し訳ありませんが対象外とさせてください。

No.16 あやね : (無題)

>壱さん
対象外とのこと、了解いたしました。残念ですが仕方ないですね。年別アーカイブを作る機能はMT固有のものではありませんし。

素早い回答ありがとうございました。今後ともよろしくお願いいたします。

No.17 footbrain : (無題)

とすると、を使用して、
「親カテゴリーアーカイブにサブカテゴリーのエントリーを表示する」も対象外ですか?

親カテゴリーにサブカテゴリーを表示すれば、表示するエントリーの数も多くなり、
当然、ページ分割を迫られる事になるのですが…

Perl版ダイナミックパブリッシングを用いたままで、
カテゴリーの分類を見直そうとしているところなのですが、
対策を考えなければいけませんね。

No.18 footbrain : (無題)

ごめんなさい。またやってしまいました。

「とすると、を使用して、」の部分ですが、
<MTEntriesWithSubCategories>が抜けています。
「とすると、<MTEntriesWithSubCategories>を使用して、」です。

No.19  Author Profile Page: (無題)

>footbrainさん
こんにちは。

このプラグインでは、申し訳ありませんが、MTEntriesWithSubCategoriesタグの部分を分割することはできません。

No.20 うに : (無題)

こんばんわ。
Perl版ダイナミックパブリッシング導入させて頂きました。

Perl版ダイナミックパブリッシング、ページ分割共に問題なく導入できたんですが、「ページ番号で移動先を選ぶリストボックス」が横長になってしまい、バランスが悪いんです。

リストボックスの大きさを調整する事はできないんでしょうか?

宜しくお願い致します。

No.21  Author Profile Page: (無題)

>うにさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、スタイルシートで調整できます。
まず、ページ選択のリストボックスのselectタグに、「id="page_num"」を追加してください。
そして、スタイルシートに以下を追加してください。

select#page_num {
width : auto;
}

No.22 うに : (無題)

壱さん
返信ありがとうございます。
お蔭様で綺麗に整頓できました^^

そして今更なんですが、「ページ番号で移動先を選ぶリストボックス」というのはリストボックスからページ番号を選ぶ事によって選んだ番号のページへ飛ぶっていう事ですよね?

・・・飛ばないんです・・・

左下にスクリプトエラーが表示され、詳細を見てみると
「エラー'document.page_sel.page_num.value'は Null またはオブジェクトではありません」
というMsgが表示されています。

タグの記載に問題があるんでしょうか?
度々申し訳ございませんが宜しくお願い致します。
(_ _(--;(_ _(--; ペコペコ

No.23  Author Profile Page: (無題)

>うにさん
こんにちは。

サンプルのselectタグの記述に間違いがありました。
以下のように変えてください。

<select name="page_num" id="page_num" onchange="location.href='<$MTDivPagesCurPageLink mode="relative"$>?page=' + document.page_sel.page_num.value;">

No.24 うに : (無題)

>壱さん
早速のご返事ありがとうございます。

タグを
?page=' + document.page_sel.page_num.value;">
に書き換え、再構築をしてサイトを確認しましたがスクリプトエラーが表示され、変わりはありません。。。

No.25 うに : (無題)

あら?
うまく書き込めない・・・

No.26  Author Profile Page: (無題)

>うにさん
こんにちは。

ページ選択のフォームが2箇所あって、フォームのIDが重複しているので、JavaScriptがエラーになっています。
まず、2つ目のformタグを以下のように書き換えてください。

<form id="page_sel2" name="page_sel2" action="get">

また、そのフォームの中にあるselectタグで、onchangeの部分にある「page_sel」を「page_sel2」に変えてください。

No.27 うに : (無題)

>壱さん
ありがとうございます。
お蔭様でうまくいきました^^

5つのエントリーでページ分割してるんですが、それでも結構な長さになってしまう為ページ上下にページ選択を付けてました^^
ちゃんと説明するべきでした。

メインページで別のスクリプトエラーが出てますが、これはページ分割、ダイナミックパブリッシングとは別物ですね^^

お世話になりました~^^/

No.28 でぐ : (無題)

こんにちは、ダイナミックパブリッシングPerlともども便利に使わせていただいております。

早速質問なんですが、MTEntriesDivPagesのsort_byの仕様はどのようになっていますでしょうか?
現在構築中のページにおいて、titleでソートした場合、そのページ内のエントリーは確かにtitle順に並んでいるのですが、全ページ通してきちんとソートはされてはいないように見えます。
つまり…

1ページ目
・あ・か・さ・た・な
2ページ目
・い・き・し・ち・に

というように並んでしまうのです。
(もちろん、上記の例のようにエントリーがきれいに入れ違いに並んでいる訳ではありません)

他のコンテンツにおいてはexcerptにフリガナをいれてソートをしているのですが、そちらは全ページに渡って正常にソートがされていたりします。

ちなみに最初のケースでは通常のMTEntryにした場合は問題なくソートされて表示されます。

もし原因がわかればご教授いただければと思います。
以上、よろしくお願いいたします。

No.29  Author Profile Page: (無題)

>でぐさん
こんにちは。プラグインご利用ありがとうございます。

このプラグインでは、内部的には、MTEntriesタグのoffsetとlastnのアトリビュートを動的に変化させて、エントリーを出力しています。
MTEntriesタグでoffset/lastnとsort_orderやsort_byを併用すると、まずoffset/lastnで出力するエントリーが絞り込まれて、その後にsort_orderやsort_byが適用される仕様になっています。
そのため、ご指摘のように、「各ページでの順序は正しいが、全ページで見ると順序が正しくない」という動作になってしまいます。
申し訳ありませんが、この点は仕様ということにさせてください。

No.30 でぐ : (無題)

>壱さん
迅速なるご回答、ありがとうございました。

なるほど、よく見るとご指摘いただいた通り、投稿日が新しいものから一定件数を取り出してソートされているようです。

ただ一点腑に落ちないのが、先ほど記入したコメントにもある通り、他のコンテンツにおいては思った通りの動作をしているという事です。

こちらはカテゴリごとのエントリー一覧でのソートということでアーカイブテンプレートにて行っているのですが、うまくいかない今回の場合はインデックステンプレートにて行っています。
違いはその点(とソート項目)しか見受けられないのですが、テンプレートの種類によりこのような動作の違いが起こりうるものなのでしょうか。

No.31  Author Profile Page: (無題)

>でぐさん
こんにちは。

繰り返しになりますが、このプラグインは内部的にはMTEntriesタグの処理を呼び出しているだけで、並べ替えの処理はまったく行っていません。
したがって、起こっている結果は、MTEntriesタグの動作によるものです。プラグイン側では、残念ながら対処することができません。

No.32 やま : (無題)

はじめまして!
昨日、movable type をインストールしたばかりの超初心者で、初歩的なことから試行錯誤しています。
ページ分割は必要なので、このプラグインは是非、使わせていただきたいと思います。(感謝)

気がついた点があるので、報告します。
XREAのサーバで、MT は public_html/mt/mt.cgi におき、
ブログは public_html/www.mydomain.com/blog/ フォルダで運用しようとしています。

で、紹介されているサンプル(水色の枠)をみると

 (先頭ページ)
 (select)
とありますが、先頭ページではドメインのURLが返ってこなくて、HTTP404になります。
($ENV{SERVER_NAME} の値では、ブログのURLが取得できず、mt.cgiを置いているURLが返ってくるのが原因だと思います)

先頭ページのタグにも mode="relative" を追加してやればうまくいくので、報告します。

No.34  Author Profile Page: (無題)

>やまさん
こんにちは。

不具合ご指摘ありがとうございました。
該当の行を以下のように修正すれば良いはずです。

誤:
return 'http://' . $ENV{SERVER_NAME} . $uri;
正:
return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;

No.37 やま : (無題)

>壱さん

return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;
紹介していただいた方法でうまくいきました。ありがとうございました。

No.38 rea : (無題)

初めまして。
私もブログのURLが取得できていないようなのですが、

>該当の行を以下のように修正すれば良いはずです。

>誤:
>return 'http://' . $ENV{SERVER_NAME} . $uri;
>正:
>return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;

というのはどのファイルを修正すれば良いのでしょうか?
自分なりに探してみたのですが見つかりませんでした。

No.39 rea : (無題)

自己解決しました。
DivPages.plの317行目に記述があったので、修正しました。
問題なく取得出来るようになったみたいです。

No.33 Tatsuya : (無題)

ダイナミック・パブリッシングは成功したいのですが、ページ分割の月別・アーカイブを分割しようとするとどうも上手く機能していないらしく、全件表示されてしまいます。ちなみにカテゴリアーカイブはきちんと分割されています。

No.35  Author Profile Page: (無題)

>Tatsuyaさん
こんにちは。
以下の点を確認してください。

1.月別アーカイブテンプレートの先頭に、MTDivPagesInitタグを入れていること
2.エントリー一覧を出力する部分で、MTEntriesタグをMTEntriesDivPagesタグに変えていること

No.36 Tatsuya : (無題)

おはようございます。
月別アーカイブのページ分割についてですが、どうやら日別アーカイブのリンクを見ていたらしく、それで上手く機能していないなかったみたいです。

No.40 ひで : (無題)

管理人様ご苦労様です。
プラグインを使用させていただきました。ありがとうございます。
3つの異なるレンタルサーバー環境で使用したのですが、1つのレンタルサーバーでの動作がうまくいきません。
問題点は
1.ほかのページにジャンプしても、1ページ目と同じ内容しか表示できなく、ページの移動ができません。
2.リストボックスではジヤンプ先のURLに「www」が付いているのですが、先頭/最後/前/次ページのリンクには「www」が抜けていてページが表示されません。レンタルサーバーの環境によってはwwwが抜けていてもちゃんと表示されるのですが、問題のあるレンタルサーバーでは表示されないようです。

1の問題について思うのですが、レンタルサーバー側に何かインストールされていないプログラムがあるのではないかと考えているのですが、その可能性はあるでしょうか?
余談ですが、レンタルサーバー会社にMovableTybeがインストールができなかったので問い合わせたのですが、第3者の関連なのでそちらに聞いてほしいと言われました。しかしながら問題はDBIがインストールされていなく、それをインストールしてもらったところインストールができました。そんなことがあったのでレンタルサーバーが怪しいと思っているのです。

ご迷惑をおかけいたしますがご意見をいただきたく思います。
どうぞよろしくお願いいたします。

No.41  Author Profile Page: (無題)

>ひでさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、DivPagesプラグインの以下の箇所を書き換えて、動作を試してみてください。

1.78行目~79行目
書き換え前:
my $query = new CGI;
my $cur_page_no = $query->param('page');

書き換え後:
my $app = MT->instance;
my $cur_page_no = $app->{query}->param('page');

2.317行目
書き換え前:
return 'http://' . $ENV{SERVER_NAME} . $uri;

書き換え後:
return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;

No.42 ひで : (無題)

管理人様お世話様です。
早速ご回答いただきましてありがとうございます。
DNSを変更しましたら
ダイナミック・パブリッシングエラー
キャッシュファイルのコピーに失敗しました
とのことでPerl版ダイナミック・パブリッシングがちゃんと動かなくなってしいました。
すみません。困りました。

No.43  Author Profile Page: (無題)

>ひでさん
こんにちは。

まず、Perl版ダイナミック・パブリッシングのキャッシュをクリアしてください。
また、DNSを変えたということですが、ドメイン名も変わったのであれば、Blog全体を再構築してください。

それから、DivPagesプラグインの書き換えでページ移動がうまくできるようになったかどうかも、ぜひお知らせください。

No.44 ひで : (無題)

管理人様お手数をおかけいたします。ひでです。

ダイナミック・パブリッシングは今日になったらちゃんと動くようになっていました。
すみません。

結果ですがwwwは表示されるようになりましたが、やはりページ移動ができないようです。

No.45  Author Profile Page: (無題)

>ひでさん
こんにちは。

ページ移動がうまくいかない件は、これ以上はこちらでは原因は分かりません。
そちらの環境でデバッグする必要があります。

No.46 irori : (無題)

壱様
こんばんは、Perl版ダイナミックパブリッシングではお世話になりました。
こちらのプラグインも便利に使わせていただいています。
ですが、問題がでてきました。
ブログをひとつ増やし、二個目のブログでもDivePagesを使おうとタグを設置したのですが、まったく機能してくれません。
こちらのプラグインは、ひとつのブログにしか使えないものあのでしょうか?

No.47 irori : (無題)

書き忘れました。
二つ目のブログにタグを追加し、表示されたリンクをクリックすると以下のエラーメッセージがでてきます。

404 Not Found
The requested URL /mt-dynamic.php was not found on this server.

二個目のブログフォルダの中にはmt-dynamic.phpが存在しており、Prel版ダイナミックパブリッシングは成功しています。

よろしくご教授お願いいたします。

No.48  Author Profile Page: (無題)

>iroriさん
こんにちは。

申し訳ありませんが、そちらのサーバーにログインして動作を追って見ないと、解決できないと思います。

No.49 irori : (無題)

壱様
こんばんは、iroriです。
難しい状態のようですね。一つでも機能しているので満足です。ありがとうございました。

No.50 tattsun : (無題)

ひで 様、壱 様

>>> 1.ほかのページにジャンプしても、1ページ目と同じ内容しか表示できなく、ページの移動ができません。
>> 1.78行目~79行目
>> 書き換え前:
>> my $query = new CGI;
>> my $cur_page_no = $query->param('page');
>>
>> 書き換え後:
>> my $app = MT->instance;
>> my $cur_page_no = $app->{query}->param('page');
>結果ですがwwwは表示されるようになりましたが、やはりページ移動ができないようです。

ページジャンプをしても、1 ページ目と同様の内容が表示される件ですが、Apache の httpd.conf にある下記の部分がコメントアウトされ機能していないのではないでしょうか?
コメント外し Apache の再起動を行ったらどうでしょうか?

#LoadModule rewrite_module modules/mod_rewrite.so
   ↓↓↓
LoadModule rewrite_module modules/mod_rewrite.so

(レンタルサーバーだとちょっと上記対応は無理そうですね。)

# 見当はずれの答えでしたら申し訳ありませんm(_=_)m

No.51  Author Profile Page: (無題)

>tattsunさん
こんにちは。

Perl版ダイナミック・パブリッシング(およびページ分割)は、mod_rewriteが使えない場合は、404エラー時にエラーページにリダイレクトする機能を利用して動作するようになっています。
したがって、mod_rewriteが使えないことは、ページ移動ができないことの原因ではないはずです。

No.52 tattsun : (無題)

壱 様

確かに、.htaccess にて 404 エラーページにリダイレクトするようになっていました。
私の自宅サーバー環境では同様の現象が mod_rewrite を使用できるようにして解決したので正解かと思ってしまいました。汗

余計な情報をコメントしてしまい誠に申し訳ありませんでした。

No.53 スクラン : (無題)

初めまして。Perl版ダイナミック大事に使わせてもらっています。

さて僕のページでも分割しているので、このPerl版にあった分割を使わせてもらっているのですが、出力するファイルを静的化できないでしょうか?

たとえばトップページの分割URLをhttp://www.h-fj.com/index2.html、http://www.h-fj.com/index3.htmlのようにできないでしょうか?

たいへん厚かましいお願いなのですがぜひ対処方法を教えていただければ幸いです。よろしくお願いいたします

No.54  Author Profile Page: (無題)

>スクランさん
こんにちは。プラグインご利用ありがとうございます。

申し訳ありませんが、このプラグインではページを静的なファイルに出力する機能はありません。

No.55 へま : (無題)

壱様、いつもお世話になっております。

これまで問題なく、ページ分割を利用させていただいておりましたが、この度、サーバーのディレクトリ構成をいじったりした後から、どうも、ページ繰りがおかしくなってしまいました。ページ繰り部分は、こちらのサイトのものをそのまま利用させていただいています。

ブラウザのURLを見てみると、「前のページ」「次のページ」のリンクが、
[[ムーバブルタイプの管理画面のURL]]/blog.html?page=2
となっていました。
[[サイトのURL]]/blog.html?page=2
を、ブラウザから直接打ち込むと、分割されたページにアクセスできるので、ページ分割自体はうまくいっているようです。
(このたび、サイトのURLとは別に、管理画面のURLとして、サブドメインのURLを使うように変えました。)

この状況を直すにはどうしたらよいでしょうか?
ご教授いただけますと嬉しいです。お願いしますm(_ _)m


No.56  Author Profile Page: (無題)

>へまさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、34番のコメントを参照して、DivPages.plを書き換えてみてください。

No.57 へま : (無題)

壱様、ご回答いただきありがとうございましたm(_ _)m
試してみましたところ、私のケースではDivPages.plの修正だけでは直らなかったので、ページ繰りのリンクのタグに mode="relative" を追加する作業もして、うまく動くようになりました。ありがとうございました!

No.58 アンインストール : (無題)

ページ分割プラグイン大事に使わせてもらっています!このような有益なプラグインを提供していただき本当に感謝しています!

ぶしつけな質問なのですが、カテゴリページを分割する際にこのプラグインを使わせてもらっているのですが、

カテゴリページのURL:http://hoge.com/カテゴリ/

の場合分割すると1ページ目は

http://hoge.com/カテゴリ/index.html?page=1

になりますが、同じ内容になってしまいSEO的にもあまりよろしくないので、

# MTDivPagesPrevPagelink tag sub
div_pages_prev_page_link {
my ($ctx, $args) = @_;
my $cur_page_no = $ctx->stash('cur_page_no');

if($cur_page_no != 1){
&div_pages_cur_page_link($ctx, $args) . "?page=" . ($cur_page_no - 1);
}
}

と変更してみてpage=1の場合に限りhttp://hoge.com/カテゴリ/でURLを出力してみようと試みてみたのですが上手くいきません。

大変あつかましいのですが、どうにかそのようにできないものでしょうか? 大変申し訳ないのですがぜひご教授いただければ幸いです・・・。

No.59  Author Profile Page: (無題)

>アンインストールさん
こんにちは。
プラグインご利用ありがとうございます。

ご質問の件ですが、以下のようにすれば良いはずです。

div_pages_prev_page_link {
    my ($ctx, $args) = @_;
    my $cur_page_no = $ctx->stash('cur_page_no');

    if($cur_page_no == 1) {
         &div_pages_cur_page_link($ctx, $args);
    }
    else {
         &div_pages_cur_page_link($ctx, $args) . "?page=" . ($cur_page_no - 
1);
    }
}

No.60 アンインストール : (無題)

こんなにお早いご返答ありがとうございます! 早速やってみたのですが、うまくできませんでした。

page=2でみると前のページのURLがpage=1が付加されたままで出力していました。

元のhttp://hoge.com/カテゴリ/からみるとURLはhttp://hoge.com/カテゴリ/index.htmlとindex.htmlが付加される感じで出力されていました。(前のページは無いはずなのに前のページが出力される。)

もしよろしければもう一度アドバイスをよろしくお願いします。

P.S. カテゴリページでつかっているタグは以下の通りです。

<MTDivPagesIfMulti>
<form id="page_sel" name="page_sel" action="get">
<div class="category-pyonpyon">
<MTDivPagesIfPrevPage><a href="<$MTDivPagesPrevPageLink$>">≪ 前のページ</a> | <MTElse>≪ 前のページ | </MTElse></MTDivPagesIfPrevPage><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$>先頭</a> | <MTDivPagesIfNextPage><a href="<$MTDivPagesNextPageLink$>">次のページ ≫</a></MTDivPagesIfNextPage>
</div>
</form>
</MTDivPagesIfMulti>

No.61  Author Profile Page: (無題)

>アンインストールさん
こんにちは。

ifの条件判断の部分が間違っていました。申し訳ありません。
以下のようにしてください。

if($cur_page_no == 2) {

それから、URLからindex.htmlを取りたいのであれば、sub div_pages_cur_page_link {・・・}の部分に、以下の赤字の行を追加してください。

sub div_pages_cur_page_link {
    my ($ctx, $args) = @_;

    my $mode = $args->{'mode'} || 'absolute';
    my $uri = $ctx->stash('cur_page_uri');
    $uri =~ s/index\.(html|php)$//;
    if ($mode eq 'relative') {
        return $uri;
    }
    else {
        return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;
    }
}

No.62 アンインストール : (無題)

壱さんありがとうございましたー!完璧にできました!

もしさしつかえなければでいいのですが、http://hoge.com/カテゴリ/?page=2ならばhttp://hoge.com/カテゴリ/index2.htmlにはできないでしょうか?

重ね重ね申し訳ありませんが、もしよろしければご教授ねがいますでしょうか。

No.63  Author Profile Page: (無題)

>アンインストールさん
こんにちは。

http://hoge.com/カテゴリ/?page=2http://hoge.com/カテゴリ/index2.html のようにするには、mod_rewriteを使ってURLを置換する方法が考えられます。

コメントする

管理者のみにコメントを送信したい場合は、「コメントを秘密にする」のチェックをオンにしてコメントを送信するか、メールフォームからメールをお送りください。

ブログ全体の感想など、この記事に直接に関係しないコメントは、ゲストブックにお気軽に投稿してください。


アーカイブ

ブログパーツ

ステータス