August 6, 2017

Disqus表示の改善

Hugo に移行してからも以前と同様コメント機能はDisqusに依存しています。

一月気に入らない点は、Disqusのローディングに時間がかかることと、そのために表示が乱れてしまうことです。

Ghostで使用していたテーマでの扱いを参考にしながら、ページの初期ロード時は表示せずにロードボタンをユーザーに押させてからDisqusのコメントをロードするようにしました。

テーマは、hemingway2を改変したものを使用しています。hemingway2では、layouts/disqus.htmlが該当する部分になります。

以下のように修正を加えました。

{{ if .Site.DisqusShortname }}
<section class="section">
  <div class="container">
    <div class="disqusbox">
            <div id="disqus_thread"><form onsubmit="my.loadDisqus();return false;" class=formBlock><input class="cmd_hemingway" type=submit value="Load Comments"></form></div>
        <script type="text/javascript">

            var disqus_shortname = '{{ .Site.DisqusShortname }}';

            var my = my || {}
            my.loadDisqus = function() {
                var dsq = document.createElement('script');
                dsq.type = 'text/javascript';
                dsq.async = true;
                dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
            };
        </script>
        <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
        <style score=scoped>
            @media print {
                .disquxbox{display:none}
            }
        </style>
    </div>
  </div>
</section>
{{ end }}

まぁ、コメントをつけていただく方が稀なブログなんで、これで良いでしょう。

© 沙門