За последние 24 часа нас посетил 23191 программист и 1699 роботов. Сейчас ищут 1637 программистов ...

Плагин голосования

Тема в разделе "Сделайте за меня", создана пользователем Shuhra, 8 июл 2016.

  1. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    Помогите изменить плагин голосования, чтобы вместо пяти звезд выводилось только один. В данном коде вместо звезд цифра 1, никак не могу убрать остальные четыре единицы.

    Отблагодарю рублем кто поможет

    Вот код:
    PHP:
    1. <?php
    2. // No direct access
    3. defined('_JEXEC') or die;
    4. jimport('joomla.plugin.plugin');
    5. class plgContentExtraVote extends JPlugin
    6. {
    7.     protected $article_id;
    8.     public function __construct(& $subject, $config)
    9.     {
    10.         parent::__construct($subject, $config);
    11.         $this->loadLanguage();  
    12.         $this->view = JRequest::getCmd('view');
    13.     }  
    14.     public function onContentBeforeDisplay($context, &$article, &$params, $limitstart = 1)
    15.     {
    16.         if (strpos($context, 'com_content') !== false) {
    17.                 $this->article_id = $article->id;
    18.                 $this->ExtraVotePrepare($article, $params);
    19.                 if ( $this->params->get('display') == 0  )
    20.             {
    21.                 $hide  = $this->params->get('hide', 1);
    22.                     if ( $hide != 1 || $this->view == 'article' ) {
    23.                     $article->xid = 0;
    24.                     return $this->ContentExtraVote($article, $params);
    25.                 }
    26.             }
    27.         }
    28.     }
    29.     protected function ContentExtraVote(&$article, &$params)
    30.     {    
    31.         $rating_count=$rating_sum=0;
    32.         $html='';
    33.         if ($params->get('show_vote'))
    34.         {
    35.             $db    = JFactory::getDBO();
    36.             $query='SELECT * FROM #__content_extravote WHERE content_id='.$this->article_id.' AND extra_id = 0';
    37.             $db->setQuery($query);
    38.             $vote=$db->loadObject();  
    39.             if($vote) {
    40.                 $rating_sum = $vote->rating_sum;
    41.                 $rating_count = intval($vote->rating_count);
    42.             }  
    43.                 $html .= $this->plgContentExtraVoteStars( $this->article_id, $rating_sum, $rating_count, $article->xid );
    44.         }
    45.         return $html;
    46.     }
    47.     protected function plgContentExtraVoteStars( $id, $rating_sum, $rating_count, $xid )
    48.     {
    49.         $document = JFactory::getDocument();
    50.         if ( $this->params->get('css', 1) ) :
    51.             $document->addStyleSheet(JURI::root(true).'/plugins/content/extravote/assets/extravote.css');
    52.         endif;  
    53.         $document->addScript(JURI::root(true).'/plugins/content/extravote/assets/extravote.js');
    54.         global $plgContentExtraVoteAddScript;
    55.         $show_counter = $this->params->get('show_counter',1);
    56.         $show_rating  = $this->params->get('show_rating',1);
    57.         $rating_mode  = $this->params->get('rating_mode', 1);
    58.         $show_unrated = $this->params->get('show_unrated',1);
    59.         $rating  = 0;
    60.         if(!$plgContentExtraVoteAddScript){
    61.             $document->addScriptDeclaration("
    62.                var ev_basefolder = '".JURI::base(true)."';
    63.                var extravote_text=Array('".
    64.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_NO_AJAX')."','".
    65.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOADING')."','".
    66.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_THANKS')."','".
    67.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOGIN')."','".
    68.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_RATED')."','".
    69.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES')."','".
    70.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE')."','".
    71.                     JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_RATING').
    72.                 "');
    73.            ");
    74.             $plgContentExtraVoteAddScript = 1;
    75.         }
    76.         if( $rating_count!=0 ) {
    77.             $rating  = ($rating_sum / intval( $rating_count ));
    78.         } elseif( $show_unrated == 0 ) {
    79.             $show_counter = -1;
    80.             $show_rating  = -1;
    81.         }
    82.         $container = 'div';
    83.         $class     = 'extravote';
    84.         if( (int)$xid ) {
    85.             if ( $show_counter == 2 ) $show_counter = 0;
    86.             if ( $show_rating == 2 ) $show_rating = 0;
    87.             $container = 'span';
    88.             $class     = 'extravote-small';
    89.         } else {
    90.             if ( $show_counter == 3 ) $show_counter = 0;
    91.             if ( $show_rating == 3 ) $show_rating = 0;
    92.         }
    93.         $stars = $this->params->get('stars',2);
    94.         $spans = '';
    95.         for ($i=0,$j=5/$stars; $i<$stars; $i++,$j+=5/$stars) :
    96.             $spans .= "
    97.      <span class=\"extravote-star\"><a href=\"javascript:void(null)\" onclick=\"javascript:JVXVote(".$id.",".$j.",".$rating_sum.",".$rating_count.",'".$xid."',".$show_counter.",".$show_rating.",".$rating_mode.");\" title=\"".JTEXT::_('PLG_CONTENT_EXTRAVOTE_RATING_'.($j*10).'_OUT_OF_5')."\" class=\"ev-".($j*10)."-stars\">1</a></span>";
    98.         endfor;
    99.         $html = "
    100. <".$container." class=\"".$class."\">
    101.  <span class=\"extravote-stars\">
    102. <span id=\"rating_".$id."_".$xid."\" class=\"current-rating\" style=\"width:".round($rating*20)."%;\"></span>"
    103.     .$spans."
    104.  </span>
    105.  <span class=\"extravote-info\" id=\"extravote_".$id."_".$xid."\">";
    106.           if ( $show_rating > 0 ) {
    107.             if ( $rating_mode == 0 ) {
    108.                 $rating = round($rating*20) . '%';
    109.             } else {
    110.                 $rating = number_format($rating,2);
    111.             }
    112.             $html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_RATING', $rating);
    113.         }
    114.           if ( $show_counter > 0 ) {
    115.             if($rating_count!=1) {
    116.                 $html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES', $rating_count);
    117.             } else {
    118.                 $html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE', $rating_count);
    119.             }
    120.         }
    121.         $html .="</span>";
    122.         $html .="
    123. </".$container.">";
    124.         return $html;
    125.     }
    126.     protected function ExtraVotePrepare( $article, &$params )
    127.     {
    128.        if (isset($this->article_id)) {
    129.            $extra = $this->params->get('extra', 1);
    130.             $main  = $this->params->get('main', 1);
    131.            if ( $extra != 0 ) {
    132.                  $regex = "#{extravote\s*([0-9]+)}#s";
    133.             if ( $this->view != 'article' ) {
    134.                     if ( $extra == 2 ) {
    135.                         $article->introtext = preg_replace( $regex, '', $article->introtext );
    136.                     } else {
    137.                         $article->introtext = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->introtext );
    138.                     }
    139.                 } else {
    140. //                   $this->article_id = $article->id;
    141.                      $article->text = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->text );
    142.                }
    143.            }
    144.            if ( $main != 0 ) {
    145.                 if ( $main == 2 && $this->view != 'article')
    146.                {
    147.                      $article->introtext = preg_replace( '#{mainvote}#', '', $article->introtext );
    148.                } else {
    149.                    $this->article_id = $article->id;
    150.                     if ( $this->view == 'article' ) {
    151.                         $article->text = preg_replace_callback( '#{mainvote}#', array($this,'plgContentExtraVoteReplacer'), $article->text );
    152.                     } else {
    153.                         $article->introtext = preg_replace_callback( '#{mainvote}#', array($this,'plgContentExtraVoteReplacer'), $article->introtext );
    154.                     }
    155.                }
    156.            }
    157.            if ( $this->params->get('display') == 1 )  {
    158.                $article->xid = 0;
    159.                 if ( $this->view == 'article' ) {
    160.                    $article->text .= $this->ContentExtraVote($article, $params);
    161.                 } elseif ( $this->params->get('hide') == 0 ) {
    162.                    $article->introtext .= $this->ContentExtraVote($article, $params);
    163.                 }
    164.            }
    165.        }
    166.     }
    167.     protected function plgContentExtraVoteReplacer(&$matches )
    168.     {
    169.           $db    = JFactory::getDBO();
    170.         $xid = 0;
    171.         if (isset($matches[1])) {
    172.             $xid = (int)$matches[1];
    173.         }
    174.           $cid = 0;
    175.         if ( $this->params->get('article_id') || $xid == 0 ) {
    176.             $cid = $this->article_id;
    177.         }
    178.           $rating_sum = 0;
    179.           $rating_count = 0;
    180.         $db->setQuery('SELECT * FROM #__content_extravote WHERE content_id='.(int)$cid.' AND extra_id='.(int)$xid);
    181.           $vote = $db->loadObject();
    182.           if($vote) {
    183.             if($vote->rating_count!=0)
    184.                 $rating_sum = $vote->rating_sum;
    185.                 $rating_count = intval($vote->rating_count);
    186.         }
    187.         if ( $xid == 0 ) :
    188.             global $extravote_mainvote;
    189.             $extravote_mainvote .= 'x';
    190.             $xid = $extravote_mainvote;
    191.         endif;    
    192.         return $this->plgContentExtraVoteStars( $cid, $rating_sum, $rating_count, $xid );
    193.     }
    194. }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    artoodetoo нравится это.
  3. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    Все формируется в этом файле, так-как все его касающиеся файлы тупо удалял и все оставалось также - пять едениц (1 1 1 1 1 1 (черная единица количество проголосовавших) )
    Вот кусок кода, где можно заменить однерку допустим на ПРИВЕТ - соответственно выйдет так -
    ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ 1
    1. $stars = $this->params->get('stars',2);
    2. $spans = '';
    3. for ($i=0,$j=5/$stars; $i<$stars; $i++,$j+=5/$stars) :
    4. $spans .= "
    5. <span class=\"extravote-star\"><a href=\"javascript:void(null)\" onclick=\"javascript:JVXVote(".$id.",".$j.",".$rating_sum.",".$rating_count.",'".$xid."',".$show_counter.",".$show_rating.",".$rating_mode.");\" title=\"".JTEXT::_('PLG_CONTENT_EXTRAVOTE_RATING_'.($j*10).'_OUT_OF_5')."\" class=\"ev-".($j*10)."-stars\">1</a></span>";
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тебе надо вместо пяти повторений было одно? В коде что я процитировал замечаешь ответ на свой вопрос?
     
  5. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    Пробовал менять неоднократно.
    Делал так
    for ($i=0,$j=1/$stars; $i<$stars; $i++,$j+=1/$stars)
    и ничего не меняется
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тогда удали цикл полностью с его содержимым и посмотри если пропадёт вывод рейтинга.
    Так можешь методом тыка удалять по частям и смотреть что за что отвечает.
     
  7. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    пробовал удалять
    в большинстве случаев сайт перестает работать
    --- Добавлено ---
    вот сам плагин
     

    Вложения:

  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Используй отладку, за тебя мало кто будет в этом ковыряться.
     
  9. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    Отблагодарю рублем кто поможет
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Shuhra Могу перенести тему в раздел free-lance, вот за деньги человеку будет проще зайти на твой сервер и быстро по своему опыту на живой системе всё сделать как тебе надо. Вместо того чтобы мы тут гадали.
     
  11. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    хорошо
     
  12. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    как отлаживать php в хроме?
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Shuhra в google chrome можно делать отладку html, css, js. Но PHP работает на севере и нужен например xdebug и ide для удобства.
    В моём первом сообщении посмотри три ссылки, там всё про отладку, вручную и с помощью IDE.
     
  14. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Shuhra, а что там по цене, говоришь?
     
  15. Alsagen

    Alsagen Новичок

    С нами с:
    10 июл 2016
    Сообщения:
    2
    Симпатии:
    0
    @mr.akv Разрешите я бесплатно помогу? Все же там совсем совсем чуть-чуть поправить.
    Не стал писать решение, т.к. Вы уже предложили свои услуги.
     
  16. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
  17. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Внимательнее!
    Вы делаете не то, что нужно.
    И так смотря по вашему коду я его и взял. Если запустить пример мы увидим
    PHP:
    1. $stars = 5; // количество выбранных звезд
    2. for($i = 0, $j = 5 / $stars; $i < $stars; $i++, $j+=5 / $stars) {
    3.     echo nl2br($i . ' - ' . $j * 10 . '
    4.        ');
    5. }
    Вывод:
    0 - 10
    1 - 20
    2 - 30
    3 - 40
    4 - 50

    Следовательно $j рейтинг.
    Собственно загвостка тут $i < $stars; за место $stars нужно поставить 1 еденицу, так как 0 < 1 выведит одну звезду, даже если выбрано 5 каким-то странным образом :)
     
    Shuhra нравится это.
  18. Alsagen

    Alsagen Новичок

    С нами с:
    10 июл 2016
    Сообщения:
    2
    Симпатии:
    0
    )) Ну собственно уже ответили.
     
    #18 Alsagen, 10 июл 2016
    Последнее редактирование: 10 июл 2016
  19. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Alsagen, долго думаешь)
     
  20. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    @rodent90
    جزاك الله خير , что значит - Да воздаст тебе Аллах только благое!
    Получилось - 1 1 (голоса тоже считаются исправно)
    Только вот друг еще одна загвоздка появилась, может поможешь:
    Включаю стили и появляются 5 звезд ( ну вместо тех однерок). Только теперь вместо 5 активных звезд - активная только 1.
    Как убрать остальные четыре неактивные звезды?

    P.S.
    Закрепляю изображение звезды - изображение одно. Режима три - без голоса, при наведении, проголосовали.
    Одно изображение - получается оно двигается вверх вниз, как-то так наверно.
    star.png
     
  21. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Shuhra посмотри HTML код, как эти звёзды там выглядят
     
  22. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    <span class="extravote-stars">
    <span id="rating_5_0" class="current-rating" style="width:20%;"></span>
    <span class="extravote-star"><a href="javascript:void(null)" onclick="javascript:JVXVote(5,1,3,3,'0',1,0,1);" title="1 из 5" class="ev-10-stars">1</a></span>
    </span>
     
  23. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    надо смотреть стили, в них должно быть прописана картинка звёзд, где в живую посмотреть?
     
  24. Shuhra

    Shuhra Новичок

    С нами с:
    8 июл 2016
    Сообщения:
    38
    Симпатии:
    1
    Картинка одна, только она размножается в 5
    .extravote-stars, .extravote-star a:hover, .extravote-stars .current-rating {
    1. background-image: url(../images/star.png)!important;
    2. background-color: transparent!important;
    3. background-repeat: repeat-x!important;
    }

    .extravote-stars {
    1. font-size: 1em;
    2. overflow: hidden;
    3. width: 125px;
    }

    .extravote-stars, .extravote-star a, .extravote-info, .extravote-stars .current-rating {
    1. height: 25px;
    2. line-height: 25px;
    }

    .extravote-stars, .extravote-info {
    1. display: inline-block;
    2. margin: 0!important;
    3. padding: 0!important;
    4. position: relative;
    5. vertical-align: middle;
    --- Добавлено ---
    Сейчас показывает так * * * * * 3
     
  25. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вот до таких размеров похоже размножается, попробуй его уменьшить
     
    Shuhra нравится это.