Gyakran lehet szükségünk arra, hogy születési dátumból életkor számoljunk. (Például ha társkereső oldalt csinálunk, vagy ha társkereső oldalt csinálunk.)
Eléggé szánalmas, ha a regisztrációkor a felhasználó születési dátuma mellett bekérjük az életkorát is :) A regisztrációkor ezért hozzáadunk még egy CCK mezőt, de nem akármilyent: Computing Fieldet.
Ez egy külön modul, letölthető itt: http://drupal.org/project/computed_field
Ezután már hozzá tudjuk adni a Computed típusú mezőt a profil tartalmunkhoz és a regisztrációhoz. Esetemben a profile node típushoz a kor mezőt.
Ezt itt tudjuk beállítani: admin/content/node-type/profile/fields/field_kor
Az általános beállításokban a Computed code: űrlapba kell a kódot írnunk mely a számítást végrehajtja. Szúrjuk be a következő kódot (ahol field_szuletesi_ido cserélendő annak a fieldnek az azonosítójára, amelyik a születési dátumot kéri be!)
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)
echo '??? - negative age.';
if(($diff > 0) && (date('z',$now) < date('z',$then)))
$diff --;
$node_field[0]['value'] = $diff;
Ahhoz, hogy meg is jelenjen valami, kattintsuk be, hogy display this field! És a display mezőbe írjuk a következő kódot:
$display = $node_field_item['value'];
Figyeljünk rá, hogy a data type integer legyen, ha úgy szeretnénk dolgozni vele a továbbiakban, hogy pl. viewsben szűkíthető legyen vele az életkor... Mint a kódból látható, ez a művelet akkor hajtódik végre, ha elmentjük a nodeot, tehát utólag, már felvitt nodeokra magától nem fog kiszámolódni :)
A kód forrása: http://drupal.org/node/142151#comment-986330