Показ полученных наград на форуме 1.10

Посетитель
Сообщений: 7
Оффлайн
Давно меня друзья просили сделать показ наград на форуме, вместо безликий наград - отображение полученных наград
и так начнем. Изменения коснулось всего 3 файлов

файл 1)
core/classes/user.class.php перед последней закрывающейся скобкой

Код PHP:
  1. public static function getAwarsGif($user_id) {
  2. if (!$user_id) {
  3. return array();
  4. }
  5. if (isset(self::$cache['users_awards_gif'][$user_id])) {
  6. return self::$cache['users_awards_gif'][$user_id];
  7. }
  8. $sql = "SELECT title, imageurl FROM cms_user_awards WHERE user_id = '$user_id' ORDER BY pubdate DESC";
  9. $result = cmsDatabase::getInstance()->query($sql);
  10. if (!cmsDatabase::getInstance()->num_rows($result)) {
  11. return array();
  12. }
  13. $html = '';
  14. while ($aw = cmsDatabase::getInstance()->fetch_assoc($result)) {
  15. $html .= '<img class="forum_awards" src="/images/users/awards/' . $aw['imageurl'] . '" title= "' . $aw['title'] . '" />';
  16. }
  17. return self::$cache['users_awards_gif'][$user_id] = $html;
  18. }
файл 2)
components/f orum/model.php находим функцию function getPosts строка примерно 486
меняем
Код PHP:
  1. $post['user_awards'] = cmsUser::getAwardsList($post['user_id']);
на
Код PHP:
  1. $post['user_awards_gif'] = cmsUser::getAwarsGif($post['user_id']);
файл 3)
templates/_default_/components/com_forum_view_thread.tpl (если шаблон другой смотрим по аналогии)
меняем
Код PHP:
  1.  
  2. {if $post.user_awards}
  3. <div class="post_userawards">
  4. {foreach key=aid item=award from=$post.user_awards}
  5. <img src="/images/icons/award.gif" border="0" alt="{$award.title|escape:html}" title="{$award.title|escape:html}"/>
  6. {/foreach}
  7. </div>
  8. {/if}
на
Код PHP:
  1. {if $post.user_awards_gif}{$post.user_awards_gif}{/if}
вот собственно и все
P.S. запрос кэшируется т.е. если профиль несколько раз на странице, то запрос будет только один
также по желанию добавляем в css размер выводимых наград:
Код CSS:
  1. .forum_awards{width:24px}

для модуля - доска почета

находим modules/mod_respect/module.php
меняем
Код PHP:
  1. if ($cfg['show_awards']){
  2. $user['awards'] = $inDB->get_table('cms_user_awards', 'user_id='.$user['id'], 'id, title');
  3. }
на
Код PHP:
  1. if ($cfg['show_awards']){
  2. $user['awards'] = cmsUser::getAwarsGif($user['id']);
  3. }
и в шаблоне mod_respect.tpl
меняем
Код PHP:
  1. {if $cfg.show_awards}
  2. <div style="margin-top:6px">
  3. {foreach key=id item=award from=$user.awards}
  4. <img src="/images/icons/award.gif" border="0" title="{$award.title|escape:'html'}" />
  5. {/foreach}
  6. </div>
  7. {/if}
на
Код PHP:
  1. {if $cfg.show_awards}<div style="margin-top:6px">{$user.awards}</div>{/if}

Как сделать чтоб награды не выводились на форуме вообще?

components /forum/model.php находим функцию function getPosts строка примерно 486
закомментировать
Код PHP:
  1. //$post['user_awards'] = cmsUser::getAwardsList($post['user_id']);
Редактировалось: 2 раза (Последний: 8 июня 2013 в 21:38)
Посетитель
Сообщений: 7
Оффлайн

Как ограничить вывод наград? Скажем чтобы их было не больше 5.

в файле core/classes/user.class.php вместо:
Код PHP:
  1. $sql = "SELECT title, imageurl FROM cms_user_awards WHERE user_id = '$user_id' ORDER BY pubdate DESC";
вставляем:
Код PHP:
  1. $sql = "SELECT title, imageurl FROM cms_user_awards WHERE user_id = '$user_id' ORDER BY pubdate DESC LIMIT 5";
где LIMIT 5 это ограничение в 5 наград.
Редактировалось: 1 раз (Последний: 8 июня 2013 в 21:39)
|
Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.