суббота, 11 декабря 2010 г.

Социальная сеть на CMS Drupal - добавляем поле "Возраст" в профайл пользователей

eryeryery

При создании любой социальной сети очень важным является профайл пользователя, его контактные и личные данные, которые могут помочь установить более тесные связи между отдельными пользователями сети

При создании любой социальной сети очень важным является профайл пользователя, его контактные и личные данные, которые могут помочь установить более тесные связи между отдельными пользователями сети. Это касается как сообщества геймеров, так и сайта знакомств. Для того,чтобы создать и добавить в профайл пользователей поле "Возраст", нам понадобятся 4 модуля:

Все эти модули необходимо скачать и установить (а именно надо активировать модули Content, Date, Date API, Date Timezone, Computed field, Content Profile).

После установки соответствующих модулей необходимо настроить модуль Date через административный интерфейс Вашего сайта (Administer -> Site configuration -> Date & Time) в разделе "Date & Time". В этом разделе Вам необходимо выбрать временную зону, которая будет установлена по умолчанию на сайте, возможность или нет пользователям самим выбирать себе временные зоны, и установка первого дня недели (для пояснения - по умолчанию на сайте первым днем недели установлено по американской традиции Воскресенье, для нас нужно выбрать Понедельник - Monday).

untitled2

После настройки модуля "Date", необходимо создать поле "День рождение". Для этого переходим в тот тип материалов, который установлен как "Content profile" пользователей Вашего сайта. В разделе "Manage Fields" данного типа материала создаем новое поле.

untitled

И при создании нового поля вводим следующую информацию:

  • 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
untitled3

И сохраним введенные данные. Вот собственно и все. Если Вы сделали все правильно, теперь пользователи при заполнении своего профайла будут вводить данные о дне рождения. А сайт сам автоматически будет определять их возраст и выводить данные в их профайл.

Оригинал статьи: http://www.startdrupal.com/node/131