МАРАДЁР Опубликовано 29 Апреля 2007 Жалоба Поделиться Опубликовано 29 Апреля 2007 Здрасте. Уважаемые прогеры, помогите сделать мод для рейтинга! версия форума 2.1.5 Там есть уже рейтинг, но этот рейтинг показывает только звездочки, а мне нужно чтобы ешё показывал количество юзеров, которые ставили оценки. И нужно чтобы это отображалось и в самой теме и в списке тем. На данный момент у меня только звездочки! вот тут есть пример как мне надо:тут в списке тем http://ufamob.net.ru/forum/index.php?showforum=22тут в самой теме http://ufamob.net.ru/forum/index.php?showtopic=1768Хозяин форума не хочет дать мне ни мод ни подсказку как это сделать! Вся надежда на вас! Помогите плиз. Заранее спасибо!ps: поиском перебороздил всё что можно! Глазами просмотрел больше 500 тем...похожего ничего нет! Если кто что знает, буду благодарен за любую информацию! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 30 Апреля 2007 Жалоба Поделиться Опубликовано 30 Апреля 2007 Шаблоны форума -> skin_forum -> render_forum_row Находим там:<div style='float:right'>{$data['_rate_img']}</div>Заменяем на:<div style='float:right'>{$data['_rate_img']}{$data['topic_rating_hits']}</div> Это выведет у нас в showforum, рядом со звездочками количество проголосовавших. {$data['topic_rating_hits']} — показывает количество проголосовавших за эту тему. Имейте ввиду, если значение будет равно 0, то он все равно будет показываться. Даже если рейтинг в этом форуме выключен, то 0 будет показываться. Я думаю, что необходимые условия (forum_allow_rating) вы дальше сможете написать уже сами, дабы избавиться от нуля. Для тем — тоже самое, только функция в шаблоне другая. Смотрите таблицы в БД: ibf_topics (topic_rating_total, topic_rating_hits), ibf_topic_ratings, ibf_forums (forum_allow_rating — значения можно использовать в условии). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 2 Мая 2007 Автор Жалоба Поделиться Опубликовано 2 Мая 2007 Jax, спасибо огромное!!! ща погляжу, подумаю Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 2 Мая 2007 Автор Жалоба Поделиться Опубликовано 2 Мая 2007 (изменено) итак, вот рабочий скрипт рейтинга в первоначальном варианте (если сможете, можно упростить):1.Находим файл cache/skin_cache/cacheid_2/skin_forum.php2. Открываем его любым текстовым редактором.3. Находим следующее место://=========================================================================== // <ips:render_forum_row:desc:> //=========================================================================== function render_forum_row($data="",$class1='row2',$class2='row1',$classposts='row2',$inforum=0) { $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <!-- Begin Topic Entry {$data['tid']} --> <tr> <td align="center" class="$class2" id='tid-folder-{$data['tid']}' onclick='return topic_toggle_folder("{$data['tid']}");'>{$data['folder_img']}</td> <td align="center" class="$class2">{$data['topic_icon']}</td> <td class="$class2" valign="middle"> <div style='float:right'>{$data['_rate_img']}</div>и заменяем его на этот://=========================================================================== // <ips:render_forum_row:desc:> //=========================================================================== function render_forum_row($data="",$class1='row2',$class2='row1',$classposts='row2',$inforum=0) { $IPBHTML = ""; //--starthtml--// if ( $data['topic_rating_hits'] > 0 ) { //запрещает выводить там где рейтинг не предусмотрен $kol = $data['topic_rating_hits']; //количество голосов $skob = "("; $skob2 = ")"; //скобки к голосам $sred = $data['topic_rating_total'] / $kol; //средний балл рейтинга $sred = substr ($sred,0,4); //округляет балл до десятых (4.6) если вдруг число не делится ровно. } $IPBHTML .= <<<EOF <!-- Begin Topic Entry {$data['tid']} --> <tr> <td align="center" class="$class2" id='tid-folder-{$data['tid']}' onclick='return topic_toggle_folder("{$data['tid']}");'>{$data['folder_img']}</td> <td align="center" class="$class2">{$data['topic_icon']}</td> <td class="$class2" valign="middle"> <div style='float:right'>{$data['_rate_img']}<br/> {$sred} {$skob}{$kol}{$skob2}</div>Чуть позже допишу и для самого поста (там где ставим оценку). Ещё раз огромное спасибо Jax за то что поставил на путь истиный Изменено 2 Мая 2007 пользователем МАРАДЁР Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 2 Мая 2007 Жалоба Поделиться Опубликовано 2 Мая 2007 Зачем столько &nbsр;?<center> не проще сделать? Да и эта вещь $skob = "(";$skob2 = ")"; лишняя, можно было бы все в одну переменную запихнуть Вообще, метод конечно деревянный, но если работает - гуд. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 2 Мая 2007 Жалоба Поделиться Опубликовано 2 Мая 2007 вообще много плохогонапример$sred = substr ($sred,0,4); //округляет балл до десятых (4.6) если вдруг число не делится ровно.есть чушьпотому что в пхп есть php.net/round$skob = "(";$skob2 = ")";зачем? да и не рекомендуется портить шаблоны, т.к. в админцентре потом ошибок будет... открываем./sources/action_public/forums.phpищем function render_entry($topic) { $topic = $this->parse_data( $topic );добавляем после$topic['topic_rating'] = @round($topic['topic_rating_total']/$topic['topic_rating_hits'],2);идем в админку - внешний вид - изменить html фрагменты - render_forum_rowищем<div style='float:right'>{$data['_rate_img']}добавляем после<if="data['topic_rating_hits']>0"><br/><center>{$data['topic_rating']} ({$data['topic_rating_hits']})</center></if> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 3 Мая 2007 Автор Жалоба Поделиться Опубликовано 3 Мая 2007 Ну вот, видите, столько вариантов сразу появилось я просто в файле forums.php не понял ни че, не захотело у меня количество появляться Arhar, спасибо попробую и этот способ,если получится, то оставлю так, раз шаблоны нельзя коверкать. А где можно посмотреть синтаксис вот такого на писания в шаблонах:\<if="data['topic_rating_hits']>0"><br/><center>{$data['topic_rating']} ({$data['topic_rating_hits']})</center></if>На будущее было бы не плохо знать... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 3 Мая 2007 Жалоба Поделиться Опубликовано 3 Мая 2007 IPB HTML Logic ? Лучше нету. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 3 Мая 2007 Автор Жалоба Поделиться Опубликовано 3 Мая 2007 А теперь переходим к показу среднего балла и кол-ва голосов в окне рейтинга в самой теме (то что около "Опции форума").Как я понял, нужно начинать с файла topic.php...думаю что нужно изменять тут:if ( $this->topic['topic_rating_total'] ) { $this->topic['_rate_int'] = round( $this->topic['topic_rating_total'] / $this->topic['topic_rating_hits'] ); }И соответственно изменить шаблон skin_topic -> topic_rating_image.Логически должно быть так <img src='{ipb.vars['img_url']}/rating_{$rating_id}.gif' border='0' alt='{$rating_id}' /><br/>{$data['topic_rating']} ({$data['topic_rating_hits']})Но вот что то не получается..наверника что то в файле topic.php нужно добавить...а вот что, не знаю Возможно там не используется атрибут $data, вроде должно быть $post , но тоже не получается!Помогите с переменными плиз! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Мая 2007 Жалоба Поделиться Опубликовано 3 Мая 2007 дело в том, что в topic_rating_image передается только одна переменная - _rate_intтак что придется добавить необходимые в редактировании этого шаблона - справа вверху выпадающее меню - редактирование входящих переменныхи добавить в строчке в топикс.пхп$this->topic['_rate_img'] = $this->ipsclass->compiled_templates['skin_topic']->topic_rating_image($this->topic['_rate_int']); это сложный процесс, для начала почитайте мануалы, какие сможете найти, или инструкции от модов, касающиеся такого редактирования Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 3 Мая 2007 Автор Жалоба Поделиться Опубликовано 3 Мая 2007 Я понял только что нужно добавить что то типа:$this->topic['_rate_img'] = $this->ipsclass->compiled_templates['skin_topic']->topic_rating_image($this->topic['_rate_int'])->topic['topic_rating_hits']->topic['topic_rating_total'];С этим то ещё можно разобраться, а вот на счёт входящих переменных это беда...поэтому дальше у меня ни каких мыслей! Придётся остановиться на достигнутом и довольствоваться тем что хоть в списке тем это показывается, пока какой нибудь добрый человек не подскажет как делать дальше... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
МАРАДЁР Опубликовано 2 Декабря 2007 Автор Жалоба Поделиться Опубликовано 2 Декабря 2007 Кстати, эта же модификация отлично подходит и для форумов версии 2.3.1 и выше. Так как там уже есть рейтинг по голосам и показывается в самой теме, голосовали вы или нет, а так же количество голосов, то остаётся дополнить и вынести рейтинг в список тем! Окончательная модификация: открываем./sources/action_public/forums.phpищем function render_entry($topic) { $topic = $this->parse_data( $topic );добавляем после$topic['topic_rating'] = @round($topic['topic_rating_total']/$topic['topic_rating_hits'],2);идем в админку - внешний вид - изменить html шаблоны - skin_forum - render_forum_rowищем<div style='float:right'>{$data['_rate_img']}добавляем после<if="$data['topic_rating_hits']>0"><br/><center>{$data['topic_rating']} ({$data['topic_rating_hits']})</center></if>Внешний вид изменяем для каждого скина.Если нет ни одного голоса, то рейтинг не показывается.Огромный респект за поправки Arhar и Jax за то что указал путь истиный Тема исчерпана окончательно! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 2 Декабря 2007 Жалоба Поделиться Опубликовано 2 Декабря 2007 Фи.$topic['topic_rating'] = $topic['topic_rating_hits'] ? round($topic['topic_rating_total']/$topic['topic_rating_hits'],2) : 0; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
mexnap Опубликовано 9 Февраля 2008 Жалоба Поделиться Опубликовано 9 Февраля 2008 Посмотрел http://ufamob.net.ru/forum/index.php?showforum=22 Да, это почти тоже что и я ищу. Может кто-то помочь:- заменить звёздочки в рейтинге на текст- в результатах показать кол-во голосов за каждый вариант (будет 2-3, а не 5) Спасибо Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.