我对Drupal非常陌生。
我需要在当前会话中设置用户创建的字段值,而不必将其保存到数据库中。
我有一个反映住宅建筑商会员资格的网站。与已成为该协会成员多年的用户的关联,但最近仅作为用户添加到该网站。因此,该网站将其显示为成员的时间很短,而不是很长时间。
我已经为他们加入协会时添加了一个自定义字段,我已经有了它可以获取该信息并更改用户信息并将其保存到数据库(在user-profile-item.tpl.php中) ,但它只更改后续数据库调用的信息,而不是当前会话。我也尝试在user-profile.tpl.php中更改$ user_profile变量,但这也没有改变当前会话的任何内容。我不介意更改数据库,但如何在当前会话中更新创建的字段值?
网站:http://certifiedmasterbuilder.com
这是我试过的:
global $user;
$user = user_load($user_profile['field_zip']['#object']->uid);
$join_date = field_get_items('user', $user, 'field_join_date')[0]['value']; $user->created = $join_date;
$user_save($user); // <-- This saves it to the database, but does not update the //current session value
// I tried this to update the current session, but it does not work
field_attach_update('user', $user);
entity_get_controller('user')->resetCache(array($user->uid));
答案 0 :(得分:0)
我通过编辑user-profile-item.tpl.php来实现它。我获得了我们正在查看的用户配置文件,检索了我想要的字段值,检查它是否包含与用户创建日期不同的值,然后将$ value变量更改为格式化日期:
$user = user_load(arg(1)); // Make sure the user object is fully loaded
$join_date = field_get_items('user', $user, 'field_join_date')[0]['value'];
if( $join_date > 0 && $user->created != $join_date )
{
$value = format_interval(REQUEST_TIME - $join_date);
}
我唯一的问题是除了使用arg(1)之外,还有更好的方法来获取用户ID。我听说这不是一个很好的方法。