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

[FAQ] Дополнительные поля профиля

Добавлено: 13.04.2013 9:14
rxu
Как отобразить дополнительные поля профиля на страницах phpBB и внешних страницах?

Источник: Tutorial.Custom profile fields.

Для отображения полей профиля на внешних страницах необходимо добавить следующий код (предполагается, что сессия phpBB уже интегрирована в скрипт).
В данном примере отображение дополнительных полей профиля не будет зависеть от соответствующих настроек отображения в администраторском разделе, т.е. поля отображаются в любом случае.

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

// Get custom profile fields functions
include_once($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);

// Initialize custon profile field store array and class object
$profile_fields = array();
$cp = new custom_profile();

// Get custom profile fields data for current user
$profile_fields = $cp->generate_profile_fields_template('grab', $user->data['user_id']);

// Assign the data to the template
$profile_fields = (isset($profile_fields[$user->data['user_id']])) ? $cp->generate_profile_fields_template('show', false, $profile_fields[$user->data['user_id']]) : array();

// Send vars to template
$template->assign_vars(array(
	'S_CUSTOM_FIELDS2'        => (isset($profile_fields['row']) && sizeof($profile_fields['row'])) ? true : false,
));

if (!empty($profile_fields['row']))
{
    $template->assign_vars($profile_fields['row']);
}

if (!empty($profile_fields['blockrow']))
{
    foreach ($profile_fields['blockrow'] as $field_data)
    {
        $template->assign_block_vars('custom_fields2', $field_data);
    }
}
После этого можно использовать в шаблоне подобную конструкцию для вывода всех дополнительных полей профиля текущего пользователя:

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

<!-- BEGIN custom_fields2 --><dt>{custom_fields2.PROFILE_FIELD_NAME}:</dt> <dd>{custom_fields2.PROFILE_FIELD_VALUE}</dd><!-- END custom_fields2 -->
Если необходимо вывести только определенное поле, код должен быть следующим (здесь для примера взято имя/заголовок поля - test):

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

<!-- BEGIN custom_fields2 -->
	<!-- IF custom_fields2.PROFILE_FIELD_NAME eq "test" -->
		<dt>{custom_fields2.PROFILE_FIELD_NAME}:</dt> <dd>{custom_fields2.PROFILE_FIELD_VALUE}</dd>
	<!-- ENDIF -->
<!-- END custom_fields2 -->

Re: [FAQ] Дополнительные поля профиля

Добавлено: 10.03.2018 13:39
snbilyuk
В версии phpBB3.2.2 эта конструкция не работает. Отсутствует файл 'includes/functions_profile_fields.' . $phpEx); Видимо его перенесли в другой файл. да и $cp = new custom_profile(); не инициализируется.
Не подскажете где искать подобную информацию о выводе дополнительных полей профиля на страницах форума?
Вкраце могу сказать так: создал отдельную страницу, что бы пользователь мог посмотреть свою информацию по всем дополнительным полям. Но , ни как не могу этого сделать. Все фаги найденные в инете ни чего не дали. Прочитал ваш, и понял, что это наиболее приемлимое решение, но не могу реализовать. Тупая подстановка:

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

<!-- BEGIN custom_fields -->
            <dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
<!-- END custom_fields -->
ничего не дает. Видимо нужна процедура вытаскивания данных из профиля и занесения в какой-то массив данных. Если сможете, то подскажите как.

Re: [FAQ] Дополнительные поля профиля

Добавлено: 11.03.2018 0:46
LavIgor
snbilyuk писал(а): 10.03.2018 13:39 Видимо его перенесли в другой файл.
Да, функции переехали сюда.
Суть примерно та же, но методы чуть другие.