Как в Drupal 7 в Profile2 вывести данные любого пользователя в ноде по uid?

19.02.2016

Есть модуль profile2 с помощью которого у каждого пользователя существует ряд дополнительных полей (ФИО, город, область, и тд).
В каждой ноде есть автодополняющее поле field_client, реализовано посредством user_reference, в котором выбирается пользователь из списка. На выходе у нас uid выбранного пользователя.

Задача: как используя uid подтянуть все данный из профиля (ФИО, город и тд)?
Простая конструкция user_load($uid) подтягивает только стандартные данные юзера, мыло, часовой пояс и тд.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (15)

Profile picture for user pantey
pantey
19.02.2016
profile2_by_uid_load($uid);
Profile picture for user 1541
Гость
19.02.2016

Не работает! Даже сайт не загружается

Profile picture for user pantey
pantey
19.02.2016

работает, проверил. В каком хуке используете ?
Я использовал в:

<?php
function hook_preprocess_page(&$variables){
  // example user load profile2
  $uid = 42;
  $name_profile = 'main';
  $obj_profile = profile2_by_uid_load($uid, $name_profile);
  debug($obj_profile);
}
Profile picture for user 1541
Гость
19.02.2016

видимо я просто тугой. это еще нужно дополнительно хук писать в отдельном модуле?
так просто парой строк кода в node.tpl.php не обойтись?

Profile picture for user pantey
pantey
19.02.2016

из node.tpl.php тоже сработает, но это костыль.

Profile picture for user 1541
Гость
19.02.2016

У меня даже костыль не получается!((
Я вставляю в node.tpl.php вот этот код

function hook_preprocess_page(&$variables){
  // example user load profile2
  $uid = render($content['field_client']['#items'][0]['uid']);
  $name_profile = 'client';
  $obj_profile = profile2_by_uid_load($uid, $name_profile);
  debug($obj_profile);
}

а данные как вытягивать? сделал print_r($obj_profile); там ниче нету

Profile picture for user pantey
pantey
19.02.2016

в ноду нужно вставлять

<?php
 $uid = render($content['field_client']['#items'][0]['uid']);
  $name_profile = 'client';
  $obj_profile = profile2_by_uid_load($uid, $name_profile);
  debug($obj_profile);
?>
Profile picture for user 1541
Гость
19.02.2016

Вставил, вообще не загружается ничего, даже тайтл))

 $uid = render($content['field_client']['#items'][0]['uid']);
  $name_profile = 'client';
  $obj_profile = profile2_by_uid_load($uid, $name_profile);
  debug($obj_profile);
print_r($obj_profile);

ниче не выдает. Я так понял надо сначала сам хук в модуль вставить, а уж потом этот кусок кода в ноду, правиольно?

Profile picture for user pantey
pantey
19.02.2016

нет. render() - здесь не нужен.
вставьте этот код без ваших изменений и посмотрите будет ли результат:

<?php
$uid= 1;
$name_profile = 'client';
$obj_profile = profile2_by_uid_load($uid, $name_profile);
debug($obj_profile);
?>
Profile picture for user 1541
Гость
19.02.2016

Неа. Не загружается ничего абсолютно. Белый экран!
Хук при этом завернутый в модуле ставить надо?

Profile picture for user pantey
pantey
19.02.2016

нет, не нужно.

Profile picture for user 1541
Гость
19.02.2016

Тогда я все правильно делаю, но нифига не работает, значит чтото все же не так делаю

Profile picture for user pantey
pantey
19.02.2016

ищите ошибку у себя. Я не в силах, силой мысли, определять что вы там делаете.

Profile picture for user 1541
Гость
19.02.2016

Реально устал возиться. Ни один метод вывода не работает.
Непонятно что делаю не так.
Не подскажете какой нибудь другое решение для хранения дополнительных полей у пользователя определенной роли, чтоб можно было потом эти поля легко доставать опираясь на uid?

Profile picture for user 1541
HH
03.07.2016

Здравствуйте!
Может немного не по теме
А как вывести форму авторизации в БЛОК, что бы вставлять куда захочу на типа как существующего дефолтного модуля ЮЗЕР блока Входа на сайт.
Просто у меня сейчас через Profile2 и profile2_regpath существуют готовые страницы, а как их блоком сделать???