Codeschnipsel für Computed Field
Eingetragen von klausi (76)
am 07.05.2009 - 12:27 Uhr in
am 07.05.2009 - 12:27 Uhr in
Hallo Leute,
ich möchte aus einem bestehenden CCK-Datumsfeld ("field_geburtsdatum"), das aus - logischerweise - Tag, Monat und Jahr besteht, nur den Tag und den Monat herauslösen (also das Jahr "abschneiden") und in einem neuen Feld namens "geburtstag" speichern und ausgeben!
Dazu eignet sich aus meiner Sicht am besten ein neues ComputedField-Feld!?
Folgenden Code habe ich eingefügt - leider ohne Ergebnis ...
Computed Code:
$geburtsdatum_date = date_make_date($node->field_geburtsdatum[0]['value']);
$date_parts = $geburtsdatum_date->db->parts;
$geburtsdatumunix = mktime(0,0,0,0,$date_parts['mday'], $date_parts['mon']);
Display Format:
$node_field_[0]['value']=$geburtsdatumunix;
Da ich in Sachen PHP nicht so fit bin, kann mir jemand helfen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie die nächsten 5 Geburtstage in View bestimmen?
am 10.06.2009 - 09:24 Uhr
Hallo,
ich habe aktuell ein ähnliches Problem.
Berechnen kann man so ein Feld als Computed Field wie folgt:
<?php
$node_field[0]['value'] = "";
$isoArray = explode ( '-', substr($node->field_profile_geburtstag[0]['value'],0,10));
$gsort = $isoArray[1]."-".$isoArray[2];
$node_field[0]['value'] = $gsort;
?>
Liefert für den 10. Juni 2009 zum Beispiel: 06-10
Das Feld kann mann zum Beispiel in Views zur Sortierung von Geburtstagen nutzen - statt nach dem Alter wird dann nach dem Tag im Jahr sortiert.
Ich habe nur jetzt das Problem, dass ich einen Block mit den nächsten 5 Geburtstagen erstellen möchte.
Wenn ich ein Computed Field mit dem nächsten Geburtstag erstelle, so wird dieses Feld ja nicht jeden Tag aktualisiert.
Der Code für so ein Feld könnte so aussehen:
<?php
$isoArray = explode ( '-', substr($data->node_data_field_profile_status_field_profile_geburtstag_value,0,10));
$nowunix = time();
$thisYear = (int)date("Y",$nowunix );
$nbirthdayunix = mktime ( 00, 00, 00, (int)$isoArray[1], (int)$isoArray[2], (int)$thisYear);
if($nowunix > $nbirthdayunix) {
$nbirthdayunix = mktime ( 00, 00, 00, (int)$isoArray[1], (int)$isoArray[2], (int)$thisYear+1);
}
$nbirthday = date("Y-m-d",$nbirthdayunix);
$node_field[0]['value'] = $nbirthday;
?>
Hat jemand eine Idee?
Viele Grüße,
Christian