Avatar of poster on Index and Viewforum phpbb3

В данном подфоруме будут располагаться темы с анонсами интересных модификаций, а так же будут рассматриваться проверенные временем дополнения для phpBB3.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

В догонку для boroda-max
Вот посмотрите код моего шаблона forumlist_body.html (subsilver2)


Вот что получается: если в форуме есть сообщения, то и будет дата и время последнего сообщения: forumrow.LAST_POST_TIME
Если есть время последнего сообщения: <!-- IF forumrow.LAST_POST_TIME -->
то будет выполняться блок (1), где происходит вывод аватара случайного или пользовательского.
Если нет времени последнего сообщения
то будет выполняться блок (2), где происходит вывод надписи "Нет сообщений".

У вас где-то здесь ошибка.
В любой непонятной ситуации – ложись спать!
#161
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

Александр - спасибо большое, благодаря Вам! код стал

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

//-- 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'];
       $avatar_max_dimensions = $avatar_width = $avatar_height = 40;
   }
   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'];
       $avatar_max_dimensions = $avatar_width = $avatar_height = 40;
   }

   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 ------------------------------------------------------------ 
и все заработало! ;) (даже с "отражением")
#162
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

Очень рад, что удалось Вам помочь.
boroda-max писал(а):(даже с "отражением")
Ух-ты, а это как? Скриншот глянуть можно?

И еще один моментик: в моей предложенной замене функции user_display_avatar не должно быть в начале кода:

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

   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
     return;
   }
этот код мы удаляем. Посмотрите внимательно мое сообщение и разницу кодов функции до и после замены!!!
Если у Вас работает такой вариант функции, то это очень и очень странно
В любой непонятной ситуации – ложись спать!
#163
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

на странице индекса


профиль...


;) Александр, почту Вам отправил...
Последний раз редактировалось boroda-max 18 фев 2013, 09:39, всего редактировалось 1 раз.
#164
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

tralan писал(а):разницу кодов функции до и после замены!!!
удалил, очистил кэш......результат тот же ;) работает все-кроме блока "ПОСЛЕДНИЕ ТЕМЫ"....танцы с бубном и чтение мантр - не помогли....правки http://www.phpbbguru.net/community/topic30408-30.html и https://www.phpbb.com/community/viewtop ... #p13181295 и http://www.phpbbguru.net/community/topi ... ml#p376924 и http://www.phpbbguru.net/community/topi ... ml#p376925 помогли частично))))



настройки 9 на страницу


все на одной
то есть на "лицо" не благотворное влияние Луны ;)
#165
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

boroda-max писал(а):удалил, очистил кэш......результат тот же работает все-кроме блока "ПОСЛЕДНИЕ ТЕМЫ"
этот код там просто лишний. Все мои изменения - только для вывода Случайных аватарок в списке форумов и в списке тем. Для последних сообщений - я правил файлы includes\functions_recenttopics.php и styles\ВАШ СТИЛЬ\template\recent_topics_body.html.
К сожалению у меня стиль subsilver2 и правки для Последних сообщений я делал у себя под этот стиль.
boroda-max писал(а):Александр, почту Вам отправил...
Получил. Но в свете Ваших последних сообщений, что все заработало, уже наверное не актуально.
Я бы мог посмотреть Ваши файлы includes\functions_recenttopics.php и styles\ВАШ СТИЛЬ\template\recent_topics_body.html (если пришлете в последней редакции), может смог бы Вам что-то посоветовать насчет "Последних сообщений"
В любой непонятной ситуации – ложись спать!
#166
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

В продолжении своего сообщения - теперь об объединении этого мода и "Последних сообщений" для стиля subsilver2
Правка затрагивает файлы /includes/functions_recenttopics.php и /styles/ВАШ СТИЛЬ/template/recent_topics_body.html. Все по аналогии изменений в файлах viewforum.php и /styles/ВАШ СТИЛЬ/template/viewforum_body.html

Открываем /includes/functions_recenttopics.php.
находим:

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

		'U_VIEW_TOPIC'			=> $view_topic_url,
		'U_VIEW_FORUM'			=> $view_forum_url,
		'U_MCP_REPORT'			=> append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=reports&f=' . $forum_id . '&t=' . $topic_id, true, $user->session_id),
		'U_MCP_QUEUE'			=> $u_mcp_queue,
		'S_TOPIC_TYPE_SWITCH'	=> ($s_type_switch == $s_type_switch_test) ? -1 : $s_type_switch_test,
	));
вставляем после:

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

