Здравствуйте!
надо сделать заполнение поля "номер телефона" в профиле пользователя своим скриптом. Это может быть модуль, но я планирую прямо в ноде (в ск-едиторе с фильтром пхп-код) вставить скрипт, в котором будет с юзера спрашиваться номер телефона. Юзер вводит этот номер, жмет "сохранить" и надо записать этот телефон в профиль этого юзера.
Соостветственно, uid юзера известен. поле "номер телефона" создано в профиле и имеет машинное имя: field_telnum
как вписать туда введенное значение?
в инете нашел пример для добавления емаила:
<?php
$user=user_load(7);
$user->mail = 'new-email@example.com';
user_save($user);
?>
но так у меня не сработало, возможно потому что поля field_telnum нет при выводе:
<?php
global $user;
echo '<pre>';
print_r($user);
echo '</pre>';
?>
так как же записать данные в поле в профиле юзера?
РЕШЕНИЕ
смотреть все поля юзера так:
<?php
$userID="Ваш_АйДи";
$user=user_load($userID);
echo '<pre>';
print_r($user);
echo '</pre>';
?>
а добавить номре телефона в поле так:
<?php
$userID=1;
$telnum=555;
$user = user_load($userID); // Loading account
$user->field_telnum['und'][0]['value'] = '$telnum';
user_save($user);
?>
Всем спасибо за подсказки!
Комментарии
$edit['mail'] = '...';
user_save($user, $edit);
а проще entity_save('user', $user)
где ж оно хранится и отображается? Может это и не юзера добро?
такс, извините, я не особо программист. В моем случае поулчается как-то так чтоли:
<?php
global $user;
$userID="22"; // здесь я считаю ид залогиненного юзера
$telnum="555"; //данные полученные из формы
$user=user_load($userID);
$edit['field_telnum']=$telnum;
user_save($user,$edit);
?>
- так?
- это добро юзера. Поле созданное в Конфигурация-Пользователи-Профили-Добавить поле
я так понимаю, это организовано модулем профайл, который встроен в друпал-7...
и поэтому при запросе:
<?php
global $user;
echo '
';
?>
оно не выводится. Также как и другие созданные поля в профиле юзера: фио и т.п.
если зайти в редактирование профиля - то эти поля видны и в них можно вносить изменения.
.
а Вы сравните
<?php
global $user;
echo '<pre>';
print_r($user);
echo '</pre>';
?>
и
<?php
$userID="Ваш_АйДи";
$user=user_load($userID);
echo '<pre>';
print_r($user);
echo '</pre>';
?>
ага, при таком варианте print_r($user) выводит все поля, в том числе и нужное:
...
[field_telnum] => Array
(
)
...
- хорошо, поле увидел. А как теперь в него записать данные?
$edit['field_telnum']=$telnum;
user_save($user,$edit);
- так? я значит юзер_лоад не делал просто чтоли...
<?php
$userID=;
$telnum=;
$user=user_load($userID);
$user->field_telnum = $telnum;
//field_telnum указывать с полным адресом, подсмотренным в принт_р (удобнее dprint_r)
user_save($user);
?>
dprint_r($user);
- вообще не сработало.
а принт-р показывает поле как:
<?php
[field_telnum] => Array
(
)
?>
но указанный вами пример с $user->field_telnum = $telnum; несработал - в профиле юзера не появился заполненный номер телефона.
ура! получилось вот так:
<?php
$userID=1;
$telnum=555; $user = user_load($userID); // Loading account $user->field_telnum['und'][0]['value'] = $telnum;
user_save($user);
?>