Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

 Сообщение Avatar of poster on Index and Viewforum phpbb3 2012-05-20

Аватар пользователя

Введение

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



Интеграция только для данной версии мода, на более новых версиях работать не будет
Вложение :
Комментарий к файлу: Avatar of poster on Index and Viewforum версия 1.2.1а
avatar_index_viewforum121a.zip [68.78 KiB]
Скачиваний: 170

Вывод аватар на страницу Активных тем(Новые сообщения, Непрочитанные сообщения и тд)

Открываем search.php и находим (первый найденный результат)
$tpl_ary = array(
 

Вставляем перед найденным
$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'] ;
         }
         
      }
 

После найденного вставляем
'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 ),
 

Открываем шаблон search_results.html используемого стиля. Между условиями <!-- BEGIN searchresults --> и <!-- END searchresults --> располагается одна строка выводимой темы. Теперь тут на ваше усмотрение куда пихать код от мода, но
<!-- IF searchresults.TOPIC_AUTHOR_AVATAR -->{searchresults.TOPIC_AUTHOR_AVATAR}<!-- ENDIF -->
 

Выводит аватару автора темы, а
<!-- IF searchresults.LAST_POST_AUTHOR_AVATAR --> {searchresults.LAST_POST_AUTHOR_AVATAR}<!-- ENDIF -->
 

Выводит аватару последнего ответившего. Так что верстайте под свои стили сами

Установка

Сама по себе модификация легка в установке, правок правда многовато, но они не трудные. Скачиваем архив с модом и устанавливаем по инструкции

Внимание !!! В инструкции к моду автор допустил ошибку, в правке файла includes\functions_admin.php
Нужно найти
 // These are fields that will be synchronised
         $fieldnames = array(
 

И вставить после найденного код
//-- mod : apiv ----------------------------------------------------------------
//-- add
         $fieldnames += array('first_poster_avatar', 'last_poster_avatar');
//-- fin mod : apiv ------------------------------------------------------------
 

Но вставить его надо таким образом, чтобы получилось
 // 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 ------------------------------------------------------------
 

Для руссификации скачиваем архив, прикрепленный ниже и единственную папку распаковываем в корень форума
Вложение :
Комментарий к файлу: Руссификация модификации Avatar of poster on Index and Viewforum
langudfgage.rar [1.18 KiB]
Скачиваний: 141

После правок не забываем запускать установочные скрипты.
Вот и все, модификация установлена, настройки мода находятся в админке - Общие - Аватары, успехов :co_ol:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

Теги темы
Avatar of poster on Index and Viewforum phpbb3, аватары, аватары на главной форума phpbb3, аватар последнего ответившего phpbb3,аватар автора темы phpbb3

Последний раз редактировалось DeaDRoMeO 02 окт 2013, 12:33, всего редактировалось 5 раз(а).
Обновлена версия мода
          Вернуться наверх  
 


Аватар пользователя

я догадываюсь откуда этот файл))) с блока последние сообщения и там вы как раз и не видите свои авы )))


_________________
Подпись:
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.

Информация о редактировании
Последний раз редактировалось akella1900 13 фев 2013, 13:34, всего редактировалось 1 раз.
          Вернуться наверх  
 


Аватар пользователя

akella1900 писал(а):

не нашел такого файла ни в инструкции к моду ни у себя на форуме, может он создается модом?

надо мне немного разобраться в своих изменениях. это файл - из аддона для последних сообщений.
Я еще пытался установить этот аддон, но походу забыл про него. Чувствую без этого аддона (этого файла), можно и поля удалить.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

akella1900 писал(а):

я догадываюсь откуда этот файл))) с блока последние сообщения и там вы как раз и не видите свои авы )))

ага, и не только там, но и еще случайные авы, выбираемые модом Default Random No Avatar


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

если допишете код для тех модов правильно то и там отобразится


_________________
Подпись:
back'up придумали трусы Ваша воля моими руками, но платно. Стучим в skype akella1900.
          Вернуться наверх  
 


Аватар пользователя

Все, наконец то поставился мод, и в последние сообщения тоже его прикрутил.
Ошибка моя была в том, что я аддон, предназначенный для версии 1.2.1 поставил на версию 1.3.0 и забыл об этом. :kli_ny: а подумал, что что-то не так с инсталлом. :smu:sche_nie:
Тем, кто ставит мод первый раз - делать по инструкции все правки и запускать скрипт db_update.php .

У кого этот мод работает с модом случайных аватарок? Почему-то у меня случайные не отображаются.
Спасибо Виталию за помощь, Сергею - за мод.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

Фух, не получается прикрутить этот мод к моду Default Random No Avatar
Помогите заставить этот мод отображать случайные аватары!!!
:x


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

tralan, ссылку на инструкцию не напомните ?) Там вроде все не сложно


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Ох, уж и не помню, по моему где-то на вашем сайте было, я лучше приложу сам файл инсталляции
Вложение :
install_mod.rar [2.95 KiB]
Скачиваний: 1

