Đăng ký
Duyên Việt sẽ giúp bạn giao lưu, kết bạn, se duyên và chia sẻ các thông tin trong cuộc sống

2 đánh giá
Có thể mở rộng module rate (đánh giá) cho các module nội dung (music, video, blog, photo, poll). Ví dụ dưới đây là làm cho blog
1. Tạo thêm bảng blog_rating và thêm trường cho bảng blog


ALTER TABLE `duyenvn`.`phpfox_blog` ADD COLUMN ` total_rating` INT(10) NOT NULL DEFAULT 0 AFTER `item_id` , ADD COLUMN `total_score` DECIMAL(4,2) NOT NULL DEFAULT 0.0 AFTER `total_rating` ;

CREATE TABLE IF NOT EXISTS `duyenvn`.`phpfox_blog_rating` (
`rate_id` int(10) NOT NULL AUTO_INCREMENT,
`item_id` int(10) NOT NULL,
`user_id` int(10) NOT NULL,
`rating` decimal(4,2) NOT NULL,
`time_stamp` int(10) NOT NULL,
PRIMARY KEY (`rate_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

2. Sửa file view.class.php


Tìm đoạn


$this->template()->setTitle($aItem['title'])


Thêm vào trước đó đoạn sau:


//Rating


if (Phpfox::isModule('rate'))


{


$this->setParam('aItem', $aItem);


$this->setParam('sGroup', ($this->request()->get('req1') == 'group') ? $this->request()->get('req2') : '');


$this->setParam('aRatingCallback', array(


'type' => 'blog',


'total_rating' => Phpfox::getPhrase('blog.total_rating_ratings', array('total_rating' => $aItem['total_rating'])),


'default_rating' => $aItem['total_score'],


'item_id' => $aItem['blog_id'],


'stars' => array(


'2' => Phpfox::getPhrase('blog.poor'),


'4' => Phpfox::getPhrase('blog.nothing_special'),


'6' => Phpfox::getPhrase('blog.worth_watching'),


'8' => Phpfox::getPhrase('blog.pretty_cool'),


'10' => Phpfox::getPhrase('blog.awesome')


)


)


);


        


        


$this->template()->setPhrase(array(


                    'rate.thanks_for_rating'            


                )


            );


        


$this->template()->setHeader(array(


'jquery/plugin/star/jquery.rating.js' => 'static_script',


'jquery.rating.css' => 'style_css',     


'rate.js' => 'module_rate',  


'<script type="text/javascript">$Behavior.rateBlog = function() { $Core.rate.init({module: \'blog\', display: ' . ($aItem['has_rated'] ? 'false' : ($aItem['user_id'] == Phpfox::getUserId() ? 'false' : 'true')) . ', error_message: \'' . ($aItem['has_rated'] ? Phpfox::getPhrase('blog.you_have_already_voted', array('phpfox_squote' => true)) : Phpfox::getPhrase('blog.you_cannot_rate_your_own_blog', array('phpfox_squote' => true))) . '\'}); }</script>'                        


)


);            


}


//


3. Sửa file view.html.php


Tìm đoạn



{phrase var='blog.by_user' full_name=$aItem|user:'':'':50:'':'author'}



Thêm vào sau đó đoạn




{module name='rate.display'}




4. Sửa file callback.class.php


Thêm hàm sau


public function getRatingData($iId)


    {


        return array(


            'field' => 'blog_id',


            'table' => 'blog',


            'table_rating' => 'blog_rating'


        );


    }


5. Sửa file blog.class.php


Tìm đoạn


$aRow = $this->database()->select("blog.*, " . (Phpfox::getParam('core.allow_html') ? "blog_text.text_parsed" : "blog_text.text") ." AS text, " . Phpfox::getUserField())


Thêm vào trước  đó đoạn


if (Phpfox::isModule('rate'))


{


$this->database()->select('br.rate_id AS has_rated, ')->leftJoin(Phpfox::getT('blog_rating'), 'br', 'br.item_id =  blog.blog_id AND br.user_id = ' . Phpfox::getUserId());


}


6. Thêm các mẫu ngôn ngữ cho mod này


blog.total_rating_ratings


blog.poor


blog.nothing_special


blog.worth_watching


blog.pretty_cool


blog.awesome


blog.you_have_already_voted


blog.you_cannot_rate_your_own_blog