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);<br /><br /> $dob = $node->field_dob[0]['value'];<br /> $now = time();<br /> $then = strtotime($dob);<br /><br /> $diff = date('Y', $now) - date('Y', $then);<br /><br /> if($diff < 0) <br /> echo '??? - negative age.';<br /><br /> if(($diff > 0) && (date('z',$now) < date('z',$then)))<br /> $diff --;<br />$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