DISQUS コメントサービスを concrete5 でもっと賢く利用

2011年1月19日 at 20:47

DISQUS というコメントサービスがあります。
http://disqus.com/

TechCrunchとかが利用しているコメントサービスです。

いろいろおいしい機能が付いています。まずは、Facebook や Twitter のアカウントや、ユーザー登録無しでもコメントが残せるけれども、迷惑コメント・フィルター機能などが充実している。

そして、だれかが Twitter で該当ページをつぶやいていたらそのコメントを表示してくれるBackTypeのサービスが使えます。最近は、記事にはあんまりコメントを残さず Twitter だけになっちゃいましたもんね。

なので、そういった機能がいっぺんに使えるのが DISQUS です。一番の欠点は、コメントの情報が自分のサイトではなく、DISQUS のサービスに残ってしまうこと。

ただ、この DISQUSのサービスは、TechCrunchやMashableといった、ブログサービスも使用しているので、そうそう簡単に倒産することはないでしょうし(いまのところ)

んで、前述のとおり、Twitter上でつぶやかれてコメントは、どっちにしろ自分のサイトに残らないので、あんまり残らないコメントを自分のDB内に残すより、勝手に新機能を追加してくれて、Twitterのつぶやきもフォローしてくれる DISQUS を利用するのもいい手でしょう。

詳しい使い方は、他のサイトに任せることにして・・・。

今現在でも、DISQUSから取得したHTMLのコードを HTML ブロックに共通ブロックとしてコピペして、該当ページに貼りつけてもらっても構いません。

ただ、その場合は、DISQUSは、URLを見てページを判断します。

編集直後には concrete5 では /index.php?cID=XXX というURLになってしまって、間違って編集者がコメントを残しても別のスレッドとして扱われますし、「コメントが消えた〜」と言われてしまいます。

また、URLを変更した時も、コメントが消えてしまいます。

ということで、以下の作業は、テーマファイルに直接埋め込むことになりますが、それらを防ぐコードを考えつきました。

変えるのは、最初の3行だけ。

最初の2行は編集モード時に、コメント欄を隠しますので、その隠すダミー領域の横幅、縦幅を指定。そして、そのつぎが DISQUS で登録した、サイトのIDともいえる short name です。

この3行を変えて、ご自分のテーマファイルにコピペすることにより、編集モード終了時やサイト内を移動したとしても、元々のコメントが表示されます(ちなみに複製はダメです)。

処理は簡単。Identifier に concrete5 のコレクションIDをいれています。ただ、それだと短すぎるので、念の為に、 BASE_URL などの情報も加えています。これは WordPress さんの DISQUS プラグインを参考にしました。

<?php
$DisqusWidth=620; // width of comment area
$DisqusHeight=200; // height of comment area
$DisqusShortname = 'disqus_shortname'; // CHANGE IT TO YOUT SHORTNAME
if ($c->isEditMode()) { ?>
<div class="ccm-edit-mode-disabled-item" style="width:<?php echo $DisqusWidth; ?>px; height:<?php echo $DisqusHeight; ?>px;">
<div style="padding:8px 0px; padding-top: <?php echo round($DisqusHeight/2)-10; ?>px;"><?php echo t('Content disabled in edit mode.'); ?></div>
</div>
<?php } else { ?>
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '<?php echo $DisqusShortname ?>';
var disqus_identifier = '<?php echo $c->getCollectionID() .' '. BASE_URL . DIR_REL . '/index.php?cID=' . $c->getCollectionID(); ?>';
var disqus_url = '<?php echo BASE_URL . DIR_REL . View::getViewPath() . '/'; ?>';

(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + 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="http://disqus.com/?ref_noscript=<?php echo $DisqusShortname; ?>">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
<?php } ?>


ということで、これを導入したのが

http://yokosonews.com/

でございます。
というか、訪問者にはあんまり関係ないんですけれどね〜。


ここで質問。ブロックにして欲しいですか?
レスの早さや多さで考えます。

DISQUS を日本で使っている人がそんなに多くなかったら、あんまり作っても意味がないので〜。

では。

Re: DISQUS コメントサービスを concrete5 でもっと賢く利用

2011年1月20日 at 3:26
DISQUS使ってます。ぜひブロック化してほしいです!

WordPressのプラグインは、WordPressのコメントシステムと同期しているのがいいですよね。いざとなったら戻せるので…。concrete5はブログじゃないので、そこまでは必要ないかなと思います。
 

Re: DISQUS コメントサービスを concrete5 でもっと賢く利用

2011年5月26日 at 0:58
追記

私のコードを参考に Cravener さんにブロックにしていただきました。

http://www.concrete5.org/marketplace/addons/disqus-comments/

世界に繋がっているっていいですね〜。