Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Оценка товара в звездах


 Поделиться

Рекомендованные сообщения

Добрый вечер. Подскажите, пожалуйста, как сделать оценку товара в звездах?

Что бы вместо кружков были звездочки. Может кто-то с этим сталкивался. Заранее спасибо! Версия Opencart 1.5.4.1. Вот код:

<b><?php echo $entry_rating; ?></b> <span><?php echo $entry_bad; ?></span> 
<input type="radio" name="rating" value="1" />
 
<input type="radio" name="rating" value="2" />
 
<input type="radio" name="rating" value="3" />
 
<input type="radio" name="rating" value="4" />
 
<input type="radio" name="rating" value="5" />
 <span><?php echo $entry_good; ?></span>

post-27553-0-38356700-1357650637_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах


Ссылка на комментарий
Поделиться на других сайтах

http://opencartforum...__fromsearch__1 Может это подойдет

И вот еще вариант дешевле http://www.opencart...._download_id=29

Нет, совсем не то. Но спасибо = )

Ссылка на комментарий
Поделиться на других сайтах


Понял, думал есть бесплатное решение. Обойдусь пока тем что есть. Спасибо за помощь, господа! = )

Ссылка на комментарий
Поделиться на других сайтах


  • 6 месяцев спустя...
  • 6 месяцев спустя...

Как вариант, можете попробовать следующий код.

 

В шаблоне заменяем код, указанные вначале поста, на следующий

<b><?php echo $entry_rating; ?></b><br />
<div class="rating">
   <div class="rate">
      <div class="rate-1"></div>
      <div class="rate-2"></div>
      <div class="rate-3"></div>
      <div class="rate-4"></div>
      <div class="rate-5"></div>
   </div>
   <span>
      <span class="rate-1"><?php echo $entry_bad; ?></span>
      <span class="rate-2"><?php echo $entry_not_bad; ?></span>
      <span class="rate-3"><?php echo $entry_normal; ?></span>
      <span class="rate-4"><?php echo $entry_good; ?></span>
      <span class="rate-5"><?php echo $entry_very_good; ?></span>
   </span>
   <input type="hidden" name="rating" value="0" />
</div>
                    
<script type="text/javascript"><!--
$(document).ready(function() {
   $('.rate div').mouseenter( function() {
      var rate = $(this).attr('class').slice(-1);
      changeRate($(this).parent(), rate);
   }).click( function() {
      var rate = $(this).attr('class').slice(-1);
      var curVal = $('input[name=rating]').val();
      rate = (rate != curVal) ? rate : 0;
      $('input[name=rating]').val(rate);
      changeRate($(this).parent(), rate);
   });
                        
   $('.rate').mouseleave( function() {
      var rate = $('input[name=rating]').val();
      changeRate($(this), rate);
   });
                        
   changeRate = function(obj, rate) {
      var position = rate * 18;
      obj.css('background-position', '0px -' + position + 'px');
                            
      $('.rating > span > span').each( function() {
         $( this ).css('display', 'none');
      });
                            
      $('.rating > span > span.rate-' + rate).css('display', 'inline-block');
   }
});//--></script>

Кроме того, нужно найти строку

data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),

и заменить ее на

data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']').val() ? $('input[name=\'rating\']').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),

В таблицу стилей добавляем:

#tab-review .rating {
   display: inline-block;
}

#tab-review .rating > div {
   display: inline-block;
   float: left;
   width: 85px;
   height: 18px;
   margin-right: 10px;
   background: url('../image/stars.png') 0 0 no-repeat transparent;
}

#tab-review .rating > div > div {
   float: left;
   width: 15px;
   height: 15px;
   margin: 2px 2px 0 0;
   cursor: pointer;
}

#tab-review .rating > span {
   display: inline-block;
   font: normal 12px/18px Arial, Helvetica, sans-serif;
}

#tab-review .rating > span > span {
   display: none;
}

В контроллер добавляем:

$this->data['entry_bad'] = $this->language->get('entry_bad');
$this->data['entry_not_bad'] = $this->language->get('entry_not_bad');
$this->data['entry_normal'] = $this->language->get('entry_normal');
$this->data['entry_good'] = $this->language->get('entry_good');
$this->data['entry_very_good'] = $this->language->get('entry_very_good');

Там уже должны быть две строки для entry_bad и entry_good. Их можно просто заменить.

 

 

В файле локализации заменяем:

$_['entry_good']  = 'Хорошо';
$_['entry_bad']   = 'Плохо';

