ウェブログ・ココログ関連

2008年8月 4日 (月)

はてなスター追加 & タイトルにカテゴリーを表示

突然Web拍手を追加しようと思い立った。

エントリー毎に設置したいのだが、ココログの機能にはないので、探してみる。
はてな に はてなスター というのが有って、それが使えそうだと判った。
更に調べてみると、どうやらずっとやりたかったタイトルにカテゴリーを表示することも出来そうだ。

はてな には既に登録していたので、早速ここを参考にして、はてなスターを設定してみる。
一度表示された後にリロードされるらしい。

JavaScriptをいじくり倒して、なんとかタイトルにカテゴリーを表示することに成功。
リロードされるのが気に食わないが、目を瞑ろう。

最終的に登録したJavaScriptは以下の通り。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>

<script type="text/javascript">
Hatena.Star.Token = '****************************************';
</script>

<script type="text/javascript">
Hatena.Star.EntryLoader.loadEntries = function() {
    var entries = [];
    var divs = Ten.DOM.getElementsByTagAndClassName('div','entry',document.body);

    for (var i = 0; i < divs.length; i++) {
        entries.push(new Hatena.Star.Entry.CocologHeader(divs[i]));
        entries.push(new Hatena.Star.Entry.CocologFooter(divs[i]));
    }

    return entries;
}
Hatena.Star.Entry.CocologHeader = new Ten.Class({
    initialize: function(div) {
        this.div = div;

        var h3 = div.getElementsByTagName('h3')[0];
        this.title = Ten.DOM.scrapeText(h3);

        var posted = Ten.DOM.getElementsByTagAndClassName('p','posted',div)[0];
        this.uri = Ten.DOM.getElementsByTagAndClassName('a','permalink',posted)[0].href;

        var postfooters = Ten.DOM.getElementsByTagAndClassName('span','post-footers',posted)[0];
        var categorys = Ten.DOM.getElementsByTagAndClassName('a',null,postfooters);

        var cat = '';
        if (categorys.length > 0) {
            cat = '[';
            for (var i = 0; i < categorys.length; i++) {
                if (i != 0) {
                    cat += ',';
                }
                cat += '<a href="' + categorys[i].href + '">' + Ten.DOM.scrapeText(categorys[i]) + '</a>';
            }
            cat += ']';
        }

        h3.innerHTML = '<a href="' + this.uri + '">' + this.title + '</a>' + ' ' + cat;

        this.comment_container = Hatena.Star.EntryLoader.createCommentContainer();
        h3.appendChild(this.comment_container);

        this.star_container = Hatena.Star.EntryLoader.createStarContainer();
        h3.appendChild(this.star_container);
    }
});
Hatena.Star.Entry.CocologFooter = new Ten.Class({
    initialize: function(div) {
        this.div = div;

        var h3 = div.getElementsByTagName('h3')[0];
        this.title = Ten.DOM.scrapeText(h3);

        var posted = Ten.DOM.getElementsByTagAndClassName('p','posted',div)[0];
        this.uri = Ten.DOM.getElementsByTagAndClassName('a','permalink',posted)[0].href;

        this.comment_container = Hatena.Star.EntryLoader.createCommentContainer();
        posted.appendChild(this.comment_container);

        this.star_container = Hatena.Star.EntryLoader.createStarContainer();
        posted.appendChild(this.star_container);
    }
});
</script>

| | コメント (0) | トラックバック (0)