Да мод случайных аватар не сложный - он у меня работает.
Вот только в названиях тем вместо случайных аватар - пусто:

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

А такое пробовали делать -
Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку

или это -
Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Это же все для версии 1.2.1а, а я поставил версию 1.3.0. из вашего анонса.
И там я так понял решается проблема с ресайзом картинок, в версии 1.3.0 размер устанавливается в АСР и все прекрасно работает.
Аватарки пользователей, которые сами себе их выбрали, выводятся так как надо, а вот аватарки подставляемые модом "Случайных аватарок" не выводятся.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

Сергей, а у вас на форуме какая версия этого мода стоит?


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

У меня то стоит 1.2.1 , не хочу чего то обновлять, все нормально работает и ладно)


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

DeaDRoMeO писал(а):

У меня то стоит 1.2.1 , не хочу чего то обновлять, все нормально работает и ладно)

Вот поэтому у тебя и работает. А с новой версией косяки, я вон сколько мучилась, да и бросила.


_________________
Подпись:
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
          Вернуться наверх  
 


Аватар пользователя

Эти версии по разному выводят аватары, например 1.3.0 через функцию: function user_display_avatar($row, $prefix = '', $tpl_switch, $display) , в которой есть строка:
      strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar($avatar['avatar'], $avatar['type'], $avatar_width, $avatar_height),
 


а версия 1.2.1 сразу через функцию get_user_avatar

И мне кажется не выводятся случайные из-за параметра $avatar['avatar']

вот сейчас разбираюсь, если что получится - напишу обязательно.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 


Аватар пользователя

Будем ждать, действительно в новой версии все иначе выводится


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Все таки удалось победить и мод "Случайных аватар" и "Последние сообщения" (для стиля subsilver2). Вот появилось свободное время и как обещал - пишу.
Немного теории (мне самому нравиться когда я понимаю что делаю, а не просто - мне так сказали).
Главное отличие версии 1.3.0 от 1.2.1 в том, что все значения (название файла аватарки, ширина, высота, тип) хранятся в одном поле БД, так называемая сериализованная запись, которая при необходимости обрабатывается и переводится (парсится) обратно в РНР-значение (кому интересно можно прочитать ), например:
a:4:{s:6:"avatar";s:16:"2_1331801136.gif";s:4:"type";i:1;s:5:"width";i:100;s:6:"height";i:100;}
 
.
Поэтому теперь происходит предварительная обработка в функции user_display_avatar полей forum_last_poster_avatar, topic_first_poster_avatar, topic_last_poster_avatar, а потом уже непосредственно получение аватарки в функции get_user_avatar (в functions_display.php).

