UMIhelp

Разработка сайта на UMI.CMS => Шаблоны TPL => Тема начата: thefate от 17 Марта 2011, 09:31:02

Название: Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 09:31:02
Друзья как организовать рейтинг страниц.

Прочел статью на wiki umi http://wiki.umisoft.ru/Рейтинг_страниц

в принципе то что мне нужно. На определенных страницах делаю ссылки типа +1 -1 и получаестся рейтинг данной страницы.

Но вот что-то не фига этот способ не работает. :(

Смотрите вот к примеру ссылка на каталог фирм — http://www.happylipetsk.ru/catalog/car/
види там +1 -1 вот когда на них жмешь теоретически должно всплывать ява-скрипт окно с текстом что голос принят. Но такого не происходит :(



 
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 09:37:39
какая у вас версия umi&
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 09:42:23
версия 2.8
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 10:14:42
у меня все заработало, у вас на каком месте проблема? ссылки для голосования появились, при нажатии что происходит?
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 10:32:56
проблема при нажатии на +1 или -1
Не происходит никаких действий :(

Java-Скрипт куда нужно вставлять? Между тегами HEAD или же BODY?

Да и еще, это все я делаю в шаблонах новостей.

$FORMS['lastlist_item'] = <<<END

[b]<div style="float:right; font-size: 10px; color:#666;"><strong><a href="#" onclick="javascript: return rate('%id%', 0);" style="color: #b22222; font-size: 12px; padding-right:10px;">&ndash;1</a> <a href="#" onclick="javascript: return rate('%id%', 1);" style="color: #9acd32; font-size: 12px;">+1</a></strong><br />Рейтинг: %rate_sum% &nbsp;&nbsp; Голосов: %rate_voters%</div> [/b]
%data getProperty(%id%, 'anons_pic', 'news.anons.home')%
<a href="%link%" class="bigtitle">%header%</a>
<br /><span style="font-size: 12px;">%anons%</span>
</div>
<div class="comments">
<a href="%link%#comments" class="date">Комментарии (%comments countComments(%id%)%)</a> &nbsp;&nbsp;&nbsp; <a href="%link%#add_comment" class="date">Добавить комментарий</a>

END;

$FORMS['view'] = <<<END
[b]<div style="float:right; font-size: 10px; color:#666;"><strong><a href="#" onclick="javascript: return rate('%id%', 0);" style="color: #b22222; font-size: 12px; padding-right:10px;">&ndash;1</a> <a href="#" onclick="javascript: return rate('%id%', 1);" style="color: #9acd32; font-size: 12px;">+1</a></strong><br />Рейтинг: %rate_sum% &nbsp;&nbsp; Голосов: %rate_voters%</div> [/b]
<div style="clear: both; display: block; width: 100%;">
%data getProperty(%id%, 'publish_pic', 'news.view')%

%data getProperty(%id%, 'address', 'HL_data_text')%<br />
%data getProperty(%id%, 'phone', 'HL_data_text')%<br />
%data getProperty(%id%, 'site', 'HL_data_link')%
%data getProperty(%id%, 'email', 'HL_data_email')%

</div>
<br />
<div style="clear: both; display: block; width: 100%;">%content%
<img src="/images/blank.gif" alt="" style="background-color: rgb(211, 211, 211);" height="1" width="100%" /><br />
%data getProperty(%id%, 'yandexmaps', 'HL_data_text')%

%news related_links(%id%, 'HL_firm_spisok')%

%comments insert('%id%', 'HL_comment_news')%
</div>

END;
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 10:46:33
ну тогда и начнем проверять с js, если вы пользуетесь firebug или им подобными плагинами к браузерам, то наверно можете отследить рапортует ли браузер об ошибках в js коде

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

потом я бы проверил отзывается ли вообще функция, за комментировать все в функции rate и вставить туда alert('ggg'); чтобы точно увидеть что клик сработал

если сработал тогда идем в шаблон /tpls/vote/rate/default.tpl и проверяем какой он кодировке (желательно чтобы все шаблоны были в utf-8 кодировке, особенно если в шаблоне есть русские буквы)

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

p.s. обычно для первичной разработки я использую notepad++ (кодировку менять удобно и подсветка синтаксиса есть) и mozilla + плагин firebug который позволяет отслеживать большинство ошибок и косяков
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 11:30:14
Сделал все заново, пошагово. Заработало! :)  Спасибо!

Правда вот это как работает я так и не понял

<a href="%link%?order_filter[rate_sum]=0">%name%</a>

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

Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 11:54:22
у большинства макросов выводящих список при формировании этого списка учитываются параметры адресной строки, один из таких параметров order_filter в скобках указывается имя поля по которому делается сортировка а значение может быть 0 или 1 в зависимости от того в каком направлении делать сортировку jn a>я или от я>а.

Поэтому на странице на которой работает например макрос %news lastlist()% , или просто на странице со списком новостей (так как на такой странице этот макрос автоматом заменяет макрос %content%) , или макрос %catalog getObjectList()% или и т.д. наличие параметра ?order_filter[rate_sum]=0 в адресной строке сделает так что объекты списка будут  сортированны по полю rate_sum

соответственно ссылка <a href="%link%?order_filter[rate_sum]=0">сортировать по рейтингу</a> загрузит нам страницу %link%  с параметром сортировки. обычно такие ссылки вставляются в блоки со списком (то есть не блок для оформления элемента списка, а сам блок)

Например в блок шаблона новостей lastlist_block или в шаблоне каталога в блок category_block (если хотите сортировать разделы) или в objects_block (если хотите сортировать объекты каталога)
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 14:34:31
Ясно.

Сделал, но что-то сортировка не происходит :(

http://www.happylipetsk.ru/catalog/car/?order_filter[rate_sum]=0
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 14:48:26
а у вас на сайте все новостями сделано?

просто у новостей по умолчанию сортировка по publish_date
чтобы её отменить надо при вызове макроса (опять же вы скорее всего не прописываете сам макрос он подставляется автоматом и параметры вам неку да вставить, но всеже) если вы вставите макрос и его последний параметр сделаете равным "1", то сортировка заработает (я пробовал на сортировке ?order_filter[h1]=0 , сортировка по полю h1, хотя как вы уже поняли поле можно вставить другое тот же рейтинг), должна заработать, хотя я у себя не проверил, Проверил на каталоге сортирует прекрасно, а новости не сортирует)

загодовок функции lastlist с параметрами (для наглядности)
lastlist($path = "", $template = "default", $per_page = false, $ignore_paging = false, $sDaysInterval = '', $bSkipOrderByTime = false)
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 15:30:12
попробовал сделать так.

К примеру берем страницу http://www.happylipetsk.ru/catalog/photo_video/

Данный список формируется следующим образом.

%news lastlist(%id%, 'HL_firm_spisok', 100)%

Я просто не пойму как этот параметр $bSkipOrderByTime = false подставить в вышеописанный макрос?

Пробывал сделать так %news lastlist(%id%, 'HL_firm_spisok', 100, 1)%

сортировка все равно не работает :(
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 15:33:32
Сделал :)))