//-- mod : apiv ----------------------------------------------------------------
//-- add
	if ( $config['avatar_topics_last_poster_show'] )
	{
		$template->assign_var('AVATAR_MAX_DIMENSIONS', $config['avatar_max_dimensions']);
	}
	user_display_avatar($row, 'topic_first', 'recenttopicrow', $config['avatar_topics_first_poster_show']);
	user_display_avatar($row, 'topic_last', 'recenttopicrow', $config['avatar_topics_last_poster_show']);
//-- fin mod : apiv ------------------------------------------------------------
Открываем /styles/ВАШ СТИЛЬ/template/recent_topics_body.html.
находим:

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

<!-- IF recenttopicrow.S_UNREAD_TOPIC --><a href="{recenttopicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a><!-- ENDIF -->
вставляем перед:

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

				<!-- IF recenttopicrow.TOPIC_FIRST_POSTER_AVATAR -->
				<table>
				<tr>
					<td width="{AVATAR_MAX_DIMENSIONS}">{recenttopicrow.TOPIC_FIRST_POSTER_AVATAR}</td>
					<td>
					<!-- ENDIF -->
находим:

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

				</td>
				<td class="row1" width="50" align="center"><p class="topicdetails">{recenttopicrow.REPLIES}</p></td>
вставляем перед:

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

					<!-- IF recenttopicrow.TOPIC_FIRST_POSTER_AVATAR -->
					</td>
				</tr>
				</table>
				<!-- ENDIF -->
находим:

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

					<p class="topicdetails" style="white-space: nowrap;">{recenttopicrow.LAST_POST_TIME}</p>
вставляем перед:

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

				<!-- IF recenttopicrow.TOPIC_LAST_POSTER_AVATAR -->
				<table>
				<tr>
					<td width="{AVATAR_MAX_DIMENSIONS}">{recenttopicrow.TOPIC_LAST_POSTER_AVATAR}</td>
					<td>
				<!-- ENDIF -->
находим:

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

				</td>
			</tr>

		<!-- BEGINELSE -->
вставляем перед:

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

				<!-- IF recenttopicrow.TOPIC_LAST_POSTER_AVATAR -->
					</td>
				</tr>
				</table>
				<!-- ENDIF -->
И еще для красивости находим строки:

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

					<p class="gensmall">{L_POST_BY_AUTHOR} {recenttopicrow.LAST_POST_AUTHOR_FULL}
					{L_POSTED_ON_DATE} {recenttopicrow.LAST_POST_TIME}


в них LAST_POST_AUTHOR_FULL заменяем на TOPIC_AUTHOR_FULL, чтобы показать автора темы (первого сообщения), а не последнего.
в них LAST_POST_TIME заменяем на FIRST_POST_TIME, чтобы показать время первого сообщения (время создания темы), а не последнего сообщения

Не забываем сохранять изменения, чистить кеш. Ну и всего наилучшего!!!

И на всякий случай, так как изменения немного сложноваты, прикладываю свой файл:
recent_topics_body.rar
(1.69 КБ) 6 скачиваний
В любой непонятной ситуации – ложись спать!
#167
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение DeaDRoMeO »

Спасибо отличный материал)))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#168
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

tralan, Александр, спасибо большое! Но мод упорно выборочно подставляет аватарки......
#169
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

boroda-max писал(а):Но мод упорно выборочно подставляет аватарки
У вас только в списке форумов не выводятся случайные аватары?
А как в списке тем и в моде "Последние сообщения"?

Проверьте правки в файле functions_display.php, есть там код?:

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

//-- mod : apiv ----------------------------------------------------------------
//-- add
		user_display_avatar($row, 'forum_last', 'forumrow', $config['avatar_forums_last_poster_show']);
//-- fin mod : apiv ------------------------------------------------------------


и код функции user_display_avatar такой?:

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

//-- 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 ------------------------------------------------------------
В любой непонятной ситуации – ложись спать!
#170
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

Обнаружилась еще одна проблемка с выводом случайных аватарок. Оказалось что поля forum_last_poster_avatar, topic_first_poster_avatar, topic_last_poster_avatar , после установки мода, для пользователей без аватарок тоже заполняются, поэтому случайные аватары выводились крупные (не 40Х40, а 100Х100), вот пример:
пользователь с аватаром:

пользователь без аватара:


поэтому ранее описанное мной условие и код в функции user_display_avatar неполные:

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

	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');
	}
для устранения данной проблемы нужно еще проверять - пустое или не пустое значение аватара (есть или нет название файла аватара, на картинках они подчеркнуты ) и в коде найти:

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

 if ( !$display || empty($row[$prefix . '_poster_avatar']) )
и заменить на:

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

