Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Звездный рейтинг

Прикрутил на сайт звездный рейтинг на аяксе

http://masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/

Как это дело происходило

Устанавливаем звездный рейтинг для продуктов.

1. открываем файл includes\top.php в нево вставляем строчку

  require_once ('mr/_drawrating.php');

2. открываем файл modules\product_info.php в него после строчки

  $info->assign('PRODUCTS_NAME', $product->data['products_name']);

  вставляем

  $info->assign('PRODUCTS_RATING', rating_bar($product->data,5));


3. открываем файл includes\classes\product.php и после строчки

  'PRODUCTS_ID'=> @$array['products_id'],

  вставляем

  'PRODUCTS_RATING'=> rating_bar(@$array['products_id'],5),

4. открываем файл темы themes\ваша тема\module\product_info\product_info_v1.html

  туда вставляем

  <div id="container">{$PRODUCTS_RATING}</div>

  открываем остальные файлы темы где идет листинг товаров

  featured.html
  featured_products_category.html
  featured_products_default.html
  new_products_category.html
  new_products_default.html
  new_products_overview.html
  product_listing\product_listing_columns.html и т.д. все файлы в которых есть листинги товаров

  туда вставляем
 
  <div id="container">{$module_data.PRODUCTS_RATING}</div>


5. разпаковываем папку mr архива в корень

6. открываем файл

  mr\_config-rating.php

  в нем прописываем настройки базы

7. Создаем таблицу в базе данных

  CREATE TABLE `ratings` (
  `id` varchar(11) NOT NULL,
  `total_votes` int(11) NOT NULL default 0,
  `total_value` int(11) NOT NULL default 0,
  `used_ips` longtext,
  PRIMARY KEY  (`id`)
  ) TYPE=MyISAM AUTO_INCREMENT=3;

8. подключаем джава скрипты к магазину

  (можна в файле темы general.js.php)
 
  <script type="text/javascript" language="javascript" src="mr/js/behavior.js"></script>
  <script type="text/javascript" language="javascript" src="mr/js/rating.js"></script>

9. редактируем файл стиля темы

  в нево вставляем

#container {
  padding: 0px;
  height: 14px;
      margin: 0;
      border-top: 1px dotted #D5D8F6;
  }
.ratingblock {
display:block;
}

.loading {
height: 14px;
background: url(im/working.gif) no-repeat 50% 50%;
}

.unit-rating { /* the UL */
list-style:none;
margin: 0px;
padding:0px;
height: 14px;
position: relative;
background: url(im/star.gif) repeat-x top left;
}

.unit-rating li{
  text-indent: -90000px;
padding:0px;
margin:0px;
/*\*/
float: left;
/* */
}

.unit-rating li a {
outline: none;
display:block;
width:14px;
height: 14px;
text-decoration: none;
text-indent: -9000px;
z-index: 20;
position: absolute;
padding: 0px;
}

.unit-rating li a:hover{
background: url(im/star.gif) left center;
z-index: 2;
left: 0px;
}

.unit-rating a.r1-unit{left: 0px;}
.unit-rating a.r1-unit:hover{width:14px;}
.unit-rating a.r2-unit{left:14px;}
.unit-rating a.r2-unit:hover{width: 28px;}
.unit-rating a.r3-unit{left: 28px;}
.unit-rating a.r3-unit:hover{width: 42px;}
.unit-rating a.r4-unit{left: 42px;}
.unit-rating a.r4-unit:hover{width: 56px;}
.unit-rating a.r5-unit{left: 56px;}
.unit-rating a.r5-unit:hover{width: 70px;}
.unit-rating a.r6-unit{left: 70px;}
.unit-rating a.r6-unit:hover{width: 84px;}
.unit-rating a.r7-unit{left: 84px;}
.unit-rating a.r7-unit:hover{width: 98px;}
.unit-rating a.r8-unit{left: 98px;}
.unit-rating a.r8-unit:hover{width: 112px;}
.unit-rating a.r9-unit{left: 12px;}
.unit-rating a.r9-unit:hover{width: 126px;}
.unit-rating a.r10-unit{left: 126px;}
.unit-rating a.r10-unit:hover{width: 140px;}

.unit-rating li.current-rating {
background: url(im/star.gif) left bottom;
position: absolute;
height: 14px;
display: block;
text-indent: -9000px;
z-index: 1;
}

.voted {color:#999;  font-size: 10px; line-height: 14px;}
.thanks {color:#36AA3D;  font-size: 10px; line-height: 14px;}
.static {color:#5D3126;  font-size: 10px;  margin-top: 2px;  line-height: 14px;    }



  Не забываем править в файле пути к картинкам

  картинки прилагаются в архиве.

  Вот вроде бы и все!
 

Прошу строго не судить, потому как я не програмер.

Может кто везметса и зделает это все в виде плагина, или даже встроит в движок полностью


Интересно очень только вопрос со всеми шаблонами работает?
Кто нибудь пробовал тестить?


Работать будет с любыми шаблонами.


up

нужно в плагин переделать



up

нужно в плагин переделать

Если можно, и будет легче в установке )))


Видел такое решение на xtc-modified.
Надо действительно плагином сделать. У меня где-то плагин не с рейтингом, а просто + и -, но не могу найти...

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


вместо mr.rar  этого  идёт  index.php, закачал переименовал распаковал, всё прописал но пишет ошибку
Fatal error: Call to undefined function rating_bar() in /home/моя база/public_html/мой сайт/includes/classes/product.php on line 393

после этого  файл includes\top.php    require_once ('mr/_drawrating.php');  вставил в другое место, всё заработало, но футер полез вверх .....


