よく技術情報のページなんかに
この記事は役に立ちましたか?
なんていって5段階評価の投票ができるようなページがあります。 Amazonの書評みたいなものですね。 あれを実現するスニペット。
参考サイトはこちら
導入手順は上記サイトを参考にしてもらえばわかるので、簡単に。
- 環境: MODx 0.9.6 / CSS Star Rating 1.0
- 本家サイトから必要なファイルをダウンロード&解凍&適切な場所に設置
star_rating.snippet.tplの内容で新しいスニペットを作成(スニペット名:star_rating)star_ratingという名前のテンプレート変数を作成し、投票機能をつけたいテンプレートへのアクセスを追加- 先ほどのテンプレートにCSS Star Ratingのスタイルシートへのリンク追加
- テンプレートや記事の好きな場所に
[!star_rating!]と追加
以上。(ホンマにテキトーやな)
でもここで問題。僕のサイトでは「フレンドリーURL:ON」、「エイリアスパス:使用」の環境で使用しているのですが、投票時にアクセスするURLにエイリアスパスが反映されないという不具合が。 要するに親フォルダ(エイリアス名:parent)の下に子ドキュメント(エイリアス名:child)があり、接尾詞が.htmlの場合は以下のURLになる。
http://(site_url)/parent/child.html
そのドキュメントを評価するときに接続するURLは、以下のようになるべきである。
http://(site_url)/parent/child.html?starvote=5&pid=xx
(starvoteは5段階評価の数値、pidはドキュメントID)
だが、そこがうまく動作せず、以下のように親のパスがなくなったURLになってしまっている。
http://(site_url)/child.html?starvote=5&pid=xx
そしてページが見つからないというエラーになる。 こちらのフォーラムを参照したところ、どうやらこれはバグだ。
Support/Comments for CSS Star Rating
次のバージョンで修正されると思われるが、次バージョンがリリースされるまでは以下の修正で対応できる。
star_ratingスニペットを修正する
star_rating.snippet.tplファイルの内容でstar_ratingスニペットを作成したが、その内容を修正する。 star_rating.snippet.tplでいうところの157行目から161行目までの5行でURLを作成している。 (最低評価から最高評価まで5段階分のURL) そこを修正する。
修正前
$modx->makeUrl($modx->documentObject['id'], $modx->documentObject['alias'], 'starvote=1&pid=' . $docID)
・・・
$modx->makeUrl($modx->documentObject['id'], $modx->documentObject['alias'], 'starvote=5&pid=' . $docID)
修正後
$modx->makeUrl($modx->documentObject['id'], '', 'starvote=1&pid=' . $docID)
・・・
$modx->makeUrl($modx->documentObject['id'], '', 'starvote=5&pid=' . $docID)
つまり以下の部分を空文字列に置き換える。
$modx->documentObject['alias'] → ''
これで正常に動作しました。 同じユーザが何度も投票しないようにするためのセッション管理などで、ややこしい部分はまだありそうだけど、それはおいおい調査します。
追記
検索エンジンのクローラーのせいで、勝手に投票されて少し困っています。 対処法はまだわかりません。
関連するエントリー [MODx] CSS Star
トラックバック:No Trackbacks
- トラックバック URL
- http://blog.garden-place.jp/action.php?action=plugin&name=TrackBack&tb_id=126
- Listed below are links to weblogs that reference
- [MODx]CSS Star Ratingで記事評価機能 from Web 酒 肴