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

Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 27.03.2018 18:25
Maanse
Была тема, тему закрыли, туда ей и дорога
Тема следующая.
Нужно переделать шаблон отображения данных о пользователе на страницах тем (стиль prosilver, большую часть решил изменением шаблона viewtopic_body.html). В частности нужно заменить отображение логина со ссылкой на профиль пользователя на отображение доп поле, содержащего ФИО, при этом сохранить ссылку на профиль.

Вот код который отвечает за вывод логина:

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

<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
Эта штука выводит <a href="./memberlist.php?mode=viewprofile&amp;u=60" class="username">TestUser01</a> т.е. готовую ссылку на профиль.
Вот задача заменить в готовой ссылке TestUser01 на данные из дополнительного поля.
POST_AUTHOR_FULL встречается в: viewtopic.php, includes\functipost_posting.php, includes\mcp\mcp_pm_reports.php, includes\mcp\mcp_post.php, includes\mcp\mcp_queue.php, includes\mcp\mcp_reports.php

Все эти файлы содержат похожий код вида:
'POST_AUTHOR_FULL' => get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),

Все они ссылаются на функцию get_username_string живущую в includes\functions_content.php которую очень не хочется попортить.
Подскажите как ее модифицировать, чтобы вместо логина светилось доп. поле.

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 27.03.2018 20:07
Татьяна5
Для вывода именно допполя отдельно в viewtopic_body есть пример кода

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

		<!-- IF postrow.S_PROFILE_FIELD1 -->
			<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
			<dd><strong>{postrow.PROFILE_FIELD1_NAME}{L_COLON}</strong> {postrow.PROFILE_FIELD1_VALUE}</dd>
		<!-- ENDIF -->
Значение поля оттуда получить можно, а дальше дело техники

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 27.03.2018 20:14
Sheer
Maanse писал(а): 27.03.2018 18:25 как ее модифицировать
В phpBB3.2 не принятом модифицировать код движка. Создавайте расширение.
Maanse писал(а): 27.03.2018 18:25 туда ей и дорога
И эту бы закрыл, ибо темы следует создавать в соответствующих форумах. Для этой темы наиболее подходящий Для авторов
Перенесено.

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 28.03.2018 2:10
Maanse
Татьяна5 писал(а): 27.03.2018 20:07 Значение поля оттуда получить можно, а дальше дело техники
Значение PROFILE_FIELD1_VALUE возвращает данные столбца FIELD1 из таблицы profile_fields_data. Но где из PROFILE_FIELD1_VALUE выбирается значение FIELD1 я пока не разобрался. Если знаете, подскажите.
Sheer писал(а): 27.03.2018 20:14 И эту бы закрыл, ибо темы следует создавать в соответствующих форумах. Для этой темы наиболее подходящий Для авторов
Перенесено.
Спасибо.

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 28.03.2018 2:34
Татьяна5
{postrow.PROFILE_FIELD1_VALUE} ничего не выбирает, это и есть само значение. Уже выбранное

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 28.03.2018 10:12
Maanse
Татьяна5 писал(а): 28.03.2018 2:34 {postrow.PROFILE_FIELD1_VALUE} ничего не выбирает, это и есть само значение. Уже выбранное
{postrow.PROFILE_FIELD1_VALUE} ничего не выбирает, оно содержит значение которое в него записывает некоторая функция (которую не могу найти), определяющая, что стоит вместо field1 PROFILE_FIELD1_VALUE
вместо FIELD1 вписывается названия столбцов которые сделал я
т.е. например PROFILE_MYFIELD_VALUE выдаст значение из столбца MYFIELD таблицы profile_fields_data

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 28.03.2018 15:00
Татьяна5
В viewtopic.php это $cp_row, копать можно оттуда

Re: Изменение отображаемых данных пользователя (правка функции/правка шаблона)

Добавлено: 28.03.2018 15:17
Sheer
Maanse писал(а): 28.03.2018 10:12 {postrow.PROFILE_FIELD1_VALUE} ничего не выбирает, оно содержит значение которое в него записывает некоторая функция
Оно ничего не с одержит, поскольку туда некоторая функция (которая находится в \phpbb\profilefields\manager.php) ничего не записывает.

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

		<!-- IF postrow.S_PROFILE_FIELD1 -->
			<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
			<dd><strong>{postrow.PROFILE_FIELD1_NAME}{L_COLON}</strong> {postrow.PROFILE_FIELD1_VALUE}</dd>
		<!-- ENDIF -->
Это всего лишь пример, там написано
Use a construct like this
то есть Используйте конструкцию, наподобие этой
Чтобы реализовать вашу (бредовую абсолютно) задумку, нужно создавать расширение, использующее событие 'core.viewtopic_modify_post_row' чтобы изменить массив $post_row, переопределив в нем значение элемента с индексом 'POST_AUTHOR_FULL'
Но на мой взгляд достаточно вывести в минипрофиле данные из дополнительного поля. Это достигается штатными возможностями движка - нужно просто настроить дополнительное поле соответствующим образом.