ブログ記事内で、自分のサイトや他の方のサイトへリンクをはるのはよくあることですが、このうち、自分のサイト内のリンクをPC用から、自動でモバイル用に置き換えるMovableTypeのカスタマイズです。
MTRegexPlugin
すでに、前回の記事で紹介したMT4keitaiを利用するためにインストールしたプラグイン「RegexPlugin」を利用します。
このRegexPluginは、正規表現を使って、条件分岐や変換などを行える非常に便利なプラグインです。
一定のルールに従って、ある語句を違う語句に置き換えることができます。
RegexPluginのこの置き換え機能を使って、自サイト内のPC用リンクをモバイル用に置き換えてみます。
PCサイトのURLをモバイル用URLに置き換える
まず、置き換えたい語句の定義を行います。
例えば、http://okayama.okaimono-review.jp/というサイトで、直下にモバイル用のmフォルダを作ったとします。
<a href="http://okayama.okaimono-review.jp/2008/10/0810020939.shtml">hogehoge</a>
を
<a href="http://okayama.okaimono-review.jp/m/2008/10/0810020939.shtml">hogehoge</a>
にしたい場合、
<a href="http://okayama.okaimono-review.jp/2008/10/0810020939.shtml">
の部分を
<a href="http://okayama.okaimono-review.jp/m/2008/10/0810020939.shtml">
に置き換えます。
置き換えはRegexPluginを使う
<>は全角で書いてありますので、半角にしてください。
その時の、置き換えの定義は次のようにしました。
<MTRegexDefine name="reg5">s|<a[^<]+href=["']http://okayama.okaimono-review.jp/([^<"']+)["']*>|<a href="http://okayama.okaimono-review.jp/m/$1">|ig</MTRegexDefine>
見よう見まねで、正規表現を書いたので、もしかすると、違ってるかもしれませんので、その辺ご了承ください。
とりあえず、管理人のサイトはこれで作動しています。
<MTRegexDefine></MTRegexDefine>で定義内容を囲みます。
定義内容は何個か定義できるので、その定義内容にname="reg5"と名前をつけます。
ここでは、元のテンプレートで、reg4まで使われているので、reg5にしました。
置き換えの定義
基本は、
<MTRegexDefine name="reg5">s|this|that|ig</MTRegexDefine>
で、thisをthatに置き換える。
後ろにくっついているiは、アルファベットの大文字と小文字を区別しない。gは、文字列中の一致した全ての文字列thisをthatに変換という意味です、たぶん。ちょっとあやふや。
thisにあたるのが、
前から、見ていくと、
[^<]は「<」以外の任意の一文字
+は、直前の文字の一回以上に一致
こう書くことで、たとえば、「a rel="nofollow" href」と、間にrel=などが入った場合でも変換ができます。この変換では、rel="nofollow"は、モバイル用では、削除されます。
ブログURL以下の2008/10/0810020939.shtmlを[^<"']+で表現し、()で囲むことで、代入します。
代入した値は、前から順番に$1、$2で表せます。
で、置き換えるのは、http://okayama.okaimono-review.jp/をhttp://okayama.okaimono-review.jp/mにしたいので、thatにあたる部分は、
<a href="http://okayama.okaimono-review.jp/m/$1">
となります。たぶん。(汗)
モディファイアーを設定
さて、先に設定した定義reg5をブログ記事の<$MTEntryBody$>と<$MTEntryMore$>に設定します。
元のテンプレートは、
<$MTEntryBody regex="reg0 reg1 reg2 reg3 reg4" zenkana="1" $>
<$MTEntryMore regex="reg0 reg1 reg2 reg3 reg4" zenkana="1" $>
となっていますので、これにreg5を付け加えます。
<$MTEntryBody regex="reg0 reg1 reg2 reg3 reg4 reg5" zenkana="1" $>
<$MTEntryMore regex="reg0 reg1 reg2 reg3 reg4 reg5" zenkana="1" $>
ウェブページの場合も同様です。
これで、再構築すれば、自サイト内のリンクが、PCの時はPC用URLに、モバイルの時は、モバイル用になっているはずです。
※管理人もスタンダード・プレミアムを利用中!
▼ さくらのレンタルサーバ
コメントする