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


投稿日:2016年5月5日
  • 0
  • 1
  • 0



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

raty_v02

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

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

2016/5/9 追記:連投禁止用のクッキー処理にバグがありました。v0.3で修正済みです。古いものをダウンロードした方は新しくアップロードしたもので置き換えてください。


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

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

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段階評価用の画像が表示されます。

raty_v02_01

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

raty_v02_02

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_v02_03

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

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

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

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

以下のようになります。

raty_v02_04

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


使用上の注意

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

#raty

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

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

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

インライン型は用意していないので以下の例も動作しません。

&raty();

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

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



現在のページを共有する



現在のページに関連する記事


おすすめの記事


コメントを残す

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。面倒な登録なしでご利用になりれます。