Страница 1 из 16

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 20 май 2012, 21:42
DeaDRoMeO
Введение

Давненько еще я установил одну чудесную модификацию для phpbb3, а именно Avatar of poster on Index and Viewforum. Чем она хороша? Да тем, что добавляет на главную страницу, напротив каждого подфорума, аватар того, кто последним ответил в темах конкретных подфорумов, а так же на странице просмотра подфорумов выводится аватар автора темы и последнего ответившего. Все это наглядно вы можете увидеть на нашем форуме, присмотритесь. Собственно сегодня хотелось бы проанонсировать данный мод.
Данная модификация интегрируется со следущими модами
[list][*]


[*][/list]

Интеграция только для данной версии мода, на более новых версиях работать не будет
[attachment=0]avatar_index_viewforum121a.zip[/attachment]
[center]Вывод аватар на страницу Активных тем(Новые сообщения, Непрочитанные сообщения и тд)[/center][/b][/size]
Открываем search.php и находим (первый найденный результат)
[code]$tpl_ary = array([/code]
Вставляем перед найденным
[code]$avatar_img = $avatar_max_dimensions = $topic_last_poster_avatar_height = $topic_last_poster_avatar_width = $topic_first_poster_avatar_width = $topic_first_poster_avatar_height = '';

if ( !empty($row['topic_first_poster_avatar']) || !empty($row['topic_last_poster_avatar']))
{
$avatar_max_dimensions = 40; // here you can change the max-width you would like to have the avatars displayed

if ( $row['topic_first_poster_avatar_width'] >= $row['topic_first_poster_avatar_height'] )
{
$topic_first_poster_avatar_width = ( $row['topic_first_poster_avatar_width'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['topic_first_poster_avatar_width'] ;
$topic_first_poster_avatar_height = ( $topic_first_poster_avatar_width == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['topic_first_poster_avatar_width'] * $row['topic_first_poster_avatar_height']) : $row['topic_first_poster_avatar_height'] ;
}
else
{
$topic_first_poster_avatar_height = ( $row['topic_first_poster_avatar_height'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['topic_first_poster_avatar_height'] ;
$topic_first_poster_avatar_width = ( $topic_first_poster_avatar_height == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['topic_first_poster_avatar_height'] * $row['topic_first_poster_avatar_width']) : $row['topic_first_poster_avatar_width'] ;
}

if ( $row['topic_last_poster_avatar_width'] >= $row['topic_last_poster_avatar_height'] )
{
$topic_last_poster_avatar_width = ( $row['topic_last_poster_avatar_width'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['topic_last_poster_avatar_width'] ;
$topic_last_poster_avatar_height = ( $topic_last_poster_avatar_width == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['topic_last_poster_avatar_width'] * $row['topic_last_poster_avatar_height']) : $row['topic_last_poster_avatar_height'] ;
}
else
{
$topic_last_poster_avatar_height = ( $row['topic_last_poster_avatar_height'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['topic_last_poster_avatar_height'] ;
$topic_last_poster_avatar_width = ( $topic_last_poster_avatar_height == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['topic_last_poster_avatar_height'] * $row['topic_last_poster_avatar_width']) : $row['topic_last_poster_avatar_width'] ;
}

}[/code]
После найденного вставляем
[code]'TOPIC_AUTHOR_AVATAR' => ($config['enable_avatar_index']) ? get_user_avatar($row['topic_first_poster_avatar'], $row['topic_first_poster_avatar_type'], $topic_first_poster_avatar_width, $topic_first_poster_avatar_height) : false,
'TOPIC_AUTHOR_AVATAR_MARGIN' => ( $topic_first_poster_avatar_width == '' ) ? '' : (( $topic_first_poster_avatar_width == $avatar_max_dimensions ) ? 5 : ( $avatar_max_dimensions - $topic_first_poster_avatar_width + 5 )),
'AVATAR_WIDTH' => $avatar_max_dimensions ,
'LAST_POST_AUTHOR_AVATAR' => ($config['enable_avatar_index']) ? get_user_avatar($row['topic_last_poster_avatar'], $row['topic_last_poster_avatar_type'], $topic_last_poster_avatar_width, $topic_last_poster_avatar_height) : false,
'LAST_POST_AUTHOR_AVATAR_MARGIN'=> ( $topic_last_poster_avatar_width == $avatar_max_dimensions ) ? 5 : ( $avatar_max_dimensions - $topic_last_poster_avatar_width + 5 ),
[/code]
Открываем шаблон search_results.html используемого стиля. Между условиями <!-- BEGIN searchresults --> и <!-- END searchresults --> располагается одна строка выводимой темы. Теперь тут на ваше усмотрение куда пихать код от мода, но
[code]<!-- IF searchresults.TOPIC_AUTHOR_AVATAR -->{searchresults.TOPIC_AUTHOR_AVATAR}<!-- ENDIF -->[/code]
Выводит аватару автора темы, а
[code]<!-- IF searchresults.LAST_POST_AUTHOR_AVATAR --> {searchresults.LAST_POST_AUTHOR_AVATAR}<!-- ENDIF -->[/code]
Выводит аватару последнего ответившего. Так что верстайте под свои стили сами
Установка

Сама по себе модификация легка в установке, правок правда многовато, но они не трудные. Скачиваем архив с модом и устанавливаем по инструкции
Внимание !!! В инструкции к моду автор допустил ошибку, в правке файла includes\functions_admin.php
Нужно найти
[code] // These are fields that will be synchronised
$fieldnames = array([/code]
И вставить после найденного код
[code]//-- mod : apiv ----------------------------------------------------------------
//-- add
$fieldnames += array('first_poster_avatar', 'last_poster_avatar');
//-- fin mod : apiv ------------------------------------------------------------[/code]
Но вставить его надо таким образом, чтобы получилось
[code] // These are fields that will be synchronised
$fieldnames = array('time', 'replies', 'replies_real', 'poster', 'first_post_id', 'first_poster_name', 'first_poster_colour', 'last_post_id', 'last_post_subject', 'last_post_time', 'last_poster_id', 'last_poster_name', 'last_poster_colour');
//-- mod : apiv ----------------------------------------------------------------
//-- add
$fieldnames += array('first_poster_avatar', 'last_poster_avatar');
//-- fin mod : apiv ------------------------------------------------------------[/code]
Для руссификации скачиваем архив, прикрепленный ниже и единственную папку распаковываем в корень форума
langudfgage.rar
Руссификация модификации Avatar of poster on Index and Viewforum
(1.18 КБ) 151 скачивание
После правок не забываем запускать установочные скрипты.
Вот и все, модификация установлена, настройки мода находятся в админке - Общие - Аватары, успехов :co_ol:

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 25 авг 2012, 23:02
St_roy
В одной правке надо такой код

Код: Выделить всё

$db->sql_escape($row['username'])) . "'";
найти и заменить, а у меня был такой

Код: Выделить всё

$db->sql_escape($row['username'])) . "',
я его и заменил, теперь страницы тем не работают, а лог ошибок говорит
[Sun Aug 26 00:49:31 2012]
[client 213.87.131.72] PHP Parse error: syntax error, unexpected '=' in /home/u325176/remont-onlain.ru/www/includes/functions_posting.php on line 1514, referer: http://remont-onlain.ru/viewforum.php?f=6
Код, который надо заменить у меня есть, но совсем в другом месте.
Подскажи что делать

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 25 авг 2012, 23:08
DeaDRoMeO
Давай ка сюда
1) Код который надо было найти
2) Код который надо было вставить вместо найденного
3) Код который у тебя был
4) Код который получился в результате правок

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 25 авг 2012, 23:12
St_roy
1)

Код: Выделить всё

$db->sql_escape($row['username'])) . "'";
2)

Код: Выделить всё

$db->sql_escape($row['username'])) . "', topic_first_poster_avatar = '" . $db->sql_escape($row['user_avatar']) . "', topic_first_poster_avatar_type = " . (int) $row['user_avatar_type'] . ', topic_first_poster_avatar_width = ' . (int) $row['user_avatar_width'] . ', topic_first_poster_avatar_height = ' . (int) $row['user_avatar_height'];
3)

