Для вывода возраста пользователя делал все статье
Задача: в профайл пользователя добавить поле возраст.
Решение:
Поле будем делать динамически-рассчитываемым. В качестве профиля пользователя используется Profile2.
Дополнительно нам понадобятся:
Date (для формирования поля даты и реализации календаря)
Computed fields (само поле возраст)
Установка и настройка
Модули ставятся, как обычно. В модуле Date обратите внимание на часовой пояс по умолчанию и форматы даты.
В профиль пользователя добавляем новое поле "Дата рождения" типа "Date" называем его field_profile_birthdate указываем виджет "выпадающий календарь".
Таким образом получаем поле для ввода даты рождения. От него мы будем плясать при расчёте возраста.
Дальше создаём поле "Возраст" типа "Computed" и именем field_profile_birthdate тип виджета один - computed.
В настройках поля "возраст":
Computed Code (PHP)
$entity_field[0]['value'] time() - strtotime($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value']) ) / 86400 / 365.25;
Display Code (PHP)
$display_output = $entity_field_item['value'];
Но есть проблема после возраста выводятся и какие то другие цифры к примеру если возраст пользователя 22, то выводится 22.540572553046. Как можно решить эту проблему?
Комментарии
Способ у Вас, мягко говоря странный, однако, если проблема именно в 22.540572553046, то можно превратить float в integer,
$display_output = (integer)$entity_field_item['value'];
Однако, все равно возможны редкие небольшие ошибки с определением возраста.Можно было бы сделать так:
$entity_field[0]['value'] = date_diff(date_create($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value'],date_create())->format('%y');
правда для этого версия пыха должна быть >= 5.3
Способ действительно странный. Ставите модуль Date, в поле даты вводим дату рождения пользователя, в настройках отображения поля выбираем "Назад", интервал - 1.
Спасибо большое, все получилось!