- 2010年2月 9日 00:18
- パソコン・インターネット
ブログ記事をTwitterに自動投稿するMTのプラグイン「PostToTwitter」を使っていて「投稿時にハッシュタグも指定できたら良いなぁ」と思うことがありました。
それほど難しくないはずなので自分で手直ししてみようと思い立ち、プラグインのソースコードを確認してみたら送信メッセージ用のテンプレートファイルがあり、それを少し手直ししてやるだけで対応できそうなことが判明。
テンプレートについて何か書いてあるんちゃうかなとプラグインのドキュメントを読み直してみたら、そのものズバリの改修例が既に書かれてました・・・ようできてますワ。
簡単とはいえ、それなりの手順も必要ですので整理しておきます。
なお、この記事は MovableType5.0 と PostToTwitterプラグイン v2.0.0 の組み合わせでの結果です。
(1) MTのブログ投稿画面にカスタムフィールド追加
プラグインの改修例では既存の「タグ」フィールドに書かれたタグをそのままハッシュタグに出力する例になっていましたが、ハッシュタグとタグは区別しておきたいですし、「キーワード」フィールドはSEO対策のMETAタグで使うこともあるため専用のカスタムフィールドを追加します。
なお、カスタムフィールドそのものの使い方はSixApartのドキュメント「カスタムフィールドの作成と表示」を参照してください。
◆追加するカスタムフィールド
名前:ハッシュタグ
種類:テキスト
ベースネーム:特に変更必要なしです。
テンプレートタグ:TwHashTag
(2) ブログ記事の投稿画面にカスタムフィールドを表示
カスタムフィールドを作成しただけではブログ記事の投稿画面に入力フィールドが表示されませんので、投稿画面の「表示オプション」で追加した「ハッシュタグ」フィールドを表示するようにチェックを入れます。
表示方法の詳細はSixApartのドキュメント「入力欄の表示/非表示と、並び替え 」を参照してください。
(3) ブログの管理画面でPostToTwitterフォーマットテンプレートモジュールを追加
ブログの管理画面の「デザイン→テンプレート」画面で「テンプレートモジュールの作成」で新規に作成します。
名前は「PostToTwitter Message Format with HashTag」とします。
テンプレートの作成方法そのものはSixApartのドキュメント「テンプレートの編集と設定」を参照してください。
テンプレートのコードは以下のようになります。
<mt:setvar name="title_len" value="140" /> <mt:setvarblock name="title"><mt:entrytitle /></mt:setvarblock> <mt:setvarblock name="hashtag"><mt:If tag="TwHashTag"> <mt:TwHashTag></mt:If></mt:setvarblock> <mt:setvarblock name="link"><mt:var name="hashtag"> - <mt:entryshortenedpermalink /></mt:setvarblock> <mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" /></mt:setvarblock> <mt:setvar name="title_len" op="-" value="$link_len" /> <mt:var name="title" trim_to="$title_len" /><mt:var name="link" />
青字がサンプルから変更した行です。
サンプルの説明に従い、最初の行から順に見て行きますと、
- 変数title_lenはエントリタイトル部分の長さを表し、初期値としてメッセージの最大長140文字を設定します。
- 変数titleはエントリタイトルを格納します。これが切り捨てられてもよい部分になります。
- 変数hashtagに追加したカスタムフィールド「ハッシュタグ」を格納します。カスタムフィールド作成時に指定した「TwHashTag」が空で無ければ、hashtagに値が入ります。
- 変数linkは、先の変数hashtagに加えて文字列短縮されたパーマリンクとエントリタイトルとの区切り文字としてハイフン(と前後の空白)を格納します。これが切り捨てられては困る部分になります。
- 変数link_lenは変数linkの文字数を格納します。count_characterモディファイアはタグが出力する文字数を数え表示します。
- 変数title_lenから変数link_lenを引き、その結果を再度変数title_lenに格納します。これがエントリタイトルとして表示可能な最大文字数となり、これを越える分については切り捨てられるということになります。
- 変数titleの内容をtrim_toモディファイアを使って先頭から変数title_lenの長さ分だけ表示し、さらに変数linkの内容を表示します。
(4) PostToTwitterプラグインの設定画面で「フォーマットテンプレート名」を設定
プラグインのドキュメントに説明がありますが、ブログの管理画面のPostToTwitterプラグインの設定で「フォーマットテンプレート名」に(3)で追加したテンプレートモジュールの名前「PostToTwitter Message Format with HashTag」を指定します。
デフォルトではここは空白ですが、その場合はデフォルトテンプレートとしてプラグインと一緒にインストールされる「message_format.tmpl」という名前のテンプレート・ファイルが使われます。
(5) ブログ全体を再構築
(6) ブログ記事の新規投稿
通常の記事投稿と一緒ですが、追加したフィールド「ハッシュタグ」に「#hoge #foo」というふうに、ハッシュタグを空白で区切って入力して投稿すれば、Twitterにハッシュタグとして投稿されます。
以上です。
- Newer: Google Buzz
- Older: ミノー: ボディテンプレート修正

