Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

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

Что бы вместо кружков были звездочки. Может кто-то с этим сталкивался. Заранее спасибо! Версия 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

Надіслати
Поділитися на інших сайтах


Надіслати
Поділитися на інших сайтах

  • 6 months later...
  • 6 months later...

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

 

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

<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 year later...
  • 1 year later...

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

 

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

<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 months later...

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

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

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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.