if ( !$display || empty($row[$prefix . '_poster_avatar']) || $avatar['avatar'] == '' )
Всем удачи!
Последний раз редактировалось tralan 19 фев 2013, 20:03, всего редактировалось 1 раз.
В любой непонятной ситуации – ложись спать!
#171
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

tralan писал(а):Проверьте правки в файле
да, один в один,
tralan писал(а):user_display_avatar неполные:
исправил...
Александр, а что скажите?
ABDev писал(а):

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

#
#-----[ OPEN ]------------------------------------------------
#
includes/acp/acp_forums.php
#
#-----[ FIND ]------------------------------------------------
#
                    // On add, add empty forum_options... else do not consider it (not updating it)
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
//-- mod : apiv ----------------------------------------------------------------
//-- add
                    $forum_data += array('forum_last_poster_avatar' => '');
//-- fin mod : apiv ------------------------------------------------------------
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------------
#
# EoM   
#172
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

не выводятся случайные только в списке форумов?
Александр, а что скажите?
а откуда эта правка, в инстале этого мода такого нет
В любой непонятной ситуации – ложись спать!
#173
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

Александр, в 166 сообщении я говорил что все "перерыл" ;) ссылка на сообщение ABDev сайт ABDev
#174
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

boroda-max писал(а):ссылка на сообщение ABDev сайт ABDev
boroda-max писал(а):Александр, а что скажите?
Эта правка для исправления ошибки создания и редактирования форумов.
Я по совету Атлант-19 поступил по другому:
через php myadmin, в таблице phpbb_forums, для поля forum_last_poster_avatar, в таблице phpbb_topics - для поля topic_first_poster_avatar и topic_last_poster_avatar установил значение по умолчанию NULL и все работает.

Об ошибках, которые появлялись, я писал. Мод конечно в установке сложноватый. В общем я все делал так: скачал мод из этой темы (версия 1.3.0), установил все по инструкции, установил полям значение по умолчанию (NULL), сделал дополнительные правки, о которых я писал выше (эти правки предназначены для объединения этого мода и модов "Случайные аватары" и "Последние сообщения"). Вот, и как не странно, все работает, пока больше никаких ошибок не появилось.
Если обычно у меня что-то не устанавливается, я возвращаю все правки назад и делаю все сначала с удвоенной внимательностью. Могу Вам посоветовать только это. :-00):
В любой непонятной ситуации – ложись спать!
#175
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

Спасибо большое Александр, так как пхпАдмин начал общаться со мной с ошибки (#1067 - Invalid default value for 'forum_last_poster_avatar'), пойду путем - вернуть исходное-поставить-тестить-сносить :-00):
#176
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

boroda-max, появились на моем форуме новые пользователи и новые сообщения (после установки мода) и заметил туже ошибку:



Проанализировав ситуацию, понял, что ошибка возникает только в списке форумов, в списке тем (где есть первое и последнее сообщение) - нет. Начал искать и нашел в инсталляции в скрипте db_update.php идет первоначальная запись данных в поля forum_last_poster_avatar, topic_first_poster_avatar и topic_last_poster_avatar. Но в запросе из скрипта выбираются только те пользователи у которых есть свой аватар, т.е. не во все строки в таблицах БД в эти поля записывается информация.

Решил попробовать перезапустить скрипт (обновить инфу в полях), но переделав запрос, чтобы выбирались все пользователи и обрабатывались все строки в таблицах phpbb_forums и phpbb_topics.
Т.е. первый раз запустил скрипт - деинсталлировал, а во второй раз запустил - установил.
После этого завел нового пользователя, создал в "сомнительном" форуме сообщение - ошибка больше не повторилась.



Если захочешь - поэкспериментируй, переделанный скрипт здесь:
db_update_checkerror.rar
(1.21 КБ) 7 скачиваний
НО ПЕРЕД ЭТИМ ДЕЛАЙ BACKUP БД !!!!!!!
В любой непонятной ситуации – ложись спать!
#177
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

tralan писал(а):НО ПЕРЕД ЭТИМ ДЕЛАЙ BACKUP БД !!!!!!!
Спасибо огромное!
#178
Аватара пользователя
tralan
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 235
Стаж: 11 лет 3 месяца
Откуда: Таганрог
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение tralan »

Пробовали или еще нет?
Помогло?
В любой непонятной ситуации – ложись спать!
#179
Аватара пользователя
boroda-max
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 180
Стаж: 11 лет 4 месяца
Откуда: CCCР. Ленинград
Контактная информация:

Avatar of poster on Index and Viewforum phpbb3

Сообщение boroda-max »

tralan, помогло уже в том, что при смене кол-ва отображаемых тем (5 или 7 или 15.....и т.д.) аватарки пользователей "встают" на место (ранее баг был-не возвращались)
#180
Ответить