Код: Выделить всё

$db->sql_escape($row['username'])) . "',
в этой строке

Код: Выделить всё

$sql_data[TOPICS_TABLE] = 'topic_poster = ' . intval($row['poster_id']) . ', topic_first_post_id = ' . intval($row['post_id']) . ", topic_first_poster_colour = '" . $db->sql_escape($row['user_colour']) . "', topic_first_poster_name = '" . (($row['poster_id'] == ANONYMOUS) ? $db->sql_escape($row['post_username']) : $db->sql_escape($row['username'])) . "', topic_time = " . (int) $row['post_time'];
4)Вся строка сейчас

Код: Выделить всё

$sql_data[TOPICS_TABLE] = 'topic_poster = ' . intval($row['poster_id']) . ', topic_first_post_id = ' . intval($row['post_id']) . ", topic_first_poster_colour = '" . $db->sql_escape($row['user_colour']) . "', topic_first_poster_name = '" . (($row['poster_id'] == ANONYMOUS) ? $db->sql_escape($row['post_username']) : $db->sql_escape($row['username'])) . "', topic_first_poster_avatar = '" . $db->sql_escape($row['user_avatar']) . "', topic_first_poster_avatar_type = " . (int) $row['user_avatar_type'] . ', topic_first_poster_avatar_width = ' . (int) $row['user_avatar_width'] . ', topic_first_poster_avatar_height = ' . (int) $row['user_avatar_height']; topic_time = " . (int) $row['post_time'];

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 25 авг 2012, 23:32
DeaDRoMeO
А если полученный кусок сделать таким ?

