DokuWikiに「最近のコメント」を実装する方法(Discussion Plugin)
DokuWikiはコメント実装が難しい。
「Discussion Plugin」を使えばコメント欄はできるのですが、
本当にただそれだけで、デザインもひどく大変です。
というところで、「最近のコメント」を作る方法を説明します。
※サンプルは「東方ダンマクカグラ有志攻略Wiki」を見てください。
1、コメントデータが存在する
「/data/meta/_comments.changes」
このファイルを工夫すれば実現可能です。
CSVデータになっているので、PHPで読み込んで表示すればいい。
かなり数が増えても処理は軽いので問題ありません。
ただ、古いデータは定期的に削除していくことを推奨。
おそらく「Changes Plugin」が作っているファイルだと思います。
もし見当たらなかった場合、そのプラグインをインストールしてみてください。
2、サンプルプログラム1(取得用)
<?php
$csv = array();
$fp = fopen('data/meta/_comments.changes', "r");
while (($data = fgetcsv($fp, 0, "\t")) !== FALSE) {
$csv[] = $data;
}
$comeallcount = count($csv);
$comeallcount2 = $comeallcount -1;
$show = 15;
for($i = $comeallcount2; $i > $comeallcount2 -$show; $i--){
$cometype = $csv[$i][2];
if($cometype == "dc"){
$delid[] = $csv[$i][6];
}
if($cometype == "cc"){
$comeid = $csv[$i][6];
if(!empty($delid)){
$delcheck = array_search($comeid, $delid);
if($delcheck !== false ){
$show = $show +1;
continue;
}
}
$comedate = $csv[$i][0];
$comedate2 = date('m/d H:i',$comedate);
$pagename = $csv[$i][3];
$pagename3 = str_replace("index.html", "トップページ", $pagename);
$pagename2 = '<a href="https://danmakuwiki.com/'.$pagename.'#comment_'.$comeid.'">'.$pagename3.'</a>';
$comedateall[] = $comedate2;
$pagenameall[] = $pagename2;
}else{
$show = $show +1;
continue;
}
}
$comecount = count($comedateall);
?>
このサンプルだと、最新15件のコメントを取得します。
一応最後に数えていますが、ここは不要ではある。
もちろん、URL部分等は自分のWikiに合うように変更ください。
まずはこれを「/lib/tpl/dokuwiki/main.php」の上の方で読み込みます。
3、サンプルプログラム2(表示用)
<table>
<tbody>
<?php
for($i = 0;$i < $comecount;$i++){ ?>
<tr>
<td><?php echo $comedateall[$i] ?></td>
<td><?php echo $pagenameall[$i] ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
このファイルを「最近のコメント」として表示したい箇所で読み込みます。
こちらもおおよそ「/lib/tpl/dokuwiki/main.php」の中で良い。
そうすれば「東方ダンマクカグラ有志攻略Wiki」のような感じになります。
4、最後に
投稿者の名前を入れても良いと思う。
自分のWikiは基本匿名なので入れていませんが、
名前必須な環境なら名前があった方が良い。
ページ名が長い場合は省略するのも良いかもしれない。
その場合は文字数省略してから配列に。
やり方は実際にCSVを見ればよくわかると思います。
是非挑戦してみてください。