テンプレートのコメント部分では標準機能でコメント数を表示させるのが可能ですけれど、アイテム単体ページのアイテム本文中ではコメント数はそのままでは表示できないようです*1。
コメント数を表示させたい部分だけコメント部分に記述すればいい話ではありますが、当サイトではコメントの前に「関連記事」を表示させたいという我侭な希望があったもので、その方法だと実現できませんでした*2。まぁ「関連記事」を後ろにやればいい話ですが、「関連記事」がコメントの前に入ってるからコメント数が分かった方がいいよね、って思っての行動なので本末転倒な事態であるともいえます。
というわけで、無理やりプラグインを作ってみました。「脆弱性の問題、何それ? おいしいの?」という精神で作りましたので、何かの気の迷いで使われる場合は、色々な意味で自己責任でお願いします。
- 注1 : ただしこちらのページによると、別途テンプレートを作って呼び出せば可能みたいですが、具体的にどうするのか良く分かりませんでした。
- 注2 : 本文部分だと大丈夫なのに、コメント部分に記述すると何故か検索語がANDに必ずなってしまうのでした。
<?php class NP_CommentCount extends NucleusPlugin { // プラグインの名前 function getName(){ return 'CommentCount'; } // プラグインの作者 function getAuthor(){ return '嶽花'; } // プラグインのサイトURL function getURL(){ return 'http://www.takehana.tv/cccc/index.php?itemid=2112'; } // プラグインのバージョン function getVersion(){ return '0.1'; } // インストール済みのプラグインリストに表示される説明文 function getDescription(){ return 'アイテム個別ページでコメント数を表示させます。'; } //■スキン変数の実装 function doSkinVar() { //グローバル変数 global $itemid; //表示のためのSQL文(その記事からコメント数を抽出) $query = 'SELECT COUNT(*) as comcount FROM '.sql_table("comment").' WHERE citem = '.$itemid; $qid = mysql_query($query); $row = mysql_fetch_array($qid); //表示 echo "(".$row["comcount"].")"; } } ?>
上記の内容を NP_CommentCount.php ってファイルに書き込んでアップし、管理画面からインストールした後に、カウント数を表示させたいテンプレート部分に
<%CommentCount%>
と書き込めば(0)とか(2)とか(5963)とか表示されます。カッコがいらない人はプラグインの記述の echo って記述のところを変更してみてください。
コメント
> 具体的にどうするのか良く分かりませんでした
たぶんこうでは。
まず<%commentcount%>を出力するためだけのテンプレートを作ります。そしてテンプレートパーツ「コメントの本体」の中に<%commentcount%>と記述します。さらにテンプレートパーツ「コメントが無い時」に「なし」などと記述。「0」を出力したい場合は公式フォーラムのviewtopic.php?t=3524参照です。
そしてこのテンプレートを個別アイテムのスキンから<%comments()%>で呼び出します。以上です。
コメントまわりに関しては同じテンプレートパーツ・同じテンプレート変数でもindexスキンとitemスキンでは挙動や目的が違うというわけですね。itemスキンはその性格上、本来はテンプレートとの関連付けが不要なスキンパーツと言えるのですが、その関係でこのようないっけん分かりにくい仕様になってるのかなという気がします。
言われてみたら納得したんですが、最初にこれだけ思いつける人たちは
凄いなぁ、と思ったりしました。
詳しい解説、ありがとうございました。