За последние 24 часа нас посетили 17348 программистов и 1600 роботов. Сейчас ищут 900 программистов ...

Изменение параметра счетчика.

Тема в разделе "Решения, алгоритмы", создана пользователем tolka, 2 дек 2014.

  1. tolka

    tolka Новичок

    С нами с:
    2 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Всем доброго дня!
    Очень рад находке вашего ресурса, и надеюсь тут мне смогут помочь.

    В общем есть вот такой код от модуля друпал

    Код (Text):
    1.  
    2. <ul>
    3.   <li class="thumb-up">
    4.     <?php print $up_button; ?>
    5.     <div class="percent"><?php print $results['up_percent'] . '%'; ?></div>
    6.   </li>
    7.   <li class="thumb-down">
    8.     <?php print $down_button; ?>
    9.     <div class="percent"><?php print $results['down_percent'] . '%'; ?></div>
    10.   </li>
    11. </ul>
    12. <?php
    13.  
    14. if ($info) {
    15.   print '<div class="rate-info">' . $info . '</div>';
    16. }
    17.  
    18. if ($display_options['description']) {
    19.   print '<div class="rate-description">' . $display_options['description'] . '</div>';
    20. }
    Вот как это выглядит в действии

    [​IMG]

    Но как можно исправить счетчик, нужно чтобы он не в процентах вел счет, а в единицах.
    То есть 5 человек проголосовало за, четверо против, и на счетчике также было 5 и 4, а не в процентах.
    Заранее спасибо.
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Посмотри откуда массив $results скрипт берёт, чтобы посмотреть какие данные в базе, если голоса от туда.
     
  3. tolka

    tolka Новичок

    С нами с:
    2 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Нашел 3 файла.
    1.
    Код (Text):
    1.  
    2. // Get voting results.
    3.   $results = rate_get_results($content_type, $content_id, $widget_id);
    4.   $results['empty'] = $results['count'] ? FALSE : TRUE;
    2.
    Код (Text):
    1.  
    2. $results = array();
    3.       $oldest = 7; // Display at least 7 days.
    4.       while ($rec = $res->fetchAssoc()) {
    5.         $oldest = max($oldest, $rec['days_ago']);
    6.         $results[$rec['days_ago'] . ':' . $rec['value']] = $rec['count'];
    7.       }
    8.       if ($results) {
    9.         $max_count = 0;
    10.         foreach ($widget->options as $option) {
    11.           $value = $option[0];
    12.           $title = $widget->translate ? t($option[1]) : $option[1];
    13.           $chart['#data'][$title] = array();
    14.           for ($i = $oldest; $i >= 0; --$i) {
    15.             $count = isset($results["$i:$value"]) ? $results["$i:$value"] : 0;
    16.             $count = max(0.1, $count);
    17.             $chart['#data'][$title][] = (int) $count;
    18.             $max_count = max($max_count, $count);
    19.           }
    3. Скорее всего то что вам нужно
    Код (Text):
    1.  
    2.  * - $results: Array with voting results
    3.  *     array(
    4.  *       'rating' => 12, // Average rating
    5.  *       'options' => array( // Votes per option. Only available when value_type == 'options'
    6.  *         1 => 234,
    7.  *         2 => 34,
    8.  *       ),
    9.  *       'count' => 23, // Number of votes
    10.  *       'up' => 2, // Number of up votes. Only available for thumbs up / down.
    11.  *       'down' => 3, // Number of down votes. Only available for thumbs up / down.
    12.  *       'up_percent' => 40, // Percentage of up votes. Only available for thumbs up / down.
    13.  *       'down_percent' => 60, // Percentage of down votes. Only available for thumbs up / down.
    14.  *       'user_vote' => 80, // Value for user vote. Only available when user has voted.
    15.  *     )
    Это то?

    Добавил:

    А еще я вот нашел в файле админ.пхп вот такой код:
    Код (Text):
    1.  
    2.  if ($widget->customizable) {
    3.     $options = array(
    4.       'percent' => t('Percentage'),
    5.       'points' => t('Points'),
    6.       'option' => t('Options'),
    И что если я заменю в самом первом коде который я скинул <div class="percent"> на <div class="points">
    Наверно так и сделаю посмотрим что выйдет

    Добавил:

    Не, не прокатило. ( нужно что-то менять в коде.
     
  4. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Едем дальше, найди функцию rate_get_results и покажи её код.
    Если в пункте 3 то что я думаю, то замени это
    <?php print $results['up_percent'] . '%'; ?>
    на это
    <?php print $results['up']; ?>
     
  5. tolka

    tolka Новичок

    С нами с:
    2 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Вот, нашел в первом файле
    Код (Text):
    1.  
    2. function rate_get_results($content_type, $content_id, $widget_id) {
    3.   global $user;
    4.  
    5.   $widgets = variable_get(RATE_VAR_WIDGETS, array());
    6.   $widget = $widgets[$widget_id];
    7.   $criteria = array(
    8.     'entity_type' => $content_type,
    9.     'entity_id' => $content_id,
    10.     'tag' => $widget->tag,
    11.     'value_type' => $widget->value_type,
    12.   );
    13.  
    14.   // Check if we should use the source translation.
    15.   if ($widget->use_source_translation) {
    16.     $criteria['entity_id'] = _rate_get_source_translation($criteria['entity_type'], $criteria['entity_id']);
    17.   }
     
  6. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    А помогло, то что я сказал заменить?
    Ещё покажи что выведет var_dump($results); // это в сюда например вставь <?php var_dump($results); print $results['up_percent'] . '%'; ?>
     
  7. tolka

    tolka Новичок

    С нами с:
    2 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Да спасибо большое за помощ, все заработало! :) Остальсь ксс подправить и все очень здорово будет.
    Оказывается все было еще более просто. Убрав параметр "percent" счисление автоматически стало стандартным? я правильно понимаю?
    [​IMG]
     
  8. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    В массиве (php.net/manual/ru/language.types.array.php) $result был ключ up и down который помечен (в документации выходных параметров пункт 3 вашего сообщения) как: "Number of up votes. Only available for thumbs up / down." значит что там содержится кол-во проголосовавших за и против.
    По простому нужно было убрать percent.
     
  9. tolka

    tolka Новичок

    С нами с:
    2 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    аааа, я понял, разобрался. Спасибо вам огромное за помощь!