При создании любой социальной сети очень важным является профайл пользователя, его контактные и личные данные, которые могут помочь установить более тесные связи между отдельными пользователями сети
При создании любой социальной сети очень важным является профайл пользователя, его контактные и личные данные, которые могут помочь установить более тесные связи между отдельными пользователями сети. Это касается как сообщества геймеров, так и сайта знакомств. Для того,чтобы создать и добавить в профайл пользователей поле "Возраст", нам понадобятся 4 модуля:
- Computed Field - http://drupal.org/project/computed_field
- Date Field - http://drupal.org/project/date
- CCK - http://drupal.org/project/cck
- Content Profile - http://drupal.org/project/content_profile
Все эти модули необходимо скачать и установить (а именно надо активировать модули Content, Date, Date API, Date Timezone, Computed field, Content Profile).
После установки соответствующих модулей необходимо настроить модуль Date через административный интерфейс Вашего сайта (Administer -> Site configuration -> Date & Time) в разделе "Date & Time". В этом разделе Вам необходимо выбрать временную зону, которая будет установлена по умолчанию на сайте, возможность или нет пользователям самим выбирать себе временные зоны, и установка первого дня недели (для пояснения - по умолчанию на сайте первым днем недели установлено по американской традиции Воскресенье, для нас нужно выбрать Понедельник - Monday).
После настройки модуля "Date", необходимо создать поле "День рождение". Для этого переходим в тот тип материалов, который установлен как "Content profile" пользователей Вашего сайта. В разделе "Manage Fields" данного типа материала создаем новое поле.
И при создании нового поля вводим следующую информацию:
- Label: День рождения
- Field: dob
- Select Field Type: Date
- Widget: Select List
И сохраняем поле. В появившемся новом окне с более подробными настройками нового поля добавляем следующую информацию:
- Default Value: на Ваше усмотрение.
- Default Value from to Date: на Ваше усмотрение.
- Custom Input Format: 'F j, Y'
- Years back and forward: -100:+10
- Time increment: 1
- Customize Date Parts: Blank
- Required: Checked off
- Number of values: 1
- To Date: Never
- Granularity: Year, Month, and Day
- Default Display: Medium
- Time zone handling: Site's time zone
Вновь сохраняем поле. Таким образом было создано поле "День рождения", которое должен будет заполнить пользователь при создании своего профайла на сайте.
Далее в этом же типе материалов, определенном как "Content Profile" пользователей Вашего сайта в разделе "Manage Fields" создаем новое поле "Возраст". В соответствующих полях необходимо ввести следующую информацию:
- Label: Возраст
- Field: age
- Type of Data to Store: Computed
- Form element to edit the data: Computed
- Сохранить поле. В новом окне введем более полную информацию о настройках поля:
- Label: Возраст
- Widget Type: Computed
- Help text: Blank
- Default Value PHP Code: Blank
- Required: not checked off
- Number of values: 1
В поле Computed Code введем следующий код:
if (!$node->nid) node_save($node);
$dob = $node->field_dob[0]['value'];
$now = time();
$then = strtotime($dob);
$diff = date('Y', $now) - date('Y', $then);
if($diff < 0) /* ideally you want to prevent this from happening */
echo '??? - negative age.';
if(($diff > 0) && (date('z',$now) < date('z',$then)))
$diff --;
$node_field[0]['value'] = $diff;
- Display this field: checked off.
- Display Format:
$display = $node_field_item['value'];
- Store using database settings below: checked off
- Data type: int
- Data length: 3
- Default value: blank
- Not NULL: checked off
- Sortable: checked off
И сохраним введенные данные. Вот собственно и все. Если Вы сделали все правильно, теперь пользователи при заполнении своего профайла будут вводить данные о дне рождения. А сайт сам автоматически будет определять их возраст и выводить данные в их профайл.
Оригинал статьи: http://www.startdrupal.com/node/131