Рейтинг: 10 звезд вместо 5; голосовать за свою запись; второй рейтинг

InstantCMS 2.X

Доработка рейтинга

#1 18 марта 2021 в 17:32
Всем привет!
Решаю задачу:
1. Как сделать рейтинг 10 звезд, вместо 5 для типа контента?
2. Что поправить, чтобы можно было голосовать за свою запись?
3. Как добавить второй рейтинг к типу контента? Грубый пример:
Ниссан Кашкай:
Проходимость (оценка): 6 из 10
Расход топлива (оценка): 8 из 10

Любые мысли. Заранее спасибо)
#2 18 марта 2021 в 17:36

1. Как сделать рейтинг 10 звезд, вместо 5 для типа контента?

@Absolute134
Скажите вы разработчик?
Если нет то средствами настроек ни как, только в раздел к фрилансерам
Если да то документация подскажет на этом сайте
#4 19 марта 2021 в 13:33
п. 2 — решил. Теперь можно голосовать за свою запись.
В system\controllers\rating\hooks\content_before_item.php
Вместо:
  1. $is_rating_allowed = cmsUser::isAllowed($ctype['name'], 'rate', true, true) && ($item['user_id'] != $this->cms_user->id);
Написать:
  1. $is_rating_allowed = cmsUser::isAllowed($ctype['name'], 'rate', true, true);
В system\controllers\rating\actions\vote.php
Вместо:
  1. if ($target['user_id'] == $this->cms_user->id || !cmsUser::isAllowed($target_subject, 'rate')){
  2. return $this->cms_template->renderJSON(array(
  3. 'success' => false,
  4. 'message' => LANG_RATING_DISABLED
  5. ));
  6. }
Написать:
  1. if (!cmsUser::isAllowed($target_subject, 'rate')){
  2. return $this->cms_template->renderJSON(array(
  3. 'success' => false,
  4. 'message' => LANG_RATING_DISABLED
  5. ));
  6. }
п.1, и п.3 — актуально, ищу решение.


Нечто похожее instantcms.ru/addons/goodmade-field-stars.html .

@noname
Спасибо. Буду тестить.
#6 19 марта 2021 в 14:55

можете нарисовать сколько угодно звезд тут

Loadырь
И сделать это можно циклом.
#7 19 марта 2021 в 15:35


По первому пункту можете нарисовать сколько угодно звезд тут github.com/instantsoft/icms2/blob/master/templates/modern/controllers/rating/widget_stars.tpl.php#L23

Loadырь
Ха, действительно… Значение никак не фильтруется)) Это возможность для накрутки.
Написал в цикле.
  1. <?php
  2. $r_count = 0;
  3. while($r_count < 10){
  4. ++$r_count;
  5. ?>
  6. <div class="star rating pr-1" data-rating="<?php echo $r_count; ?>">
  7. <?php html_svg_icon('solid', 'star'); ?>
  8. </div>
  9. <?php } ?>
Работает 10 звезд. Из интереса поставил в data-rating="100" и проголосовал — 100 и записало в бд)) Это конечно надо будет фильтровать.
#8 19 марта 2021 в 16:31
Отрицательные значения тоже проскакивают)
В общем, валидация от накрутки (скрутки):
В system\controllers\rating\actions\vote.php
Вместо:
  1. $is_valid = ($this->validate_sysname($target_controller)===true) &&
  2. ($this->validate_sysname($target_subject)===true) &&
  3. is_numeric($target_id) &&
  4. (
  5. ($direction && in_array($direction, array('up', 'down'))) ||
  6. ($score && is_numeric($score))
  7. );
Написать:
  1. $is_valid = ($this->validate_sysname($target_controller)===true) &&
  2. ($this->validate_sysname($target_subject)===true) &&
  3. is_numeric($target_id) &&
  4. (
  5. ($direction && in_array($direction, array('up', 'down'))) ||
  6. ($score && is_numeric($score) && ($score > 0 && $score < 11))
  7. );
#9 23 марта 2021 в 17:54
Народ, нет ли компонента "Рейтинг" отдельно от CMS??
Просто возникла мысль клонировать его… Или там куча зависимостей и оно намертво вшито в CMS??
Просто со вторым рейтингом — засада… С наскока, как предыдущие проблемки — никак не решается))


Нечто похожее instantcms.ru/addons/goodmade-field-stars.html .

@noname
Это затестил. По факту — просто поле, где автор может выставить себе звёздочки)) В общем, близко не рейтинг.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.