Вызов макроса сделал следующим образом

%news lastlist(%id%, 'HL_firm_spisok', 100, 0, '', 1)%

Блин автоматом возникает вопрос следующий… а как сделать чтобы новости уже автоматом по рейтингу выстраивали когда заходишь на страницу?
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 16:00:55
либо подправить макрос вывода новостей, либо сделать свой вывод новостей используя макрос data doSelection он достаточно гибко позволяет делать выборки с сортировками, с условиями и по определенными разделам\типам данных и т.д.

я бы изменил макрос вывода новостей ( то есть скопировал бы его и поменял немного) а потом сделал бы подмену макросу %content чтобы он автоматически определял  что собираются выводиться новости и подставлял этот кастомный макрос, но для тебя будет проще сделать data doSelection
Название: Re:Рейтинг страниц
Отправлено: thefate от 17 Марта 2011, 16:46:09
Спасибо.

А такой момент не пойму опять. Куда записываются данные при голосовании? количество проголосовших и рейтинг для каждой страницы? К примеру чтобы отредактировать рейтинг вручную.
Название: Re:Рейтинг страниц
Отправлено: admin от 17 Марта 2011, 22:27:27
если вы зайдете в шаблоны данных и откроете самый родительский тип страниц "Раздел сайта", то увидите у него эти поля (они невидимые и выводятся серым, а при редактировании страницы вообще не выводятся)

Если хотите их сделать видимыми в админке допишите на странице редактирования этого типа данных параметр ?skip-lock=1 и у вас снимутся ограничения на редактирование системных полей
(!!! но будьте осторожны при удалении или переименовывании английского варианта имени система может работать нестабильно или вообще не работат.... ну на то они и системные)

когда появиться возможность редактировать системные поля просто проставте галочки "видимое" у этих полей и они должны появиться в админке. Да, и не забудьте у группы тоже проставить галочку "видимое"