пробую на шаблоне paradise



нет возможности  скачать  mr.rar  вместо  этого  идёт  index.php, замените файл для закачки или укажите где скачать,  заранее спасибо

Пересохронил в zip_е


всё заработало, но есть ошибки футер пошёл вверх, где это  в style.scc  ошибка или в  top.php ???

Разобрался !  удалил из стиля темы

#container {
  padding: 0px;
  height: 14px;
      margin: 0;
      border-top: 1px dotted #D5D8F6;
  }


и всё стало норма, всё на месте и работает!


А виде плагина не кто не сделал? :)



А виде плагина не кто не сделал? :)



Поддерживаю вопрос.


Если ZAP не возьмется сделать плагином, то реализую. Там то и нужно -закинуть все в один файл и повесить на фильтр какой-то в карточке товара


думал уже над этим, но тут ка бы плагин вроде не подходит, так как нужно выводить на всех страницах, много фильтров прийдетса использовать

думал вывести методом написания плагина в смарти, по примеру вывода новых или рекомендованых товаров


П.С. Если честно то сейчас очень времени маловато, последний шаб делал 2 месеца, очень долго, и к тому он еще не совсем готовый


ух..тема ушла..а вопрос стал актуальным, так как у гугла появилась микроразметка, и необходим рейтинг...кто нибудь возьметься реализовать плагином...?


ладно, без плагина установил...подскажите плиз как и куда внести кориктивы в код, что бы на выходе в карточке товара был код такого вида:

<div id="container"><div class="ratingblock"><div id="unit_long18"><table cellspacing="0"><tbody><tr itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"><td width="80px">  <ul id="unit_ul18" class="unit-rating" style="width:70px;">    <li class="current-rating" style="width:59.5px;"> пппRating:4.25/5</li><li><a href="mr/db.php?j=1&q=18&t=66.249.88.238&c=5" title="1 из 5" class="r1-unit rater" rel="nofollow">
<span itemprop="worstRating">1</span></a></li><li><a href="mr/db.php?j=2&q=18&t=66.249.88.238&c=5" title="2 из 5" class="r2-unit rater" rel="nofollow">2</a></li><li><a href="mr/db.php?j=3&q=18&t=66.249.88.238&c=5" title="3 из 5" class="r3-unit rater" rel="nofollow">3</a></li><li><a href="mr/db.php?j=4&q=18&t=66.249.88.238&c=5" title="4 из 5" class="r4-unit rater" rel="nofollow">4</a></li><li><a href="mr/db.php?j=5&q=18&t=66.249.88.238&c=5" title="5 из 5" class="r5-unit rater" rel="nofollow">
<span itemprop="bestRating">5</span></a></li>  </ul>  </td><td>  <span class="static">
<span itemprop="ratingValue">Рейтинг: <strong> 4.3</strong></span>
<span itemprop="ratingCount">(Голосов:4)</span>  </span>  </td></tr></tbody></table></div></div></div>

необходимо для google разметки...


Нашел файл где нужно проставить

<?php
/*
Page:          _drawrating.php
Created:        Aug 2006
Last Mod:      Mar 18 2007
The function that draws the rating bar.
---------------------------------------------------------
ryan masuga, masugadesign.com
ryan@masugadesign.com
Licensed under a Creative Commons Attribution 3.0 License.
http://creativecommons.org/licenses/by/3.0/
See readme.txt for full credit details.
--------------------------------------------------------- */


define('TXT_RATING', 'Рейтинг:');
define('TXT_GURENTLI', 'Rating:');
define('TXT_GOLOS', 'Голосов:');
define('TXT_OK', 'Спасибо за Ваш голос!');
define('TXT_OF', 'из');


function rating_bar($id,$units='',$static='') {

require('_config-rating.php'); // get the db connection info

//set some variables
$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
if (!$static) {$static = FALSE;}

// get votes, values, ips for the current rating bar
$query=mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error());


// insert the id in the DB if it doesn't exist already
// see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#comment-121
if (mysql_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = mysql_query($sql);
}

$numbers=mysql_fetch_assoc($query);


if ($numbers['total_votes'] < 1) {
$count = 0;
} else {
$count=$numbers['total_votes']; //how many votes total
}
$current_rating=$numbers['total_value']; //total number of rating added together and stored

// determine whether the user has voted, so we know how to draw the ul/li
$voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' "));

// now draw the rating bar
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);


      $rater ='';
      $rater.='<div class="ratingblock">';
      $rater.='<div id="unit_long'.$id.'">';
      $rater.='<table cellspacing="0"><tr><td width="80px">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $rater.='    <li class="current-rating" style="width:'.$rating_width.'px;"> '. TXT_GURENTLI .$rating2.'/'.$units.'</li>';
      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
          if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="mr/db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' '.TXT_OF.' '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
          }
      }
      $ncount=0; // resets the count
      $rater.='  </ul>';
      $rater.='  </td><td>';
      $rater.='  <span class="static"';
  $rater.='  <span itemprop="ratingValue"';
      $rater.='> '. TXT_RATING .' <strong> '.$rating1.'</strong>';
  $rater.='  </span>';
  $rater.='<span itemprop="ratingCount">';
  $rater.='> '.TXT_GOLOS.'('.$count.')';
  $rater.='  </span>';
  $rater.='  </span>';
      $rater.='  </td></tr></table>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
}
?>

Теперь не могу понять где прописать
<span itemprop="worstRating">1</span> - Минимальная оценка
и
<span itemprop="bestRating">5</span> - максимальная оценка

    Они где то в этих php зарыты

Помогитеее...




Источник



Copyright ShopOS