Вычисление возраста пользователя в Profile2

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

Аватар пользователя roman_2012 roman_2012 31 октября 2012 в 16:40

Здравствуйте!
Заитересовался в сентябре 2012 года CMS D7. Чтобы лучше изучать систему - создал тестовый сайт.

Есть задача: отображать в профиле пользователя (использую Profile2) возраст.

Для этого уже создал поле "День рождения" (машинное имя: field_birthday, тип поля: Data, виджет: Выбор из списка). Предполагается, что пользователь в этом поле будет выбирать дату своего рождения. Поле приватное.
Также сделал второе поле "Возраст" (машинное имя: field_age, тип поля: Вычисляемое, виджет: Вычисляемое). В этом поле должен отображаться возраст пользователя исходя из данных поля "День рождения".

Понимаю, что для этого нужно написать php-код, который бы делал нужный пересчет. Но, поскольку, я новичок в этом, реализовать сам не могу. Подскажите, пожалуйста решение для этой задачи.

Заранее спасибо всем кто откликнится на мой, думаю, не сложный, вопрос.

Комментарии

Аватар пользователя snitkoff snitkoff 21 февраля 2013 в 19:19

Задача: в профайл пользователя добавить поле возраст.
Решение:
Поле будем делать динамически-рассчитываемым. В качестве профиля пользователя используется Profile2.
Дополнительно нам понадобятся:

Date (для формирования поля даты и реализации календаря)
Computed fields (само поле возраст)

Установка и настройка

Модули ставятся, как обычно. В модуле Date обратите внимание на часовой пояс по умолчанию и форматы даты.
В профиль пользователя добавляем новое поле "Дата рождения" типа "Date" называем его field_profile_birthdate указываем виджет "выпадающий календарь".
Таким образом получаем поле для ввода даты рождения. От него мы будем плясать при расчёте возраста.
Дальше создаём поле "Возраст" типа "Computed" и именем field_profile_birthdate тип виджета один - computed.
В настройках поля "возраст":
Computed Code (PHP)
$entity_field[0]['value'] Sad time() - strtotime($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value']) ) / 86400 / 365.25;
Display Code (PHP)
$display_output = $entity_field_item['value'];