Название: Re:Рейтинг страниц
Отправлено: thefate от 18 Марта 2011, 08:32:19
сделал поля видимыми… но почему-то при редактировании страницы поля эти не показываются.
Название: Re:Рейтинг страниц
Отправлено: admin от 18 Марта 2011, 09:13:15
только что проверил, действительно не выводятся, в системе они упоминаются в некоторых местах, возможно в файлах или в базе стоит блокировка на отображение их в админке (быстрый покопавшись в коде не смог их вывести, думаю если задаться целью, то это возможно), но всегда можно создать похожую группу и с похожими полями и использовать её и она уже точно будет видна.
Название: Re:Рейтинг страниц
Отправлено: studiarim от 19 Сентября 2011, 00:41:36
Добрый день , а у меня в каталоге , что то не получается , скрипт работает ... firebug пишет
Цитировать
var url = "/vote/json_rate/" + whishId + "/" + mode + "/";
lLib.getInstance().makeRequest(url, handler);
return false;

не могу понять где ошибка ? http://svadbavanape.ru/team1/tosty2/

подскажите плз.
Название: Re:Рейтинг страниц
Отправлено: admin от 19 Сентября 2011, 13:07:02
зашел, под гостем попробовал на главной поголосовать, никаких ошибок в firebag, уже исправили? или может это мне повезло?) или может то что я гость был?
Название: Re:Рейтинг страниц
Отправлено: fadeev от 14 Ноября 2011, 11:40:56
Добрый день!

Пытаюсь вот уже третий день реализовать рейтинг страниц - ничего не получается....((( И сравнивал-проверял и чего только не делал...Единственное что получается постоянно - http://new.ru.umitest.ru/goods/scala_rider/garnitura_bluetooth_na_shlem_scala_rider_g4_russkij_yazyk/

Делал по мануалу...Может знает кто в чем проблема?
Название: Re:Рейтинг страниц
Отправлено: thefate от 14 Ноября 2011, 12:41:39
Добрый день!

Пытаюсь вот уже третий день реализовать рейтинг страниц - ничего не получается....((( И сравнивал-проверял и чего только не делал...Единственное что получается постоянно - http://new.ru.umitest.ru/goods/scala_rider/garnitura_bluetooth_na_shlem_scala_rider_g4_russkij_yazyk/

Делал по мануалу...Может знает кто в чем проблема?

Вставьте вот этот код без изменений, с соблюдением пробелов и отступов.
http://wiki.umisoft.ru/%D0%A0%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86


<?php
 
$FORMS = Array();
 
 
$FORMS['rate_ok'] = <<<END
 
var response = new lLibResponse(%request_id%);
response.rate_sum = "%rate_sum%";
response.rate_voters = "%rate_voters%";
response.current_rating = "%current_rating%";
response.state = "Спасибо! Ваше мнение учтено!";
lLib.getInstance().makeResponse(response);
 
END;
 
 
$FORMS['rate_rated'] = <<<END
 
var response = new lLibResponse(%request_id%);
response.rate_sum = "%rate_sum%";
response.rate_voters = "%rate_voters%";
response.current_rating = "%current_rating%";
response.state = "Вы уже проголосовали.";
lLib.getInstance().makeResponse(response);
 
 
END;
 
 
$FORMS['rate_not_found'] = <<<END
END;
 
?>
Название: Re:Рейтинг страниц
Отправлено: fadeev от 14 Ноября 2011, 13:52:15
Собственно так и делал, это же код из мануала...При нажатии на "1" ничего совершенно не происходит...
Название: Re:Рейтинг страниц
Отправлено: admin от 14 Ноября 2011, 13:58:31
проверь firebag'ом скорее всего у тебя нет prototype библиотеки и скинь ссылку на страницу где можно посмотреть пример, на приведенной выше не нашел голосования
Название: Re:Рейтинг страниц
Отправлено: fadeev от 14 Ноября 2011, 14:33:22
Вот, снова делаю и снова тот же эффект...http://new.ru.umitest.ru/goods/scala_rider/garnitura_bluetooth_na_shlem_scala_rider_g4_russkij_yazyk/
Название: Re:Рейтинг страниц
Отправлено: admin от 14 Ноября 2011, 14:56:57
при попытке проголосовать firebug выдает

missing ; before statement
public function rate_do($template = "default") {
Название: Re:Рейтинг страниц
Отправлено: fadeev от 14 Ноября 2011, 15:34:03
Мне стыдно конечно, но я не понимаю из-за чего это и как вылечить...
Название: Re:Рейтинг страниц
Отправлено: admin от 14 Ноября 2011, 17:08:00
нечего стыдиться, я сам не понимаю) надо влазить в код и смотреть где что не работает или работает не так, без кода ничего не сказать