Код: Выделить всё

$db->sql_escape($row['username'])) . "', topic_first_poster_avatar = '" . $db->sql_escape($row['user_avatar']) . "', topic_first_poster_avatar_type = " . (int) $row['user_avatar_type'] . ', topic_first_poster_avatar_width = ' . (int) $row['user_avatar_width'] . ', topic_first_poster_avatar_height = ' . (int) $row['user_avatar_height'] . "', topic_time = " . (int) $row['post_time'];
Тобишь найти строку

Код: Выделить всё

$db->sql_escape($row['username'])) . "', topic_time = " . (int) $row['post_time'];
И заменить ее на вышенаписанный мною код

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 25 авг 2012, 23:45
St_roy
Иххаааа, заработала! :ya_hoo_oo:

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 26 авг 2012, 00:00
DeaDRoMeO
Ну и отлично, поздравляю :co_ol:

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 03 сен 2012, 22:00
Roman
Удалось установить, хотя и муторно... Подсказка Строю очень пригодилась, так как и у меня такая же проблема !?!?!?! Во как бывает.

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 03 сен 2012, 23:37
DeaDRoMeO
Для этого и существует форум и все его темы с сообщениями, чтобы другие учились на чужих ошибках либо находили правильное решение)))

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 08 сен 2012, 21:34
Lorem Ipsum
DeaDRoMeO
Скажи, а это создаёт какую-нибудь дополнительную нагрузку, вывод всех этих аватарок?

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 08 сен 2012, 22:12
DeaDRoMeO
Разумеется, небольшой прирост нагрузки есть, но картинки вроде закешируются браузером, а количество запросов к БД возрастет на незначительное количество

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 сен 2012, 00:36
Артур Пиражков
Установил мод очень нужная вещь. Только подскажите пож. как уменьшить размер аватарок на главной странице форума. Дальше они небольшого (нормального) размера - но на основной станице просто ОГРОМНЫЕ.!.
Буду очень благодарен за помощь.
СпС.

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 сен 2012, 06:51
DeaDRoMeO
Артур Пиражков писал(а):Дальше они небольшого (нормального) размера - но на основной станице просто ОГРОМНЫЕ.!.
Может ошиблись при правке кода ??раз в одном месте все нормально, а в другом плохо. Попробуйте еще это http://www.phpbbguru.net/community/topi ... ml#p350956

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 сен 2012, 12:35
Артур Пиражков
Огромное спасибо! Эта правка всё вылечила. Очень полезный форум. И всегда четкие и правельные ответы.
Отдельный РЕСПЕКТ DeaDRoMeO! :drinks:

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 сен 2012, 14:52
DeaDRoMeO
И вам пасиба за хорошие слова, рад был помочь))

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 окт 2012, 18:39
Hd321kbps
Как запустить avatar update.php выскакивает страница с логином и паролем? Папки Umil нет.

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 окт 2012, 18:42
DeaDRoMeO
Форум где находится? На денвере ? Что за страница с логином и паролем ? Подробней надо

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 окт 2012, 18:47
Hd321kbps
на localhost (Vertrigo serv 2.28) визуально на страницу входа в конференцию)

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 окт 2012, 20:01
DeaDRoMeO
Админка - Общие - Настройки cookies , вот и настройте куки нормально ибо в строке появляется идентификатор сессии sid(циферки и буковки), который вы стираете из адресной строки и поэтому не удается скрипт запустить

Avatar of poster on Index and Viewforum phpbb3

Добавлено: 10 окт 2012, 20:40
Hd321kbps
а вообще не заходит не могу сделать ввожу логин и пароль и пустая страница