このブログの各記事にボタンを付けました。Twitter ユーザは、簡
単にこのブログに関するつぶやきを投稿することが出来ます。どうぞご利
用下さい。
今回も chalow 本体を修正しました。chalow ユーザ向けに、オリジナ
ル(chalow-1.0.tar.gz)の cl.conf と chalow へのパッチを貼り付けてお
きますね。
--- cl.conf.org 2007-10-19 21:38:22.000000000 +0900
+++ cl.conf 2009-08-16 15:26:20.000000000 +0900
@@ -315,7 +315,7 @@
$item_template = << "EACHITEM"
<!-- start:<TMPL_VAR name=ymdi> -->
<div class="section">
-<h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat></h3>
+<h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat> <TMPL_VAR name=retweet></h3>
<p><TMPL_VAR name=content></p>
<TMPL_IF name=readmore>
<p>《<a href="<TMPL_VAR name=url>">続きを読む</a>》</p>
--- chalow.org 2007-10-19 23:15:01.000000000 +0900
+++ chalow 2009-08-16 15:29:44.000000000 +0900
@@ -573,6 +573,9 @@
my $item_ymdi = $ymd."-".$i;
(my $item_id = $ymd.$i) =~ s/-//g; # Ex. "200309241"
+ ### ReTweet
+ my $retweet = make_retweet_link_html($e->{$i}{cat}, $e->{$i}{h}, $item_url);
+
### item の組み上げ
my $t = HTML::Template->new(scalarref => \$item_template,
die_on_bad_params => 0);
@@ -586,6 +589,7 @@
$t->param(content => $ccc);
$t->param(header => $ih);
$t->param(cat => $catstr);
+ $t->param(retweet => $retweet);
$t->param(author => $e->{$i}{a});
$t->param(referrer => join(" ", @inside_refs));
$t->param(id => $item_id);
@@ -754,6 +758,9 @@
$ymdi_after = $day_a."-1";
}
+ ### ReTweet
+ my $retweet = make_retweet_link_html($ent->{$i}{cat}, $item->{h}, $item_url);
+
### ページの組み上げ
my $t = HTML::Template->new(scalarref => \$item_page_template,
loop_context_vars => 1,
@@ -778,6 +785,7 @@
$t->param(header_text => $item->{ho});
$t->param(header => $item->{h});
$t->param(cat => $catstr);
+ $t->param(retweet => $retweet);
$t->param(author => $item->{a});
$t->param(referrer => join(" ", @inside_refs));
$t->param(id => $item_id); # 200101011
@@ -1401,6 +1409,29 @@
}
+### ReTweet 用のリンクを作る。
+sub make_retweet_link_html {
+ my ($catp, $ih, $item_url) = @_;
+
+ my $catstr = join("", map {"[$_] "} @$catp);
+
+# my $statusstr = $catstr . $ih;
+ my $statusstr = $ih;
+ to_utf8_cl(\$statusstr);
+ $statusstr =~ s/([^0-9a-z_ ])/'%'.unpack('H2', $1)/gei;
+ $statusstr =~ s/\s$//;
+ $statusstr =~ s/\s/%20/g;
+
+ $item_url = $clog_url . $item_url;
+
+ my $link_html = qq(<a href="http://twitter.com/home?status=%22$statusstr%22%20$item_url%20%23masutaka%20">).
+ qq(<img src="image/twittertubuyaku.png" alt="twitter" border="0" style="border:none">).
+ qq(</a>);
+
+ return $link_html;
+}
+
+
### 指定されたファイルへ文字列を出力
sub output_to_file {
my ($fname, $contp) = @_;
- カテゴリも含めたい場合は、$catstr を使って下さい。
- %23masutaka は、適当な文字列に置き換えて下さい。
- は image ディレクトリに置いて下さい。
正直、ベタな修正になってしまったと思います。他にボタンを付けること
があれば、拡張性のある修正を考えます。
たつをさんのページを大いに参考にさせていただきました。
[を] このブログに「twitter でつぶやく」ボタンをつけた
やろうと思ったきっかけは、たつをさんのこのつぶやきです。
こんなのあるそうです > ブログにTwitterボタンを設置する方法 http://kyouzai.jugem.jp/?eid=581
— yto (@yto) August 13, 2009
追記(2009-08-19):
この記事を書いてから幾日も経っていませんが、さっそく「拡張性のある
修正」に置き換えました。上のパッチではなく [2009-08-19-1]
のパッチ
を参考にすることをオススメします。