≪ プラグイン | メイン | メールフォーム作成 ≫

2005年12月25日

●ページ分割してみました。(検索結果ページ)

少し前に月別やカテゴリーなどをページ分割してみました。
今度は、検索ページも分割してみようと思います。
検索ワードによっては、一番表示するエントリーが多いかも知れませんからね。

てことで、いつもと同じですが参考記事です。てか、俺は自分で考えれるほど能力無いので。(^^;
方法は、検索結果ページのページ分割(from 小粋空間)をご覧下さいな。

参考にしながらカスタマイズして、どうやら形になってきたようです。
しかし、ちょっと気になることが出てきました。

1.検索結果ページで再度検索しても、キーワードを認識しない
2.検索結果ページのページ番号に対するセパレート(|)の位置が変(All pages辺り)

せっかくページ分割したのに、レイアウト的にも動作的にもうまくいかないとは・・・。
正直凹みましたが、このまま諦めるほど俺は甘く無いです!
とりあえず、問題点を1個ずつ潰していきました。

1.検索結果ページで再度検索しても、キーワードを認識しない
最初は原因も分からず、四苦八苦していました。どうやらキーワードがcgiに受け渡されてないみたい。
何かヒントが無いかと、参考記事のコメントやトラックバックを探してみました。
すると、検索結果ページ分割(from MEDIAHEAD)に同じ箇所で引っかかっていた記事がありました。
記事によると、どうやら<form method>を変更すれば良いらしいです。
ヒントを元に試行錯誤した結果、無事に解決することができました。下記は対処策です。

まずは任意のテキストエディターで『…\search_templates\default.tmpl』を開いて下さい。
そして、28行目あたりの<form method="post"…>を<form method="get"…>にして下さい。

これでcgiにキーワードを受け渡すことができ、検索結果ページからも改めて検索をすることができるようになりました。
上書き保存して、FTPソフトで元フォルダに上書きアップロードすれば完了です。
(該当箇所は、当blogの検索オプションの付け方でも、念のためとして紹介しています。)

2.検索結果ページのページ番号に対するセパレータ(|)の位置が変(All pages辺り)
何のことか分かりづらいので例を挙げます。下記のような現象になります。

1 | 2 All Pages | >
2の辺りが変ですよね? ALL Pagesの後に『|』が付いて、2の後に付いていません。
1 | 2 | All Pages >

本当は、このように表現したいのですよね。実際、カテゴリーとかは上記の形式で出力されます。

同じと思われる現象については、検索結果ページのページ分割(from 小粋空間)の5項にありました。
しかし、今度はヒントとなる記事が見つかりません。もはや、気合と根性でがんばるしかありません。
パターンとしては、『…\search_templates\default.tmpl』が怪しいのですが・・・。
何度見ても、現象に繋がりそうな問題点は見つかりません。正直な話、ココで5時間以上詰まりました。

数時間の試行錯誤の結果、ようやく解決できました。
ですが、この方法を紹介して良いのか、少々考えてしまいます。

まず結果から言います。
原因は、『MTPaginate.pl(Ver1.26)』のソースにおける記述間違いと思われます。
俺の解析結果としては、上記のような結論になりました。

当然、解決策はソースの修正になります。ですが、改造しても良いのかが問題です。
もしかしたら、違法改造などで訴訟問題が起こってしまうかも知れません。(^^;
MT Extensions(公式サイト)にも、カスタマイズに関する記述がないため判断できないです。
コメントによれば、「プルダウン型のページ分割にすれば良いのでは?」みたいな意見があるようですが、分かりません。
(2004年4月21日のコメントで、問題を指摘しているようですが、その後の経過が不明です。)

このまま使い続けるのも好きじゃないので、無許可で改造方法を公開します。
自己責任と言う点と、違法性があるかも知れない点をご理解頂いた方は、続きをご覧下さい。
(どうか、俺が訴えられたりしませんように・・・ナムナム。)

2005年12月22日

●ページ分割してみました。(月別とカテゴリー)

phpモジュール化と同時期にページ分割をしたのですが、書き忘れ。
てことで、今回はページ分割の話です。

例えば、月別アーカイブが30個も有った場合、全部一度に表示されると大変ですよね?
(下に長くなってデザインがおかしくなりますし、もしかしたら負荷も余計に掛かるかも。)
どうせ全部読むとは限らないわけだから、5個ぐらいで分割されていたら楽かなと思います。

そんな希望を叶えてくれるのが、ページ分割と言うカスタマイズです。
偉そうなこと言ってますが、人様のサイト見てやっているだけなんですけどね。(^^;
えぇ、毎度のことですが参考記事の紹介です。
詳しくは、カテゴリーアーカイブと月別アーカイブのページ分割(from 小粋空間)をご覧下さい。
(すでにphpモジュール化をしている方は、3項を飛ばしても大丈夫かと思います。)
追記する箇所は、中央カラムあたりです。

と、参考記事通りにソースを追記したのですが、何故かページ分割がされませんでした。
はてと首をかしげて居たのですが、原因が分かりました。

紹介されているソースをよく見て下さい。<MTEntries>という項目がありますよね?
ここが<MTEntries lastn="7">になっていたのです。
このlastnは表示数を意味するようです。なので、7個のエントリーが表示されます。
しかも<MTPaginateContent max_sections="8">よりも優先されるようでして、ページ分割が無視されました。
しょうがないので、lastn部分を削除すればできました。

#追記(2005年12月24日00:16)
この部分ですが、俺の認識不足だった模様です。必ずしもlastnを削除しなくても良いです。
詳しくは、、トップページのページ分割(from 小粋空間)をご覧下さい。
(トップページなどでは微妙ですが、カテゴリーなどでは削除した方が良いと思います、個人的に。)

なお、<MTPaginateContent max_sections="8">はページ分割の基準数を表すようです。(当blogでは、値を5にしています。)
この設定では、8個を超えるとページ分割されます。(8個以上ではないので、注意して下さい。)

これで無事にページ分割が出来ると思いますので、がんばって下さいな。
今度は検索ページもページ分割してみようかなぁ・・・。