文字コードShift-JISのMovable Typeでも、「つぶやく」ボタンをつける
久々に本格的なTipsネタ。
今回もマイナな悩みを解決するものですが、やりたかったのは、こんなことです。
1.よくある「このエントリをtwitterでつぶやく」ボタンをつけたい
2.けど、Movable Typeだから、エントリ名を自動的に挿入できるようにしておきたい
3.やだ、誰よ、Movable Typeの文字コードをShift-JISにしたの?
4.Movable Typeの文字コードは、Shift-JISだけど、UTF-8のtwitterに日本語を渡したいの
という流れ。
弊社でもようやくtwitterアカウントを持ち、販促/マーケティングに活かしていこうということになり、以前から運営していたブログ(Movable Type)によくある「このエントリをtwitterでつぶやく」ボタンを設置しようとしたのが、経緯です。
「follow me」ボタンは、簡単に設置できたのですが、「つぶやく」ボタンは、問題にブチあたりました。
URLのエンコードがうまくtwitterに渡せない!ということです。
弊社になぜか「文字コードは、全部Shift-JISがいいんだよー」って輩がいるので、Movable TypeをShift-JISで作ってしまっていたんですね。
(根拠はない。年寄りだから違う文字コードに触れようという気がないみたい)
で、使っているMovable Typeは、一度作ってしまうと文字コードの変更が容易でないと……。
それでこんな方法で解決しました。
1.「Publickey」さんの「つぶやく」ボタンを利用する
2.「楽:技林ブログ」さんのMovable Type用プラグインを利用する
の2つです。
他力本願なので、あんまりTipsとも言えないかもしれません。
もともと「Publickey」さんの「つぶやく」ボタンを利用したのは、自分で調査/制作している時間がなかったからです。
ブログにTwitterボタンを付ける方法:Publickey
Movable Type用の「つぶやく」ボタン設置方法を考案されていました。
で、ここにある「encode_url="1"」部分が、ブログの「エントリ名」までをtwitterに渡すのに必要だったわけです。
見る人が見ればわかりますが、Movable TypeがURLエンコードを行うための記述です。
エントリ名に絶対英語(1バイト文字)しか使わない、というブログであれば、いいんでしょうが、大抵「日本語」のタイトルを付けるものです。
Publickeyさんは、これがうまくtwitter側に伝わって、
「ブログのエントリ名+エントリURL」
でつぶやいてもらえるように作られていたわけです。
が、ここで弊社の文字コードの問題が絡んできます。
いくら「Shift-JIS」で日本語をエンコードしても、「utf-8」のtwitterは、「は? 何いってんの?」状態だったわけです。
そこで楽:技林ブログさんの作成された「utf-8でエンコードしてくれる」プラグインを利用するに至ったわけです。
Movable Typeのutf8_encode_urlプラグイン/楽
インストールも非常に簡単で、Movable Typeの管理画面で設定する必要すらありませんでした。
「encode_url="1"」と書いていたMovable Type用テンプレートHTMLを「utf8_encode_url="1"」に書き直しただけです。
ようやく一件落着。
twitter側につなげたいけど、つなげてないMovable Typeユーザなんて、どれほどいるかわかりませんが、これでいかがでしょうか?