dongxia2068 2016-06-06 12:07
浏览 77

如何获得评级值并在K2中重置它

I'm doing manual rating for K2 items in admin part. To understand what I mean you can look on this image. I've added such code in k2 defauld file

<?php
        $submittedValue = "";
        $value0 = "0.0";
        $value1 = "0.5";
        $value2 = "1.0";
        $value3 = "1.5";
        $value4 = "2.0";
        $value5 = "2.5";
        $value6 = "3.0";
        $value7 = "3.5";
        $value8 = "4.0";
        $value9 = "4.5";
        $value10 = "5.0";

if (isset($_POST[ $row->id ])) {
            $submittedValue = $_POST[ $row->id];
        }
        ?>
        <form name="ratingk2" method="post">
            <select project="<?php echo $row->id;?>" id="<?php echo $row->id; ?>" name="<?php echo $row->id; ?>" style="width:70px;">
         <option value = "<?php echo $value0; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>0</option>
         <option value = "<?php echo $value1; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>1</option>
         <option value = "<?php echo $value2; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>2</option>
         <option value = "<?php echo $value3; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>3</option>
         <option value = "<?php echo $value4; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>4</option>
         <option value = "<?php echo $value5; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>5</option>
         <option value = "<?php echo $value6; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>6</option>
         <option value = "<?php echo $value7; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>7</option>
         <option value = "<?php echo $value8; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>8</option>
         <option value = "<?php echo $value9; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>9</option>
         <option value = "<?php echo $value10; ?>"<?php echo ($value0 == $submittedValue)?" SELECTED":""?>>10</option>
        </select>
        <input type="submit" name="submit" id="submit" value="Submit" />
        </form>                   
                    
    <?php
   $rate =  $submittedValue;

        if ($rate >= 0.5 && $rate <= 5.0)
        {
            $db = JFactory::getDBO();
            $userIP = $_SERVER['REMOTE_ADDR'];
            $query = "SELECT * FROM #__k2_rating WHERE itemID =".(int)$row->id;
            $db->setQuery($query);
            $rating = $db->loadObject();

            if (!$rating)
            {
                $query = "INSERT INTO #__k2_rating ( itemID, lastip, rating_sum, rating_count ) VALUES ( ".(int)$row->id.", ".$db->Quote($userIP).", {$rate}, 1 )";
                $db->setQuery($query);
                $db->query();
                echo JText::_('THANKS FOR RATING');

            }

        }
   ?>
                        
<span><?php echo number_format(($ratingSum/$ratingCount),2); ?>/5.00</span>

<input id="resetRatingButton" type="button" value="<?php echo JText::_('K2_RESET'); ?>" class="button" name="resetRating" />

                        

Looks like it is working, I mean it setting rating for each K2 item. Now I would like to show current rating under select form and dont know how to get parameters. In my code I use /5.00, but it shows only 0.00/5.00. Also I tried $this->row->ratingSum and $row->ratingSum but it doesnt work( So my 1st question how can I get those paramentres?

Second question is following. I inserted button to reset rating and dont know how to make it work. In K2 files I found a function that could reset rating and dont know how to use it. Maybe some1 can help me?! this function is following

function resetRating()
    {
        $mainframe = JFactory::getApplication();
        $id = JRequest::getInt('id');
        $db = JFactory::getDBO();
        $query = "DELETE FROM #__k2_rating WHERE itemID={$id}";
        $db->setQuery($query);
        $db->query();
        if ($mainframe->isAdmin())
            $url = 'index.php?option=com_k2&view=item&cid='.$id;
        else
            $url = 'index.php?option=com_k2&view=item&task=edit&cid='.$id.'&tmpl=component';
        $mainframe->enqueueMessage(JText::_('K2_SUCCESSFULLY_RESET_ITEM_RATING'));
        $mainframe->redirect($url);
    }

</div>
  • 写回答

1条回答 默认 最新

  • duanjue2576 2016-06-06 19:02
    关注

    Resetting K2 rating can be done using Ajax - you send the item id to a specific module, and you can use the above code in that module in a function called resetK2RatingsAjax. We have published a lengthy post on how to use com_ajax here: http://www.itoctopus.com/how-to-use-joomlas-ajax-interface-component-com_ajax

    I can't remember exactly where K2 stores the rating, but you can just do a:

    print_r($this>row);
    

    And it tells you exactly where the K2 rating is stored.

    评论

报告相同问题?

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题