Как получить значение рейтинга и сбросить его в К2

Я делаю ручной рейтинг для предметов K2 в административной части. Чтобы понять, что я имею в виду, вы можете посмотреть на это изображение. Я добавил такой код в файл k2 defauld

<?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" />

      

Похоже, это работает, я имею в виду настройку рейтинга для каждого элемента К2. Теперь я хотел бы показать текущий рейтинг в форме выбора и не знаю, как получить параметры. В моем коде я использую /5,00, но он показывает только 0,00/5,00. Также я пробовал $this->row->ratingSum и $row->ratingSum, но это не работает (Итак, мой первый вопрос, как я могу получить эти параметры?

Второй вопрос следующий. Я вставил кнопку для сброса рейтинга и не знаю, как заставить его работать. В файлах K2 я нашел функцию, которая могла бы сбросить рейтинг и не знаю, как ее использовать. Может быть, кто-нибудь может мне помочь?! эта функция следующая

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);
 }

1 ответ

Сброс рейтинга K2 можно выполнить с помощью Ajax - вы отправляете идентификатор элемента в конкретный модуль, и вы можете использовать приведенный выше код в этом модуле в функции с именем resetK2RatingsAjax. Мы опубликовали длинный пост о том, как использовать com_ajax здесь: http://www.itoctopus.com/how-to-use-joomlas-ajax-interface-component-com_ajax

Я не могу точно вспомнить, где К2 хранит рейтинг, но вы можете просто сделать:

print_r($this>row);

И это точно говорит вам, где хранится рейтинг К2.

Другие вопросы по тегам