Получение данных полей профиля пользователя

Главные вкладки

Аватар пользователя Kottov Kottov 3 марта 2014 в 1:29

Разбирался с данными полей сущностей.
Когда вставляю в файл шаблона page.tpl.php

<?php print_r ($node); ?> - все выдает по всем полям

если хочу получить данные по полям пользователя
<?php print_r ($user); ?> - то выдает только основные поля, а те что были добавлены мной - не выдает.

stdClass Object
(
[uid] => 1
[name] => admin
[pass] => $S$DA2y74xg58wTPDU4j36FLu3N8nfBUq08647GYBIjY9AUNa9caOvЧXXXX
[mail] => xxxxxxx@gmail.com
[theme] =>
[signature] =>
[signature_format] => filtered_html
[created] => 1388929434
[access] => 1393792842
[login] => 1393676370
[status] => 1
[timezone] => Europe/Kiev
[language] => ru
[picture] => 0
[init] => xxxxxxxx@gmail.com
[data] => Array
(
[overlay] => 1
)

[sid] => rHkwGtdVPgvoRT2ksEGIZgFSZJzWQAvg3NJJfMkZgxx
[ssid] =>
[hostname] => 127.0.0.1
[timestamp] => 1393792842
[cache] => 0
[session] => batches|a:2:{i:65;b:1;i:66;b:1;}
[roles] => Array
(
[2] => authenticated user
[3] => administrator
)

В чем проблема?
profile2 - не ставил. (как там получать данные полей? тоже не все будет выдавать?)

Комментарии

Аватар пользователя alextdk alextdk 3 марта 2014 в 2:02

А почемубы не использовать panels или page_manager? мы уже давно отказались от темплейтов) но если так уж надо, как вы правильно заметили объект юзер не содержит полей, если нужны поля сделайте $account = user_load($user->uid);

Аватар пользователя Kottov Kottov 18 марта 2014 в 6:05

Спасибо,

с помощью
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields);
?>
в page.tpl.php получил как выстроены поля в массиве

смог вывести значение нужного поля, если добавить в page.tpl.php следующее
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields ->field_address['und']['0']['value']);
?>

но если помещаю этот код в PHP поле то выдает ошибку

Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 173 в файле C:\OpenServer\domains\localhost\gromady.od.ua\includes\entity.inc).

вычитал что в 7-ом в user_load() нельзя поставлять массив, а только INTEGER
Проверял $user->uid челое число. Даже обозначил его отдельную переменную и потом подставлял в user_load() - выдает ошибку и не отображает поле.
А если подставляю число - все срабатывает.

Аватар пользователя alextdk alextdk 18 марта 2014 в 10:05

Kottov wrote:
Спасибо,

с помощью
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields);
?>
в page.tpl.php получил как выстроены поля в массиве

смог вывести значение нужного поля, если добавить в page.tpl.php следующее
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields ->field_address['und']['0']['value']);
?>

но если помещаю этот код в PHP поле то выдает ошибку

Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 173 в файле C:\OpenServer\domains\localhost\gromady.od.ua\includes\entity.inc).

вычитал что в 7-ом в user_load() нельзя поставлять массив, а только INTEGER
Проверял $user->uid челое число. Даже обозначил его отдельную переменную и потом подставлял в user_load() - выдает ошибку и не отображает поле.
А если подставляю число - все срабатывает.

Незнаю насчет ошибки, но тот код который вы приводите в примере уже содержит ошибку, а именно:


<?php
// Неправильно.
$user_fields  user_load($user->uid);
print_r ($user_fields ->field_address['und']['0']['value']); 

// Правильно.
$account user_load($user->uid);
$account->field_address['und'][0]['value'];
?>

Обратите внимание на [0] вместо ['0'].