はてなブログでコメントの折り込まずに表示する量を増やす方法

はありますか?
回答宜しくお願いします!

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/11/06 21:14:06
  • 終了:2013/11/08 17:43:23

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4596ベストアンサー獲得回数19352013/11/08 12:56:15

はてなブログの「デザイン」→「カスタマイズ」から「ヘッダ」を選んで、タイトル下に、以下のコードをまるっと追加してください。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
(function($){
    $(function() {
        /*
            コメントの最大表示数。
            ゼロにすると、全てのコメントが表示される。
        */
        var COMMENT_MAX_COUNT = 10;

        var s = Hatena.Diary.Pages.Blogs['*'].initEntry.toString();
        s = s.replace(
                /showEntryInfo\(entry, container, 3\);/,
                "showEntryInfo(entry, container, " + COMMENT_MAX_COUNT + ");");

        s = s.split(/\n/).slice(2, -2).join("\n");

        var initEntry = new Function("entry", s);

        self = Hatena.Diary.Pages.Blogs['*'];
        $('article.entry').each(function () {
            var $this = $(this);
            $("ul.comment > .entry-comment", $this).remove();
            initEntry.apply(self, [$this]);
        });

    });
})(jQuery);
</script>

最初の方にある COMMENT_MAX_COUNT が、表示するコメントの最大数です。
貼り付けたコードでは 10件にしてますが、ゼロにすると全件表示します。

かなり強引なやり方をしてます。
ページを読み込んだときに動く処理の一部を書き換えて、もう一回動かしてます。
なので、将来的に、はてなの方で修正を入れると動かなくなる可能性があります。

それに、コメントの表示以外にも、いろいろなことをやってるみたいだし、二回動かして大丈夫なのかな、という気がしないでもないです。
とりあえず、自分のブログに仕込んでみたら、それっぽく動いていますが :-)
http://a-kuma3.hatenablog.com/entries/2013/11/08

id:dorafujico

回答有難うございます!無事に設置出来ました!

2013/11/08 17:43:16
id:a-kuma3

id:rouge_2008 さんから、「コメントを書くときのダイアログが、2つ開いちゃうぜ」という指摘を受けたので、ちょっと修正してみました。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
(function($){
    $(function() {
        /*
            コメントの最大表示数。
            ゼロにすると、全てのコメントが表示される。
        */
        var COMMENT_MAX_COUNT = 10;

        var s = Hatena.Diary.Pages.Blogs['*'].initEntry.toString();
        s = s.replace(
                /showEntryInfo\(entry, container, 3\);/,
                "showEntryInfo(entry, container, " + COMMENT_MAX_COUNT + ");");

        // 以下の三行を追加
        s = s.replace(
                /Hatena.Diary.Pages.Blogs\['\*'\].leaveCommentHandler\(entry, \$button\);/,
                ";");

        s = s.split(/\n/).slice(2, -2).join("\n");

        var initEntry = new Function("entry", s);

        self = Hatena.Diary.Pages.Blogs['*'];
        $('article.entry').each(function () {
            var $this = $(this);
            $("ul.comment > .entry-comment", $this).remove();
            initEntry.apply(self, [$this]);
        });

    });
})(jQuery);
</script>

中央付近に三行ほど追加してます。

2013/11/08 23:58:24
  • id:rouge_2008
    コメントが折り込まれて表示されるとはどのような状態ですか?
    できれば確認できるURLを教えてください。
  • id:dorafujico
    こんな状態です。
    http://ugochara.hateblo.jp/entries/2013/09/05

    「もっと読む」をクリックしなくても出るコメント数を調整したいのですが…。
  • id:rouge_2008
    コメントはjavascriptで表示していますね。
    私には難しいです・・・

    該当行は15710行目にあります。
    http://hatenablog.com/js?621f4bd3b3cac31db2439a0a715ebba8
    ----------------------------------------------------------
    // コメント最初は3件まで表示
    showEntryInfo(entry, container, 3);

    $readMoreButton.click(function (e) {
    // 「もっと読む」がクリックされたらコメント全件表示
    showEntryInfo(entry, container, 0).done(function () {
    try {
    ...( 以下略 )...

    ----------------------------------------------------------

    このスクリプトの実行後に「showEntryInfo(entry, container, 15);」など、任意の件数を表示するために実行されるようにすればいいのかもしれませんが・・・

    (function($) {
    // 「entry」や「container」に何をどうやって取得して渡せばいいのか不明です・・・
    Hatena.Diary.Pages.Blogs['*'].init.showEntryInfo(entry, container, 15);
    })(jQuery)



    以下は動作する可能性がありますが、表示件数が指定できません。(全件表示されます。)

    (function($) {
    $('.read-more-comments a').delay(10000).click();
    })(jQuery)


    ※上記を「デザイン」の「カスタマイズ」タブにアクセスして、「フッタ」欄に記述してみてください。
    はてなで読み込んでいるjsファイルよりも前にしか挿入されない仕様なので、上手く動作しないかもしれません。


    もし分かる人がいましたらぜひお願いします。m(__)m
  • id:rouge_2008
    上記が動作しない場合は以下を試してみてください。(※同じく自動クリックによる全件表示です。)

    (function($) {
    setTimeout(function(){
    $('.read-more-comments a').click();
    },10000);
    })(jQuery)


    ※一応参考ページです。
    ・jQueryでsetTimeoutを使ってfunctionの実行を遅らせる方法
    http://black-flag.net/jquery/20110405-2878.html
  • id:rouge_2008
    分かりそうな人たちに回答リクエスト送信しました。
    もし時間がとれたらよろしくお願いします。m(__)m
  • id:a-kuma3
    いつもお世話になってる rouge_2008 さんからのリクエストなので、張り切ってみました。
    かなり強引なやり方なので、別のところに影響が出てなきゃ良いけど...

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません