Категории
[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.'&q='.$id.'&t='.$ip.'&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 зарыты
Помогитеее...
Источник
|