Возрастная категория пользователей
При регистрации пользователь вводит дату своего рождения.
Есть 3 возрастные категории пользователей:
16-23
24-50
51-100
Вопрос:
каким образом сделать возрастные категории (можно как-то таксономией?),
и как автоматически назначать соответствующую возрастную категорию пользователю если у нас есть дата рождения которую он вводит при регистрации?
Спасибо!
Начал делать так:
Создал словарь таксономии "Возрастная категория" в котором добавил 3 термина (16-23, 24-50, 51-100):
Добавил поле (ссылку на словарь) в профайле.
Поставил модуль Rules.
Пытаясь создать правило застрял.
Можно ли как-то с помощью модуля Rules назначить пользователю соответствующий термин, при регистрации?
Как узнать с помощью этого модуля возраст пользователя?
Соответсвенно, если у пользователя завтра ДР то переназначить термин.
Спасибо!
Если вам нужно просто знать категории пользователей, тогда создайте поле с текстовыми значениями и сделайте обязательным для заполнения.
Если нужен какой-то функционал, тогда лучше сделать обычный выбор даты, через поля date:
https://drupal.org/project/Date
Ну, а если у пользователя завтра день рождение и он уже попадает в другую возрастную категорию и забывает изменить её в своем профиле?
Или я Вас не правильно понял?
Мне просто потом нужно будет формировать платежки для пользователя, а цена оплаты за месяц зависит от возрастной категории.
Хочу создать правило с помощью модуля Rules, чтобы при регистрации автоматически присвоить соответствующий термин таксономии для юзера.
Есть поле типа Date,куда пользователь вводит дату рождения;
И есть поле типа Computed которое считает сколько сейчас лет пользователю.
Вопрос возник по созданию правила.
Делаю так:
Событие: Перед сохранением нового пользователя;
Условие: вот тут не знаю как проверить что значение поля типа Computed входит в соответствующий диапазон 16-22;
Действие: и не знаю как присвоить пользователю термин.
Есть предложения?
Спасибо!
Вы предложите пользователя заполнить дату, а в какую категорию он входит вычисляйте сами. Поле можно скрыть, чтобы потом использовать в своих целях. Но тут нужно предусмотреть возможность, что пользователь дату свою сменит, нужно будет категорию пересчитать. Можно пересчитывать категорию при вычисление суммы платежа.
Я думаю модуль Rules позволяет задать ограничение на даты, чтобы настроить правила.
Сделал с помощью поля computed.
Computed Code (PHP):
$age = ( time() - strtotime($entity->field_profile_birthdate[LANGUAGE_NONE][0]['value']) ) / 86400 / 365.25;
if($age>=16 && $age<=23){
$entity_field[0]['value'] = 1;
}
else if($age>=24 && $age<=59){
$entity_field[0]['value'] = 2;
}
else if($age>=60 && $age<=100){
$entity_field[0]['value'] = 3;
}
field_profile_birthdate - машинное имя поля типа Date
Display Code (PHP):
$display_output = $entity_field_item['value'];
тоесть если пользователю 16-23 года то в базу пишем 1, если 24-59 - то пишем 2, и если 60-100 - пишем 3.
Но значение записывается только во время создания (тобиш регистрации) пользователя или когда я повторно сохраняю профиль. Тоесть если я регистрируюсь сегодня и мне 23 года, а завтра у меня ДР то я записан в категорию 16-23. И на следующий день мне уже 24 но я все равно в категории 16-23.
Возникает следующий вопрос:
как это можно побороть?
какие варианты?
Спасибо!
Если вам только один раз нужно вычислять, то лучше ваш php-код навесить на хук hook_user_insert(), и уже в нем в нужно поле записать данные и не менять.