Születésnap előrejelzés

belulo képe

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?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aboros képe

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:

You will have to resave all already existing Profile Nodes for the new field to be calculated.

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

0
0

-
clear: both;

belulo képe

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.

0
0

belulo