多機能で拡張性に優れたStar Rating Plugin
今回PukiWikiで5段階評価を付けるプラグインを作成するにあたり「jQuery Raty」を利用しました。
公式ページのドキュメントで丁寧に解説されています。しかし、英語のため細かい部分がわからず手こずりました。このページでは利用方法をまとめました。
jQuery Ratyの使い方
「jQuery Raty」は名前の通りjQueryを利用して動作するJavaScriptのライブラリです。
公式ページの解説が非常に丁寧なので、jQueryの一般的な書式で動作することがわかると思います。
1.jQuery Ratyをダウンロード
まずはjQuery Raty公式ページの右上にあるv2.7.0をクリックしてダウンロード、解凍します。
(2016年4月追記:公式ページにアクセスできない状態です。現在はGitHubのページで提供されています)
2.HTMLファイルを作成してjQueryを読込み、jquery.raty.jsへのパスを記述
とりあえずjQueryは、信頼と安心のGoogleのCDNが提供してくれているものを利用します。以下の記述だとjQueryの1.x系の最終バージョンが読み込まれます。
1 2 | < script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" ></ script > < script type = "text/javascript" src = "./jquery.raty.js" ></ script > |
3.jquery.raty.js用の設定を記述
あとはjQueryの書式でDOM要素を指定するだけです。
1 2 3 4 5 | < div ></ div > < script type = "text/javascript" > $('div').raty(); </ script > |
とても簡単ですね。
これだけでは何なので、カスタマイズの要点を少し。
星の画像を置いてあるディレクトリを指定する
1 2 | $.fn.raty.defaults.path = "./images" ; $( 'div' ).raty(); |
予めスコアを表示する(この例では3)
1 2 3 4 5 6 | $( function raty() { $( "div" ).raty({ number: 5, score : 3 }); }); |
評価数を10段階にする
1 2 3 4 5 6 | $( function raty() { $( "div" ).raty({ number: 10, score : 3 }); }); |
マウスオーバー時の表示(hint)を変更する
デフォルトはhints: [‘bad’, ‘poor’, ‘regular’, ‘good’, ‘gorgeous’]
1 2 3 4 5 | $( function raty() { $( "div" ).raty({ hints: [ '1' , '2' , '3' , '4' , '5' ] }); }); |
クリックしたスコアやイベントを表示する
evtで何が取れるかはconsole.log(evt);で見てください。
1 2 3 4 5 | $( 'div' ).raty({ click: function (score, evt) { alert( "score: " + score + "\nevent: " + evt.type); } }); |
スコアやイベントの情報を外部のPHPファイルへ渡す
1 2 3 4 5 6 7 8 | $( 'div' ).raty({ click: function (score, evt) { $.post( './raty.php' ,{score:score, url:evt.currentTarget.baseURI}, function (data){ location.href = './sample.txt' ; }); } }); |
渡される側のPHP(raty.php)
実際にはXSS対策やバリデーションを行ってください。
1 2 3 4 5 6 7 8 9 | <?php $score = $_POST [ 'score' ]; $url = $_POST [ 'url' ]; $raty = 'score:' . $score . ',url:' . $url . "\n" ; $fp = fopen ( "sample.txt" , "a" ); fwrite( $fp , $raty ); fclose( $fp ); ?> |
ここまでできれば後はMySQLに渡すなり、CSVファイルに書き出すなり自由に利用できます。
今回紹介した機能の他にも、星画像を1つ1つ変更する方法、3.5など小数点を切り捨てるか切り上げるかの指定、入力したスコアをキャンセルするボタンの設置など、便利な機能が用意されています。
詳しくは公式ページを参照してください。
今回PukiWikiのプラグインで使用したコード
一応サンプルとして残しておきます。
PukiWikiにはプラグインにGETでパラメータを渡すことができるので、スコアを渡してからURLを更新しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <script type= "text/javascript" > $( function raty0() { $.fn.raty.defaults.path = "./image" ; $( ".star0" ).raty({ number: 5, score : 0, click: function (score, evt) { var url = "プラグインのURL" + score; location.href=url; } }); }); </script> |
以上、カスタマイズ次第で何にでも使える汎用性の高いプラグインjQuery Ratyのまとめでした。
次回はPukiWikiのプラグインに組み込んでみます。