на

$_['entry_bad']         = 'ужасно';
$_['entry_not_bad']     = 'плохо';
$_['entry_normal']      = 'средне';
$_['entry_good']        = 'хорошо';
$_['entry_very_good']   = 'отлично';

Во вложении спрайт со звездочками.

 

P.S. Писал код за пару часов, так что за то, что это оптимальное решение не ручаюсь.

post-678668-0-16284300-1391024398_thumb.png

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
  • 1 год спустя...

Как вариант, можете попробовать следующий код.

 

В шаблоне заменяем код, указанные вначале поста, на следующий

<b><?php echo $entry_rating; ?></b><br />
<div class="rating">
   <div class="rate">
      <div class="rate-1"></div>
      <div class="rate-2"></div>
      <div class="rate-3"></div>
      <div class="rate-4"></div>
      <div class="rate-5"></div>
   </div>
   <span>
      <span class="rate-1"><?php echo $entry_bad; ?></span>
      <span class="rate-2"><?php echo $entry_not_bad; ?></span>
      <span class="rate-3"><?php echo $entry_normal; ?></span>
      <span class="rate-4"><?php echo $entry_good; ?></span>
      <span class="rate-5"><?php echo $entry_very_good; ?></span>
   </span>
   <input type="hidden" name="rating" value="0" />
</div>
                    
<script type="text/javascript"><!--
$(document).ready(function() {
   $('.rate div').mouseenter( function() {
      var rate = $(this).attr('class').slice(-1);
      changeRate($(this).parent(), rate);
   }).click( function() {
      var rate = $(this).attr('class').slice(-1);
      var curVal = $('input[name=rating]').val();
      rate = (rate != curVal) ? rate : 0;
      $('input[name=rating]').val(rate);
      changeRate($(this).parent(), rate);
   });
                        
   $('.rate').mouseleave( function() {
      var rate = $('input[name=rating]').val();
      changeRate($(this), rate);
   });
                        
   changeRate = function(obj, rate) {
      var position = rate * 18;
      obj.css('background-position', '0px -' + position + 'px');
                            
      $('.rating > span > span').each( function() {
         $( this ).css('display', 'none');
      });
                            
      $('.rating > span > span.rate-' + rate).css('display', 'inline-block');
   }
});//--></script>

Кроме того, нужно найти строку

data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),

и заменить ее на

data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']').val() ? $('input[name=\'rating\']').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),

В таблицу стилей добавляем:

#tab-review .rating {
   display: inline-block;
}

#tab-review .rating > div {
   display: inline-block;
   float: left;
   width: 85px;
   height: 18px;
   margin-right: 10px;
   background: url('../image/stars.png') 0 0 no-repeat transparent;
}

#tab-review .rating > div > div {
   float: left;
   width: 15px;
   height: 15px;
   margin: 2px 2px 0 0;
   cursor: pointer;
}

#tab-review .rating > span {
   display: inline-block;
   font: normal 12px/18px Arial, Helvetica, sans-serif;
}

#tab-review .rating > span > span {
   display: none;
}

В контроллер добавляем:

$this->data['entry_bad'] = $this->language->get('entry_bad');
$this->data['entry_not_bad'] = $this->language->get('entry_not_bad');
$this->data['entry_normal'] = $this->language->get('entry_normal');
$this->data['entry_good'] = $this->language->get('entry_good');
$this->data['entry_very_good'] = $this->language->get('entry_very_good');

Там уже должны быть две строки для entry_bad и entry_good. Их можно просто заменить.

 

 

В файле локализации заменяем:

$_['entry_good']  = 'Хорошо';
$_['entry_bad']   = 'Плохо';

на

$_['entry_bad']         = 'ужасно';
$_['entry_not_bad']     = 'плохо';
$_['entry_normal']      = 'средне';
$_['entry_good']        = 'хорошо';
$_['entry_very_good']   = 'отлично';

Во вложении спрайт со звездочками.

 

P.S. Писал код за пару часов, так что за то, что это оптимальное решение не ручаюсь.

Привет, а в каком файле найти?

 

data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),

Ссылка на комментарий
Поделиться на других сайтах


  • 2 месяца спустя...

Воспользовался вариантом Qvart. Спасибо!

ну и плюсанул бы!!

Qvart - отличный вариант, плюсанул, спасибо!

Картинку твою правда сжал - вместо 4кБ она весит 680байт))) tinypng.com рулит...

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.