AlphaContentでAjax Rating Systemを記事毎に有効・無効にする
公開日| 2009年04月06日 | コメントはまだありません。
カテゴリー:エクステンション |
概要 : AlphaContentというエクステンションは、Yahooのようなディレクトリ制御を行うことができる有名なエクステンションだ。 このエクステンションには、Ajax Rating System が組み込まれているが、これを、記事によって表示したり、非表示にするには・・・と考えてみた。
ダウンロード:http://www.alphaplug.com/
もっと、Joomla!やPHP、Apacheについて詳しく知りたい方は、以下の本なども良いと思います。本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。
Joomla!Pro Book オープンソースCMS導入&カスタマイズガイド |
初めてのPHP & MySQL 第2版 |
Apacheハンドブック |
STEP.1 Ajax Rating System をコンポーネントで有効にする
AlphaContentの設定画面(コンポーネント - AlphaContent)右側で、| Use Ajax Rating System : | ●はい |
とする。

続けて、AlphaContentのプラグインの設定を行う。
(プラグイン - AlphaContent)

AlphaContentの設定画面の以下の情報を設定する。
| 有効 : | ●はい |
| プラグイン有効 : | ●はい |
とする。

STEP.2 既存のRating System を無効にする
プラグインのRatingの設定画面(プラグイン - Rating)で、
| 有効 : | ●いいえ |
とする。

ここまで、設定すると、各記事に、以下のように星が表示され、評価を行うことができるようになる。

ただ、各記事毎に評価の設定を行っても、AlphaContentのAjax Rating System は、常に表示されてしまう。
STEP.3 記事ごとの有効・無効を設定する
AlphaContentのAjax Rating System は、記事毎に有効・無効を表示できない。それを実現するには、一部のソースコードの変更が必要となる。
いろんなやりかたがあるが、ここでは、記事(あるいはメニューアイテム)のパラメータである(アイテム評価投票)を用いて、有効・無効の設定を行ってみる。

/plugins/content/alphacontent.php の 83行目あたり
1 | if ( $dparams-->get('activeglobalsystemrating') || $pluginParams-->get( 'enabled', 0 ) ) { |
1 | if ( ($dparams-->get('activeglobalsystemrating') || $pluginParams-->get( 'enabled', 0 )) && $params-->get( 'show_vote' ) ) { |
これで、記事を表示したときに、その記事(あるいはメニューアイテム)のパラメータである(アイテム評価投票)で有効・無効の切り替えが実現できるはずだ。
メニューアイテムのアイテム評価/投票パラメータと記事のアイテム評価パラメータは、どちらが優先されるか?
答え)
優先度:
メニューアイテム < 記事
となり、記事のパラメータが優先される。
答え)
優先度:
メニューアイテム < 記事
となり、記事のパラメータが優先される。
AlphaContentでは、記事のリストを表示することが、さまざまな場面である。
上記の変更だけでは、記事の表示でのみが有効・無効となり、リスト上では、あくまで全体のパラメータが優先され、同じカテゴリやセクションでは、同じように星を出力するかしないかのいずれかである。
そのリストでも同様に記事ごとに有効・無効とするには、
/components/com_alphacontent/views/alphacontent/tmpl/default.php の 450行目あたり
を以下のように変更する。
上記の変更だけでは、記事の表示でのみが有効・無効となり、リスト上では、あくまで全体のパラメータが優先され、同じカテゴリやセクションでは、同じように星を出力するかしないかのいずれかである。
そのリストでも同様に記事ごとに有効・無効とするには、
/components/com_alphacontent/views/alphacontent/tmpl/default.php の 450行目あたり
1 2 3 4 5 | // get Author $author = ( $params-->get('list_showauthor') ) ? $listing[$i]-->author : ''; // get Ajax rating bar for AlphaContent if ( $params-->get('showsystemrating') && $params-->get('activeglobalsystemrating') && $params-->get('systemrating')) { |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // get Author $author = ( $params-->get('list_showauthor') ) ? $listing[$i]-->author : ''; $show_vote_def = $params-->get('showsystemrating'); $show_vote = $show_vote_def; if(isset($listing[$i]-->attribs)){ $aparams = new JParameter( $listing[$i]-->attribs ); $show_vote = $aparams-->get('show_vote'); if(!isset($show_vote) || $show_vote==''){ $show_vote=$show_vote_def; } } // get Ajax rating bar for AlphaContent // if ( $params-->get('showsystemrating') && $params-->get('activeglobalsystemrating') && $params-->get('systemrating')) { if ( $show_vote && $params-->get('activeglobalsystemrating') && $params-->get('systemrating')) { |

