« SEO対策としてMTPaginateを見直す:バグみっけ | メイン | VaioTypeTを80GB HDDに換装 »

2006年12月21日

SEO対策としてMTPaginateを見直す:たぶん最終版 >>MovableType 

SEO対策としてMTPaginateを見直すで、最初に出しましたが、おそらく今回が最終版です。

SEO対策の観点、アクセス解析という意味においても、動的パラメータはなるべく使うべきではない。
残念ながらMTPaginateは?page=n という形での動的パラメータであるから、そのままではよろしくない。
(だがしかし、どれだけの効果があるかつーと、なんともいえんわけだけれども。)

ということで、改造する。
MTPaginateは「This software is provided as-is and may not be redistributed without permission.」
と書いてあるので、改造して再配布するのは少々難しそうに思われるため、”パッチ”だけ配布します。
ライセンスとして、商用利用なら金払えといったところに関してはオリジナル作成元のライセンスに準じてください。

適用方法:
パッチソース:Paginate Patch1.01 PaginateをMTPaginate2.pl としてコピーし、パッチを当てる。
以下の変更を行った上、テンプレート側にて<MTPaginate> と記述するところを、<MTPaginate2>に変更する。(閉じタグも)
その他、基本的な使い方はMTPaginateに準ずる。

オリジナルはそのまま残しておくこと。何か問題があれば、MTPaginateとMovableTypeからテンプレートを変更し、Paginateを使っているところだけ再構築すれば済むので安心。

その他変更項目:

ver1.01:
BUG:1.0でURI上にindex.php(自身のファイル名)が含まれない場合に問題があった。

CHANGES:
アーカイブページで使われることを想定しています。それ以外での動作はたぶんしません。
尚、カテゴリアーカイブページでのみ動作確認をしています。
自身のページがフォームタイプではないため、フォームでの埋め込みでは確認していません。

$pathinfo_maxlength = 50;
という記述が追加されています。PATH_INFOを使うように変えましたが、PATH_INFOで長い文字列を与えられた場合の処理を変更するためのものです。index.php/page/? となるため、pathinfoが長くなることは到底考えられませんが、一応50文字としています。

前回のでURIからの取得はまずいかもしれない、ということを書きましたが、
ソースにも書いておいてありますけれども、

For example
http://some.url.com/archives/cat2/index.php//////page/3

Umm.... It is also in such cases....
http://some.url.com/archives//cat2/index.php/////page/3

http://some.url.com///archives///cat2/index.php//////page/3

というのも通じてしまいます。
※長いとブラウザで横が広がってしまうので、ちょっと短くしています。
(PATH_INFO的には/がいくつあっても減ってENVに入るのですが)
ですので、URIパラメータから動的に処理をさせるというのは、/を何個も渡してリソースを食わせる(大した処理負荷でもありませんけども)ことができるため、ちょっとまずいな、というところでした。

そのため、
MT::Template::Context::_hdlr_archive_link にて、アーカイブページそのもののURLが取得できるため、それを内部で埋め込むようにしました。(それがわかって修正が完了するまで、カテゴリページがうまくみれなくてすみません・・・)

ver1.01で廃止
pagename(前回で、index.phpと埋め込んでいたもの)は MT::Template::Context::_hdlr_archive_linkでURLが取得できるため変数定義は必要なくなりました。

ver1.0から変更なし

<$MTPaginateAllPagesLink$>は、、<$MTPaginateAllPagesLink$>=all のようにテンプレートを設定するように解説されているところが多々あるように思われるが、パッチ適用後は、<$MTPaginateAllPagesLink$>のみで問題ない。

尚、page=first、lastといった使用ができるようだが、あまり意味はないので、今パッチ上ではそれらのパラメータは無視されるようになっている。

twitterこの記事をTwitterでみんなに教える。

投稿者 debizoh : 2006年12月21日 16:25



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。