サイトマップにはてなブックマーク数を画像で取得するAPI

Posted by joeartsea on 2009-04-02

はてなブックマーク数を画像で取得するAPIを当サイトのサイトマップに表示しました。当サイトのサイトマップはWordpressのDagon Design Sitemap Generatorというプラグインにやってもらってます。サイトマップは記事一覧を表示するために導入しましたのでココではてなブックマーク数を表示できれば自分も閲覧者も見通しが良くなります。はてなブックマーク数を表示するには以下のイメージタグを入れるだけです。

1
<img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/">

このイメージタグをDagon Design Sitemap Generator(バージョン3.16)のどこに入れればいいのかと言うと、プラグインフォルダ内のsitemap-generator.phpを開き590行辺りの$t_out .= '';より前のfor内に書き加えます。カテゴリ、ページ、エントリに対して3回ほど似たようなループをしているコードなので非常に紛らわしいですが…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
* Generate post output
*/
function ddsg_display_posts($post_data, $num_posts, $post_start, $post_end, $comments_on_posts, $new_window, $show_post_date, $date_format) {
$show_zero_comments = get_option(&#39;ddsg_show_zero_comments&#39;);
if ($num_posts == 0) return "";
if (($post_start == 0) && ($post_end == 0)) return "";
$t_out = "";
$t_out .= DDSG_POST_HEADER;
$llevel = -1;
for ($p = $post_start; $p <= $post_end; $p++) {
$level = $post_data[$p][&#39;level&#39;];
if ($level > $llevel) {
$t_out .= &#39;<ul>&#39;;
for ($k = $llevel + 1; $k < $level; $k++) {
$t_out .= &#39;<li>&#39; . strip_tags(ddsg_find_parent_post($post_data, $p, $k)) . &#39; (continued)<ul>&#39;;
}
}
if ($level == $llevel) {
$t_out .= &#39;</li>&#39;;
}
if ($level < $llevel) {
$t_out .= &#39;</li>&#39;;
for ($k = $llevel; $k > $level; $k--) {
$t_out .= &#39;</ul></li>&#39;;
}
}
if ($post_data[$p][&#39;type&#39;] == &#39;c&#39;) {
$t_out .= &#39;<li>&#39; . DDSG_CAT_HEADER . &#39; &#39;;
$t_out .= &#39;<a href="&#39; . get_category_link($post_data[$p][&#39;id&#39;]) . &#39;"&#39;;
$t_out .= &#39; title="&#39; . strip_tags($post_data[$p][&#39;title&#39;]) . &#39;"&#39;;
if ($new_window) {
$t_out .= &#39; target="_blank"&#39;;
}
$t_out .= &#39;>&#39; . $post_data[$p][&#39;title&#39;] . &#39;</a>&#39;;
} else {
$the_title = htmlspecialchars(trim($post_data[$p][&#39;title&#39;]));
if ($the_title == &#39;&#39;) {
$the_title = DDSG_NO_TITLE;
}
$t_out .= &#39;<li><a href="&#39; . get_permalink($post_data[$p][&#39;id&#39;]) . &#39;"&#39;;
$t_out .= &#39; title="&#39; . $the_title . &#39;"&#39;;
if ($new_window) {
$t_out .= &#39; target="_blank"&#39;;
}
$t_out .= &#39;>&#39; . $the_title . &#39;</a>&#39;;
if ($show_post_date) {
// $t_out .= &#39; &#39; . date($date_format, strtotime($post_data[$p][&#39;date&#39;]));
$t_out .= &#39; &#39; . date_i18n($date_format, strtotime($post_data[$p][&#39;date&#39;]));
}
if ($comments_on_posts) {
if ($show_zero_comments || ($post_data[$p][&#39;comments&#39;] > 0)) {
$t_out .= &#39; (&#39; . $post_data[$p][&#39;comments&#39;] . &#39;)&#39;;
}
}
}
//はてブ件数画像挿入
$t_out .= &#39;<a href="http://b.hatena.ne.jp/entry/&#39; . get_permalink($post_data[$p][&#39;id&#39;]) . &#39;" target="_blank"><img src="http://b.hatena.ne.jp/entry/image/&#39; . get_permalink($post_data[$p][&#39;id&#39;]) . &#39;"></a>&#39;;
$llevel = $level;
}
$t_out .= &#39;</li>&#39;;
for ($k = $llevel; $k > 0; $k--) {
$t_out .= &#39;</ul></li>&#39;;
}
$t_out .= &#39;</ul>&#39;;
return $t_out;
}