Перенос наград пользователя из профиля - нужна помощь

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 1.X
#1 14 сентября 2018 в 16:02
В личном профиле во вкладке "награды" есть список наград которые получил пользователь.
При активации модуля доска почета, выводится обычная иконка в виде награды, а не те награды которые присутствуют у пользователя в профиле.
Иконка выводится столько раз, сколько наград у юзера.

Кто подскажет, как вывести награды юзера вместо этой иконки?
Наград может быть много, поэтому их можно показывать поочередно в доске почета.


В профиле награды выводятся этим кодом (если не ошибаюсь)

  1.  
  2. <span class="user_avatar">
  3. <img src="/images/users/awards/{$aw.imageurl}" border="0" alt="{$aw.title|escape:'html'}"/>
  4. </span>
  5.  
  6.  
Как заставить его выводить награждения в доске почета?
#2 15 сентября 2018 в 20:13
Для начала в файле /modules/mod_respect/module.php поправить чтобы адрес иконки подгружался с базы вставить imageurl
т.е. вместо
  1. $user['awards'] = $inDB->get_table('cms_user_awards', 'user_id='.$user['id'], 'id, title');
должно быть
  1. $user['awards'] = $inDB->get_table('cms_user_awards', 'user_id='.$user['id'], 'id, title,imageurl');


и поправить файл шаблона /templates/ИМЯ_ШАБЛОНА/modules/mod_respect.tpl
заменив вывод
  1. <img src="/templates/{template}/images/icons/award.png" title="{$award.title|escape:'html'}" alt="{$award.title|escape:'html'}"/>
строкой
  1. <img src="/images/users/awards/{$award.imageurl|escape:'html'}" title="{$award.title|escape:'html'}" alt="{$award.title|escape:'html'}"/>
Что делать с размером иконок, решайте сами:
можно уменьшить в css или сделать дубли с уменьшенным размером в соседней папке
#3 17 сентября 2018 в 08:39
Sonat
Здравствуйте, спасибо большое за помощь. Пока закрывать не буду, проверю сегодня и отпишусь)
#4 17 сентября 2018 в 11:59
Итоговое решение.

В стили — .
  1.  
  2. .resfot{
  3. position: absolute;z-index: 3;left: 70%;
  4. }
  5.  
В файл mod_respect.tpl вывод награды оборачиваем в див
  1.  
  2. <div align="center" id="serial_output">
  3. {if $cfg.show_awards}
  4. <div style="margin-top:6px">
  5. {foreach key=id item=award from=$user.awards}
  6. <img class="resfot"src="/images/users/awards/{$award.imageurl|escape:'html'}" title="{$award.title|escape:'html'}" alt="{$award.title|escape:'html'}"/>
  7. {/foreach}
  8. </div>
  9. {/if}
  10. </div>
  11.  
В самый низ вставляем это

  1.  
  2. <style type="text/css">
  3. #serial_output { font-size: 0; }
  4. #serial_output img { display: none; }
  5. </style>
  6. <script type="text/javascript">
  7. $(document).ready(function(){
  8. $(document).ready(function(){
  9. delay=900;
  10. delay2=1500;
  11. timer=$('#serial_output img').length*(delay+delay2);
  12. $(function serial_output() {
  13. $('#serial_output img').each(function(n) {
  14. $(this).delay(n*delay).fadeTo(delay2, 1).delay(n*delay).fadeTo(delay2, 0); })
  15. })
  16. setTimeout(arguments.callee, timer)
  17. });
  18. });
  19. </script>
  20.  
В итоге получаем награды в верхнем углу аватара юзера. Награды автоматически меняются.Еще раз спасибо за подсказку.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.