Разбирался с данными полей сущностей.
Когда вставляю в файл шаблона 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 - не ставил. (как там получать данные полей? тоже не все будет выдавать?)
Комментарии
А почемубы не использовать panels или page_manager? мы уже давно отказались от темплейтов) но если так уж надо, как вы правильно заметили объект юзер не содержит полей, если нужны поля сделайте $account = user_load($user->uid);
Спасибо,
с помощью
<?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'].
http://drupalcontrib.org/api/drupal/contributions!profile2!profile2.api....