Как вывести "репутацию (карму)" в нужном месте на сайте?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 21 июня 2021 в 11:53
Всем привет, столкнулся с такой проблемой, хочу вывести значение "репутации (кармы)" рядом с ником автора объявления в типе контента "Объявления", так же в будущем хочу сделать отображение репутации на аватарке, но если знать код то прикрутить его смогу и сам на аватарку. Можете подсказать как это возможно реализовать? Нашел несколько тем на с таким же вопросом, но там ответа никто не дал.

Пытался использовать этот код, но не получилось.

  1. <span class="value <?php echo html_signed_class($profile['karma']); ?>">
  2. <?php echo html_signed_num($profile['karma']); ?>
  3. </span>
Версия движка 2.14.2

Всем заранее спасибо за помощь.
#2 21 июня 2021 в 12:04
Что бы вам вывести карму в тк, вам нужно создать хук в вашем тк "profile_before_view" например. В нём получить $profile['karma'] и передать в шаблон тк, где нужно вывести карму.
#3 21 июня 2021 в 12:23


Что бы вам вывести карму в тк, вам нужно создать хук в вашем тк "profile_before_view" например. В нём получить $profile['karma'] и передать в шаблон тк, где нужно вывести карму.

Lora

Хук в типе контента?
#4 21 июня 2021 в 12:28
Да
#5 21 июня 2021 в 12:39


Да

Lora

Дак мне не нужен хук только в одном типе контента. Я хочу иметь возможность вывести рейтинг пользователя в любом месте.
#6 21 июня 2021 в 12:49
Можно в шаблоне вывести. Создаете в папке content копию файла default_item.tpl.php с именем board_item.tpl.php, в самый низ вставляете что-нибудь такое:

  1. <?php
  2. $user = cmsCore::getModel('users')->getItemById('users', $item['user_id']);
  3. ob_start(); ?>
  4. <script>
  5. $(document).ready(function(){
  6. $(".info_bar .bi_user a").append(" <span class='karma'>(карма: <?php echo $user['karma']; ?>)</span>");
  7. });
  8. </script>
  9. <?php $this->addBottom(ob_get_clean());

Пример

#7 21 июня 2021 в 23:21


Можно в шаблоне вывести. Создаете в папке content копию файла default_item.tpl.php с именем board_item.tpl.php, в самый низ вставляете что-нибудь такое:

  1.  
  2.  
  3. $(document).ready(function(){
  4. $(".info_bar .bi_user a").append(" (карма: )");
  5. });
  6.  
  7.  
  8.  

Нифигаccе о-го-гошеньки

В шаблоне default почему то не работает (( у вас сайт на modern
#8 21 июня 2021 в 23:43

шаблоне default почему то не работает

@CEH9I
работает и на дефолтном

Если у вас скрипты подключаются в шапке, а не в подвале, можете попробовать вот так:
  1. <?php $user = cmsCore::getModel('users')->getItemById('users', $item['user_id']); ?>
  2. <script>
  3. $(document).ready(function(){
  4. $(".info_bar .bi_user a").append(" <span class='karma'>(карма: <?php echo $user['karma']; ?>)</span>");
  5. });
  6. </script>
Вот в этой строке
  1. $(".info_bar .bi_user a").append(" <span class='karma'>(карма: <?php echo $user['karma']; ?>)</span>");
.info_bar .bi_user a — куда вставляем фрагмент, убедитесь, что у вас такие же классы и вложенность
<span class='karma'>(карма: <?php echo $user['karma']; ?>)</span> — сам фрагмент кода с кармой

Вспомнил, что еще забыл)) В самом начале вы классы хотели еще приписать. Тогда вот так:

  1. <?php
  2. $user = cmsCore::getModel('users')->getItemById('users', $item['user_id']);
  3. $class = $user['karma'] > 0 ? 'class-1' : ($user['karma'] < 0 ? 'class-2' : 'class-3');
  4. ?>
  5. <script>
  6. $(document).ready(function(){
  7. $(".info_bar .bi_user a").append(" <span class='karma <?php echo $class; ?>'>(карма: <?php echo $user['karma']; ?>)</span>");
  8. });
  9. </script>
Классы называйте, как хотите. В примере
class-1 — больше 0
class-2 — меньше 0
class-3 — равно 0

Еще вы можете свой способ использовать, с которым ничего не вышло. Но для этого вам надо получить юзера:

  1. <?php $profile = cmsCore::getModel('users')->getItemById('users', $item['user_id']); ?>
  2. <span class="value <?php echo html_signed_class($profile['karma']); ?>">
  3. <?php echo html_signed_num($profile['karma']); ?>
  4. </span>
Правда, я не знаю, что такое html_signed_class и html_signed_num.
#9 22 июня 2021 в 00:08
Нифигаccе о-го-гошеньки,

Сделал вот так:

  1. <div class="info_bars">
  2. <div class="bar_item bi_date_pub" title="Дата добавления">
  3. <?php echo html_date($item['date_pub'], true); ?>
  4. </div>
  5. <div class="bar_item bi_user_content">
  6. <?php echo html_avatar_image($item['user']['avatar'], 'micro'); ?>
  7. <a href="<?php echo href_to_profile($item['user']); ?>"><?php html($item['user']['nickname']); ?></a>
  8. </div>
  9. <div class="bar_item">
  10. <?php
  11. $user = cmsCore::getModel('users')->getItemById('users', $item['user_id']);
  12. $class = $user['karma'] > 0 ? 'class-1' : ($user['karma'] < 0 ? 'class-2' : 'class-3');
  13. ?>
  14. Репутацйя автора: <span class='karma_<?php echo $class; ?>'><?php echo $user['karma']; ?></span>
  15.  
  16. </div>
  17. </div>
  18. <style>
  19. .karma_class-1{
  20. color: green;}
  21. </style>
И все заработало. Огромнейшее Вас спасибо)))
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.