コメント表示数を変更する @はてなブログ
はてなブログでコメントの折り込まずに表示する量を増やす方法
http://q.hatena.ne.jp/1383740046
はありますか?
回答宜しくお願いします!
まずは、テストデータが必要なんだ。
とりあえず、できたっぽい。
コード
<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>
コードについての不親切な説明
- メソッド initEntry の内容を文字列で取得
- コメントを表示しているコードの最大数を置き換えちゃう
- Function.toString では、function (arg) { ... } の表記になっているので、関数のボディだけ取り出す
- 新しい関数のインスタンスを生成
- init メソッドの辺りから、initEntry を読んでる辺りのコードをパクる
- コメントは追加されるので、本来の初期処理で追加されたコメントを削除
- Hatena.Diary.Pages.Blogs['*'] に対して、新しい関数をメソッドとして呼び出す
雑感
無理矢理過ぎる X-|
すぐに動かなくなりそうな気もするけど、どれくらいの頻度でコードに手を入れているのかなあ...
後記
@2013-11-8
id:rouge_2008 さんから、以下の指摘を頂く。
P.S.
コメントフォームのダイアログが2つ開いてしまいます。
デフォルトのブログは1つだけだったので、今回のコードの影響かもしれません・・・
やっぱり。
回答を書く前に気が付こうね >a-kuma3
前にも増して、実装にべたべた依存のコードになってしまったのは、仕方あるまい。