Итак, мое решение проблемы:
Открываем functions_display.php, находим код функции:
//-- mod : apiv ----------------------------------------------------------------
//-- add
function user_display_avatar($row, $prefix = '', $tpl_switch, $display)
{
   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
      return;
   }

   global $config, $template;

   $avatar = unserialize($row[$prefix . '_poster_avatar']);
   if ( $avatar['width'] >= $avatar['height'] )
   {
      $avatar_width = ($avatar['width'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['width'];
      $avatar_height = ($avatar_width == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['width'] * $avatar['height']) : $avatar['height'];
   }
   else
   {
      $avatar_height = ($avatar['height'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['height'];
      $avatar_width = ($avatar_height == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['height'] * $avatar['width']) : $avatar['width'];
   }

   $template->alter_block_array($tpl_switch, array(
      strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar($avatar['avatar'], $avatar['type'], $avatar_width, $avatar_height),
      strtoupper($prefix) . '_POSTER_AVATAR_MARGIN' => ($avatar_width == $config['avatar_max_dimensions']) ? 5 : ($config['avatar_max_dimensions'] - $avatar_width + 5),
   ), true, 'change');
}
//-- fin mod : apiv ------------------------------------------------------------
 


и весь заменяем на:
//-- mod : apiv ----------------------------------------------------------------
//-- add
function user_display_avatar($row, $prefix = '', $tpl_switch, $display)
{
   global $config, $template;

   $avatar = unserialize($row[$prefix . '_poster_avatar']);
   if ( $avatar['width'] >= $avatar['height'] )
   {
      $avatar_width = ($avatar['width'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['width'];
      $avatar_height = ($avatar_width == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['width'] * $avatar['height']) : $avatar['height'];
   }
   else
   {
      $avatar_height = ($avatar['height'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['height'];
      $avatar_width = ($avatar_height == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['height'] * $avatar['width']) : $avatar['width'];
   }

   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
      $template->alter_block_array($tpl_switch, array(
         strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar('', 0, 40, 40),
         strtoupper($prefix) . '_POSTER_AVATAR_MARGIN' => ($avatar_width == $config['avatar_max_dimensions']) ? 5 : ($config['avatar_max_dimensions'] - $avatar_width + 5),
      ), true, 'change');
   }   
   else
   {
      $template->alter_block_array($tpl_switch, array(
         strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar($avatar['avatar'], $avatar['type'], $avatar_width, $avatar_height),
         strtoupper($prefix) . '_POSTER_AVATAR_MARGIN' => ($avatar_width == $config['avatar_max_dimensions']) ? 5 : ($config['avatar_max_dimensions'] - $avatar_width + 5),
      ), true, 'change');
   }
}
//-- fin mod : apiv ------------------------------------------------------------
 


Поясню. У пользователей, у которых есть свои аватарки, вышеуказанные поля будут заполнены, у которых нет - пустые.
Раньше, если поле было пустое, при проверки (empty):
   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
      return;
   }
 

ничего не происходило, мы просто вываливались из функции. Теперь же мы удаляем этот кусок кода и добавляем обработку пустых полей, вот здесь:
   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
      $template->alter_block_array($tpl_switch, array(
         strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar('', 0, 40, 40),
         strtoupper($prefix) . '_POSTER_AVATAR_MARGIN' => ($avatar_width == $config['avatar_max_dimensions']) ? 5 : ($config['avatar_max_dimensions'] - $avatar_width + 5),
      ), true, 'change');
   }   
 


Конечно немного коряво, например я пока не придумал как передать размер аватарки (переменной), задаваемый в настройках мода, и грубо вписал 40 (такое значение у меня стоит в настройках). Но работает, можно посмотреть:

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку


Ну вот вроде бы и все. Буду рад, если кому-нибудь пригодится.
Конечно красоту вывода аватарок придется наводить в *.html файлах: forumlist_body.html, viewforum_body.html, recent_topics_body.html - это уже дело вкуса.

Если будет кому интересно, как я сделал в "Последних сообщения", то об этом чуть позже (через денек другой). Просто намечается небольшой юбилейчик :-00): , поэтому как только , так и сразу.
:yahoo:


_________________
Подпись:
В любой непонятной ситуации – ложись спать!

Информация о редактировании
Последний раз редактировалось tralan 18 фев 2013, 09:16, всего редактировалось 1 раз.
          Вернуться наверх  
 


Аватар пользователя

tralan писал(а):

Если будет кому интересно, как я сделал в "Последних сообщения", то об этом чуть позже

Разумеется, напиши. Много кому пригодится.


_________________
Подпись:
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
          Вернуться наверх  
 


Аватар пользователя

tralan писал(а):

Почему-то у меня случайные не отображаются.


У меня отобразились...только вопрос теперь как к "единому" привести...


          Вернуться наверх  
 


Аватар пользователя

tralan писал(а):

Итак, мое решение проблемы:
Открываем functions_display.php, находим код функции:

после правки ;) задача пополнилась еще одним неизвестным ;)...


          Вернуться наверх  
 


Аватар пользователя

boroda-max писал(а):

У меня отобразились...только вопрос теперь как к "единому" привести...

Прежде всего давайте определимся: какая версия мода у вас стоит 1.2.1 или 1.3.0? Потому-что проблемы с ресазом аватарок были в версии 1.2.1, в этой теме об этом писалось и ссылки были на решение.
boroda-max писал(а):

после правки задача пополнилась еще одним неизвестным ..

Странно, у меня такого не наблюдается, возможно из-за изменения условия проверки: когда проверяем пустое или не пустое поле, а может что-то не так с изменениями в шаблоне.
Вы могли бы выложить свой шаблон forumlist_body.html и файл functions_display.php или отправить их мне на почту tralan78@inbox.ru, я посмотрю.


_________________
Подпись:
В любой непонятной ситуации – ложись спать!
          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

  Похожие темы  Автор  Ответов  Просмотров  Последнее сообщение 
Аватар пользователя Random No Avatar phpbb3 (случайная аватара по умолчанию)
Random No Avatar - модификация для phpbb3, автоматически назначающая случайную аватару пользователю если он самостоятельно ее не установил

DeaDRoMeO

83

5219

Аватар пользователя

29 апр 2014, 17:09

Князь Мышкин

Аватар пользователя Index SEO
Index SEO phpbb3 - прекрасный мод в плане СЕО оптимизации для форумов phpbb3, позволит вам задать описание и список ключевых слов для главной страницы

DeaDRoMeO

156

11603

Аватар пользователя

25 ноя 2017, 14:18

DeaDRoMeO

Аватар пользователя Лог регистраций phpbb3
Лог регистраций phpbb3 - полезное в администрировании дополнение для phpbb3, данная модификация ведет лог всех ответов пользователей при регистрации

DeaDRoMeO

125

12178

Аватар пользователя

05 дек 2015, 20:27

Чародейка

Аватар пользователя FAQ Manager phpbb3
FAQ Manager - модификация для phpbb3, позволяющая редактировать FAQ через администраторский раздел

tralan

15

2700

Аватар пользователя

11 июн 2016, 15:25

Beksssss

Аватар пользователя BAN redirect URL phpbb3
BAN redirect URL - модификация для phpbb3, позволяющая перенаправлять заблокированных пользователей по любому адресу

DeaDRoMeO

21

4971

Аватар пользователя

16 июн 2014, 05:05

DeaDRoMeO

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


cron

Самая неформальная поддержка phpBB :P