はてなスターを設置してみた

この記事がおもしろかったらシェアしてね

【2008年1月14日追記】
adiaryVer1.44のパッチファイルで以下の問題が解決されています。
新しく対応をされる方は、公式サイトからパッチファイルをダウンロードされることをお勧めします。
公式サイトへ。「Ver1.44パッチ集」

adiaryはVer1.41から「はてなスター」に対応していますが、少し前に設置してみよう、と思って設定してみたのですが、スターは表示されるのですが、「無効なURIを受け取りました」とエラーが表示されうまく動きませんでした。
こちら側の設定ミスかな?と思ってしばらく放置していたのですが、改めてチャレンジしてみました。(Ver1.44にて)

しかし今回も「無効なURIを受け取りました」と表示されうまくいかない。
調べてみると、「はてなスターを設定しよう」という記事が参考になりました。
見出しタグ内に、2つ以上の<a>要素が入っている場合、このようなエラーが出るようです。

ページのソースを見てみると、
まずHEADの中でJavaScriptを呼び出してトークンも設定されています。
adairyでは見出しタグは<H2>なのでその辺を設定している見たいです。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
Hatena.Star.Token = '90a034a67173392ed8e0d8511c13ca3bec91941e';
Hatena.Star.EntryLoader.headerTagAndClassName = ['h2', null];
</script>

では実際にスターが表示されるタイトル部を見てみると……

<h2 id="day85">
<a class="switch" href="javascript:change('diary', 's85');"><span class="open" id="s85a">▼</span></a>
<a class="date" href="/085"><span class="date">2007/12/29(土)</span></a>		<span class="title"><a href="/085">はてなスターを設置してみた</a></span></h2>

「▼」で本文の開閉をするためのJavascriptへのリンクが貼られています。
どうやらこれが原因のようです。

「diary.skel」内の「_main.html」(69行目付近)と「_main_onelog.html」(73行目付近)を開き該当部分を探します。
変更前(69行目付近)

<a class="switch" href="javascript:change('diary', 's<@t.pkey>');"><span class="<@body_sw>" id="s<@t.pkey>a">▼</span></a>

変更後

<span class="<@body_sw>" id="s<@t.pkey>a">▼</span>

ファイルを上書きし、「diary.user.skel」にアップロード。
ページを再読込してみると……
無事、はてなスターが動作いたしました!!
(副作用として本文の開閉が出来なくなりますが、私は使っていなかったので影響はありません。)

やれやれ。
確かいつからから本文を開閉する機能が付いたように思うのですが、その時から動作しなくなったのかな?
取りあえず、うまく動くようになり一安心。

…と、思ったら、もう一つ。
私は「記事タイトルに表示」で利用しているのですが、「記事の各見出しに表示」を選択した場合、スター自体が表示されないではありませんか!
adiaryの場合、「* ?」と見出しを書いた部分にスターが表示されるはず。(** や *** は表示されない)
なぜ?<H3>なら勝手にスターが表示されるはずでは?

仕方ないので、先ほどの2ファイルに強制的に<H3>を指定してやります。
「_main.html」(43行目付近)と「_main_onelog.html」(42行目付近)を開き該当部分を探します。
変更前

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
<@if(set.hatena_star_token, "	Hatena.Star.Token = '<@set.hatena_star_token>';\n")>
<@if(set.disp_hatena_star == 2, "	Hatena.Star.EntryLoader.headerTagAndClassName = ['h2', null];\n")>
</script>

変更後

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
<@if(set.hatena_star_token, "	Hatena.Star.Token = '<@set.hatena_star_token>';\n")>
<@if(set.disp_hatena_star == 2, "	Hatena.Star.EntryLoader.headerTagAndClassName = ['h2', null];\n")>
<@if(set.disp_hatena_star == 3, "	Hatena.Star.EntryLoader.headerTagAndClassName = ['h3', null];\n")>
</script>

上書きをして、「diary.user.skel」に上書きアップロード。

これで無事、見出しの場合でもスターが表示・動作するようになりました。
adiaryではこのような問題は一切報告されていないようですが、使っている方が少ないのかな?

上記の内容はITメモでも説明させていただきました

スポンサーリンク
NO IMAGE
この記事をお届けした
ひとぅブログの最新ニュース情報を、
いいねしてチェックしよう!

この記事がおもしろかったらシェアしてね

ひとぅに興味を持った方はフォローしてね

関連記事

この記事に関連するオススメ


Highslide for Wordpress Plugin