Эксклюзивный аватар - мод вывода аватара только при достижении определённого числа постов ../images/2thTitles/TFreeCat.jpg 1203
Эксклюзивный аватар - мод вывода аватара только при достижении определённого числа постов
Дана задача - создать мод для вывода аватара мембера только при достижении им определённого числа постов. 'avatar_def',Дописываем справа свои параметры: 'avatars_limit_on', 'avatars_limit_messages', 'avatars_limit_exgroups',Отлично! Значения заданы! Теперь перейдём собственно к самой функции вывода аватара. Стандартным образом аватары выводятся функцией get_avatar() из стандартного набора функций расположенных в functions.php. Однако нам эта функция не подходит - поскольку она принимает всего три параметра - а нам надо больше. Есть две возможности получить нужный результат - модифицировать старую get_avatar(), чтобы она обрабатывала большее число параметров - и добавив новую функцию-препроцессор к "старой" get_avatar(). Однако в первом случае нам придётся поправить все вызовы функции get_avatar(). Во втором этого делать не потребуется - достаточно будет в нужных местах вызывать не старую, а новую функцию. В конечном итоге было решено выбрать второй вариант - как требующий минимального вмешательства. Чтобы было проще ориентироваться расположим старую функцию рядом со старой. Ищем эту строку: function get_avatar($member_avatar="", $member_view_avatars=0, $avatar_dims="x")И добавляем выше нашу новую функцию: function get_avatar_lim($member_avatar, $member_view_avatars, $avatar_dims, $member_group=2, $member_posts=0) { global $std, $ibforums; $i_group = explode(",", $ibforums->vars['avatars_limit_exgroups']); if ($ibforums->vars['avatars_limit_on'] and !(in_array($member_group,$i_group)) and ($member_posts < $ibforums->vars['avatars_limit_messages'])) { return ""; } return $std->get_avatar($member_avatar, $member_view_avatars, $avatar_dims); }Как видно она обрабатывает новые параметры - и после обработки вызывает старую get_avatar(). Или не вызывает - если не соблюдаются условия. По умолчанию выбрана группа Guest и число постов равное 0. Осталось самое простое - вывод аватаров. Вывод аватар "с ограничением" будет происходить только в топиках, поэтому изменение коснётся только Topics.php. Ищем эту строку: $member['avatar'] = $std->get_avatar( $member['avatar'], $ibforums->member['view_avs'], $member['avatar_size'] );... и заменяем на эту: $member['avatar'] = $std->get_avatar_lim( $member['avatar'], $ibforums->member['view_avs'], $member['avatar_size'], $member['mgroup'], $member['posts'] );Всё! Полностью мод можно загрузить по этой ссылке |