Home > Internet > Movabletype > GetQRcodeプラグインでMT4iリンクを作成

GetQRcodeプラグインでMT4iリンクを作成

さーて、今回はMT4iへのリンクを表す、QRコード部分。

エントリーアーカイブに対しても、携帯での直接表示が可能なように、外部のJavascriptAPIを使って、QRコードを生成させていたのだけれど、この手の画像を生成するスクリプトは、どうしても表示までが遅くなりがち。Ajaxを使って感じさせなくするのも手だけれど、やはりベストはサーバー側に画像を用意する事です。

ブログ自身のQRコードだけなら、APIで生成した画像をダウンロードして、サーバーに置いておく事も可能ですが、かといってエントリーアーカイブそれぞれのQRコードを、エントリーを書くたび作成するのも面倒な話です。

という訳で、QRコードを生成するMovableTypeプラグイン「MT4:エントリのURLをQRコードで自動生成する」を使い、再構築時にサーバー上にQRコード画像が作成されるようにしてみました。

GetQRcodeプラグインを使う

まずこのプラグインの動作には、GD::Barcodeが必要なので、一部のサーバーでは使用できない事もあるかもしれません。

このプラグインのインストールで使用可能になる、唯一のMTタグ<MTGetQRCode>には、2つのパラメータ「url」と「qrcodeurl」があり、それぞれ「QRコード化するテキスト」「サーバー上でのQRコードを生成するパス」となっています。

これは、yoshiさんには悪いけど、パラメーター名が適切じゃない気がします。お題的には「url」であってるけれど、本来はここはURLだけでなくテキストなら何でも構わない部分なので、「text」とかの方が解りやすいはずです。「qrcodeurl」の方も、実際にはパスを記述するのに、「qrcodeurl」と「url」のような錯覚を起させるのは、親切では無いでしょう。

プラグインの動作としては、シンプルに出来ていて理解しやすいです。

ウィジェットのMTMLは以下の様になりました。

<MTSetvarBlock name="QRrelpath">images/qrcode/qrcode<MTIf name="tempName" eq="individual_entry"><$MTEntryID pad="1"$></MTIf>.png</MTSetvarBlock>
<$MTBlogSitePath replace="\","/" cat="$QRrelpath" setvar="qrpath"$>
<$MTBlogURL cat="$QRrelpath" setvar="qrurl"$>
<MTSetVarBlock name="qrtext">[[ MT4iのCGIアドレス ]]?id=<$MTBlogID$></MTSetVarBlock>
<MTIf name="tempName" eq="individual_entry"><MTSetVarBlock name="qrtext" append="1">&amp;mode=ainori&amp;eid=<$MTEntryID$></MTSetVarBlock></MTIf>
<$MTGetQRCode url="$qrtext" qrcodeurl="$qrpath"$>
<dt><$MTBlogName$> mobile.ver.</dt>
<dd>
    <p>携帯サイト(MT4i Powered)はこちら</p>
    <p><a href="[[ MT4iのCGIアドレス ]]??id=<$MTBlogID$><MTIf name="tempName" eq="individual_entry">&amp;mode=ainori&amp;eid=<$MTEntryID$></MTIf>" title="mobile.ver." rel="nofollow noindex"><img src="<$MTGetvar name="qrurl"$>" alt="qrcode" width="90" height="90" /></a></p>
    <p>Generate QRcode by <a href="http://www.apstars.com/blog/215/mt4urlqr.php" title="MT4:エントリのURLをQRコードで自動生成する" class="favicon_m">GetQRcodeプラグイン</a></p>
</dd>

[[ MT4iのCGIアドレス ]]の部分は、MT4iのCGIのURLに書き換えてます。

使う上で面倒なのは、サーバー上のパスとURLを結びつけなくてはならない点です。私の場合は以下の様にしました。

作成されるQRコードの、ブログルートからの相対パスを「QRrelpath」にセット。

<MTSetvarBlock name="QRrelpath">images/qrcode/qrcode<MTIf name="tempName" eq="individual_entry"><$MTEntryID pad="1"$></MTIf>.png</MTSetvarBlock>

QRコード画像のサイト上のパスを、「<$MTBlogSitePath$>」と、上で作った「QRrelpath」を連結して「qrpath」にセットします。(なお途中のreplaceモディファイアは、このサーバーがWIN鯖でパスの区切りが「\\」になっているからそれを「\/」に直しているだけです)

同様に、QRコード画像のURLを、「<$MTBlogURL$>」と「QRrelpath」を連結して「qrurl」としてセットします。

<$MTBlogSitePath replace="\","/" cat="$QRrelpath" setvar="qrpath"$>
<$MTBlogURL cat="$QRrelpath" setvar="qrurl"$>

ここまで作った変数のうち、実際にプラグインに渡される変数は、「qrpath」だけです。「qrurl」は出来あがったQRコード画像を表示する時に、URLとして使います。(画像の指定を相対パスで行うのなら、「QRrelpath」を使って「qrurl」を使用しなくてもかまいません)

QRコードで表示させるテキスト(MT4iのアドレス)を「qrtext」にセットします。以下は実際のこのサイトでのMT4iを表示するURLです。

<MTSetVarBlock name="qrtext">http://www.zelazny.mydns.jp/cgi-bin/keitai/index.cgi?id=<$MTBlogID$></MTSetVarBlock>

エントリーアーカイブにの場合は、直接記事を表示できるように、クエリを「qrtext」に追加します。(エントリーアーカイブかどうかの条件判断は、mt.Vicunaのものを使用していますので、一般的な記述ではありません)

<MTIf name="tempName" eq="individual_entry"><MTSetVarBlock name="qrtext" append="1">&amp;mode=ainori&amp;eid=<$MTEntryID$></MTSetVarBlock></MTIf>

二つの変数「qrtext」と「qrpath」を使い、QRコード画像を生成します。

<$MTGetQRCode url="$qrtext" qrcodeurl="$qrpath"$>

後は出来あがった画像を表示させるだけです。

GetQRcodeプラグインを修正する

実は、ここまでの作業は、うまくいかない可能性があります。というのもGetQRcodeプラグインは、QRコードを「バージョン3」の「誤り訂正レベルL」として作成しています。この場合作成可能なデータビット数は440、英数字で77文字となり、MT4iのクエリ付きURLを表示するには、文字数が足りなくなる事があるからです。

QRコードドットコム:バージョン1~10

という訳で、この部分の修正が必要になります。

これを指定しているのは、プラグイン内の以下の部分です。

my $oGdBar = GD::Barcode->new('QRcode', $url,{ Ecc => 'L',ModuleSize=> 2,Version => 3,});

この「Version => 3,」を「Version => 5,」にする事で、約倍の文字が使えるようになります。(別に「4」でも構わないのですよ)

ちなみに「ModuleSize=> 2,」は出力される、QRコード画像のサイズ(90px四方)を指定しているところです。「ModuleSize=> 1,」とすると(45px四方)になります。

もしこのプラグインの改修点があるとしたら、パスとURLの指定を簡素化する事と、Version指定やModuleSize指定をパラメーターとして渡せるようにする事ですかね。

なかなか、シンプルだけど面白いプラグインです。

さて、明日からしばらくパソコンが手元にない状態になります。まさか2週間かかるなんて・・・
しばらく更新はおあずけですね・・・

ping a Trackback

TrackBack URL for this entry.(1)

Please! leave a Comment.

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > GetQRcodeプラグインでMT4iリンクを作成

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top