Weblapomon a felhasználók megadhatnak magukról néhány adatot. Mindehhez a Content Profile modult használom. Az egyik mező a születésnapjuk (field_dob), dátum típusú. Szeretném egy blokkban előre jelezni, hogy a közeljövőben kinek lesz születésnapja. Sokat olvasgattam utána, leírom, mire jutottam. Hátha van ennél egyszerűbb megoldás is.
A Profil tartalomtípusban új mezőt hozok létre Next Birthday (field_next_birthday), ami számított lesz (computed field modul kell hozzá). Mindezt azért, hogy makd jól rendezze a születésnapokat. A számítási módhoz ezt írom:
if ($node->field_dob[0]['value']): $birthunix = strtotime($node->field_dob[0]['value']); $daybirth = date('d', $birthunix); $monthbirth = date('m', $birthunix); $todayunix = mktime(0, 0, 0, date('m') , date('d'), date('Y')); $yearbirthday = date('Y', $todayunix); $nextbirthdayunix = mktime(0, 0, 0, date($monthbirth) , date($daybirth), date($yearbirthday)); if ($nextbirthdayunix < $todayunix) { $yearbirthday = $yearbirthday + 1; $nextbirthdayunix = mktime(0, 0, 0, date($monthbirth) , date($daybirth), date($yearbirthday)); } $node_field[0]['value'] = $nextbirthdayunix; else: $node_field[0]['value'] = 0; endif;
Megjelenítési forma:
$display = $node_field_item['value'];
Adattípus varchar, hossz 128, rendezhető bepipálva.
A Views-ban egy felhasználóra hozok létre új nézetet.
Realitionshipshez a következőt állítom be: Content Profile, require, Profil.
Mezőhöz: a nevet, és a felhasználók által megadott születésnapot, ezeket akarom megjeleníteni. Mindegyiknél Relationship: Content Profile.
Rendezési elv: Tartalom: Next birthday (field_next_birthday) ascending.
Szűrő: Tartalom: Next birthday (field_next_birthday) is not empty.
Ezekkel a beállításokkal már készíthetek blokkot.
A gondom a következő, és nem jövök rá, hogy azokat a felhasználókat, akik már korábban megadták a születésnapjukat, mindez nem érinti, azaz nem jelennek meg a listában. Az újonnan regisztrált, vagy Profilt létrehozók azonban igen. mindez egyelőre csak localhoston van. D6.15, minden modul a legújabb.
Illetve nem tudom, lehetne-e a kiindulási célt valahogy egyszerűbben elérni?
fu ezzel nagyon belenyúltál ám a daterázsfészekbe :)
szerintem a létező usereid azért nem látszanak, mert a computed fieldnek nincs értéke náluk, mert az ugye beküldéskor generálódik. erre egyébként figyelmeztet is a kódmorzsa szerzője, hogyaszongya:
gondolom inet szedted a megoldást:
http://drupal.org/node/313498#comment-1141505
sajnos ez egy igen bosszantó tulajdonsága a datenek. :( igazából nincs még rá megoldás, legalábbis én még nem találtam. a #13 -as megoldás amúgy kézenfekvőbbnek tűnik, bár nem próbáltam ki. (de majd mindjárt kipróbálom;)
http://drupal.org/node/313498#comment-2009556
-
clear: both;
Előre is köszi
a segítséget. Igen, részben onnan szedtem a megoldást. Volt egy Birthdays modul, ami jó volna talán, de az a core Profile-lal működik együtt. Ezt a #13-ast nem vettem észre.
belulo