OXY NOTES

PukiWikiで5段階評価を付けるプラグインを作成しました

前回紹介した5段階評価プラグインの改良版

以前「5段階評価プラグインを通して学ぶPukiWikiのプラグインを作成する方法」というページで、PukiWikiのプラグイン作成方法を紹介しました。
その中で5段階評価のプラグインを掲載しました。

嬉しいことに利用していただいている方もいるようで、いくつか要望を頂いたので、自分が欲しい機能も加えて5段階評価プラグインを作りなおしました。

2016/5/9 v0.3 連投禁止用のクッキー処理を修正
2017/8/5 v0.3.1 カスタムスキン利用時に正しく動作しないバグを修正
2018/2/3 v0.4 複数のページを表示するプラグインで評価した際にページが削除される不具合を修正
2018/6/1 v0.4.1 ファイルの修正
2018/6/1 v0.4.2 1から5以外の引数を指定した場合エラー表示
2018/6/1 v0.5 インライン型に対応
2018/6/1 v0.6 PHP7.3に対応(NAN表示の修正)

ratyプラグインのダウンロードと準備

まずはこちらからダウンロードしてください。
raty 0.6
解凍したら、それぞれのファイルを指定のフォルダに保存してください。

image ─star-half.png
      ├star-off.png
      └star-on.png

plugin─raty.inc.php

skin  ─raty.css
      └jquery.raty.js

imageフォルダに入っている3つのスター画像はPukiWikiのimageフォルダへコピー。
同じようにpluginフォルダに入っている「raty.inc.php」はPukiWikiのpluginフォルダへ。
skinフォルダに入っている「raty.css」と「jquery.raty.js」はskinフォルダへコピーしてください。

デザインをカスタマイズしたい場合は画像ファイルを差し替えたり「raty.css」を調整してください。

以上で準備は完了です。

jQueryをまだ導入していないサイトの場合は「raty.inc.php」の38行目にあるコメントアウトを外してください。

// jQueryを使っていない場合はここを有効にする
// $head_tags[] = "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>";

以下のように変更。

// jQueryを使っていない場合はここを有効にする
$head_tags[] = "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>";

個人的にはjQueryはPukiWikiの「skin/pukiwiki.skin.php」で読み込んだほうが良いと思います。(プラグイン単位で追加すると、重複したり読み込み順の関係でバグが出る可能性が増えるため)


ratyプラグインの使い方

このプラグインはブロック型です。

複数回5段階評価を加えるタイプ

これが基本形です。以下のように記述して利用します。

#raty()

すると以下のような5段階評価用の画像が表示されます。

これは何度でも評価を追加できるタイプです。複数の評価を加えると以下のようになります。

PukiWiki上では以下のように引数を追加しています。

#raty([5,4,4,2])

ちなみにCookieを利用して同一ユーザーの連投は禁止しています。
連投を行うと「評価の連投は禁止しています。」と表示されます。
連投の禁止は3日間有効です。

一度のみ評価するタイプ

設置してみて意外に多いのが、人の評価に対し自分の評価を追加する行為
そのレビューに対する評価なのか、商品に対する評価なのかわかりませんが、使い方を勘違いしてクリックしてしまう人が多く見られました。
注意書きを追加したり、レビューに対する評価は別に追加したりもしましたが、残念ながら効果は見られませんでした。

そんな場合の対策として、1度評価すると、再評価ができないタイプを作りました。

1度のみ評価するタイプを使う場合は、第1引数に「once」を指定します。

#raty([once])

1度評価を加えると、星の画像をクリックしても再評価しません。
評価を加えるとPukiWiki上では以下のようになります。

#raty([once,5])

1度評価すると、再評価はできないので、自分で固定評価を付けたい時も使えます。

ページ内の5段階評価を全てカウントするタイプ

これは個別の評価を全てカウントし、全体の平均を出すタイプです。
ページ内の全てのカウントを集計します。

引数に「all」を指定すると、全体の平均を表示します。

#raty([all])

すると以下のように表示されます。

例として以下のように記述した場合

複数回評価するタイプ
#raty([5,4,4,2])

一度のみ評価するタイプ
#raty([once,5])

全体の平均を出すタイプ
#raty([all])

以下のようになります。

複数回評価するタイプの1回分の評価も、1度しか評価しないタイプの評価も、どちらも同じ1回としてカウントしています。


使用上の注意

引数を入れるためのカッコ()を省略した形では動作しません。以下はNGです。

#raty

また引数が無い状態でブランケット[]を付けると動作しません。

#raty([]) // これはNG
#raty([3,5]) // 引数がある場合は[]付きでOK

#raty(once) // 引数があるのに[]がないのはNG
#raty([once]) // 引数がある場合は[]を付ける

インライン型に対応しました。
以下のように記述してください。

&raty();

以上です。
ライセンスはPukiWikiと同じです。
自由に利用してください。

使用感やバグの報告などをいただけると嬉しいです。