[gelöst] Datumsfeld formatiert ausgeben

am 19.12.2011 - 22:53 Uhr in
Hej Hej,
ich versuche gerade ein Datumsfeld über views formatiert auszugeben, so dass jede Ausgabe Monat,Tag, Jahr in einem eigenem span steht. Ich habe folgenden code in drupal commons gefunden.
<?php
$time = strtotime($row->{$field->field_alias});
?>
<?php if ($variables['view']->plugin_name != 'calendar_style'): ?>
<div class="dateblock">
<span class="month"><?php echo date('M', $time); ?></span>
<span class="day"><?php echo date('j', $time) ?></span>
<span class="year"><?php echo date('Y', $time) ?></span>
</div>
<?php else: ?>
<?php print $output; ?>
<?php endif; ?>
Problem ist, das mir der 1. Januar 1970 ausgegen wird. Ist ja eugentlich für drupal 6 wahrscheinlich muss doch noch eine Änderung bei der Abfrage vorgenommen werden stimmts? Oder fehlt noch was?
lg
hasel
- Anmelden oder Registrieren um Kommentare zu schreiben
Das heißt, daß $time 0 ist
am 19.12.2011 - 23:33 Uhr
Das heißt, daß $time 0 ist (daher das Datum = Beginn der Unix Zählung). Welcher Feldname wird denn in der Query gezeigt, wenn Du Dir die Query ausgeben läßt? Das scheint nämlich falsch zu sein.
Beste Grüße
Werner
also mein Feld welches das
am 20.12.2011 - 09:43 Uhr
also mein Feld welches das Datum liefert heist "field_event_date" und der view sieht wie folgt aus:
$view = new view;
$view->name = 'letzte_veranstaltungen';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Letzte Veranstaltungen';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Letzte Veranstaltungen';
$handler->display->display_options['use_more_text'] = 'mehr';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Zurücksetzen';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Sortieren nach';
$handler->display->display_options['exposed_form']['options']['sort_asc_label'] = 'Aufsteigend';
$handler->display->display_options['exposed_form']['options']['sort_desc_label'] = 'Absteigend';
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '5';
$handler->display->display_options['style_plugin'] = 'grid';
$handler->display->display_options['style_options']['columns'] = '1';
$handler->display->display_options['style_options']['alignment'] = 'vertical';
$handler->display->display_options['style_options']['fill_single_line'] = 1;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
'title' => 'title',
'field_event_date' => 'field_event_date',
);
$handler->display->display_options['row_options']['hide_empty'] = 0;
$handler->display->display_options['row_options']['default_field_elements'] = 1;
/* Feld: Inhalt: Datum */
$handler->display->display_options['fields']['field_event_date']['id'] = 'field_event_date';
$handler->display->display_options['fields']['field_event_date']['table'] = 'field_data_field_event_date';
$handler->display->display_options['fields']['field_event_date']['field'] = 'field_event_date';
$handler->display->display_options['fields']['field_event_date']['label'] = '';
$handler->display->display_options['fields']['field_event_date']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['external'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['field_event_date']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['field_event_date']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['trim'] = 0;
$handler->display->display_options['fields']['field_event_date']['alter']['html'] = 0;
$handler->display->display_options['fields']['field_event_date']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_event_date']['element_default_classes'] = 1;
$handler->display->display_options['fields']['field_event_date']['hide_empty'] = 0;
$handler->display->display_options['fields']['field_event_date']['empty_zero'] = 0;
$handler->display->display_options['fields']['field_event_date']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['field_event_date']['settings'] = array(
'format_type' => 'medium',
'fromto' => 'both',
'multiple_number' => '',
'multiple_from' => '',
'multiple_to' => '',
'show_repeat_rule' => 'show',
);
$handler->display->display_options['fields']['field_event_date']['field_api_classes'] = 1;
/* Feld: Inhalt: Titel */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['hide_empty'] = 0;
$handler->display->display_options['fields']['title']['empty_zero'] = 0;
$handler->display->display_options['fields']['title']['link_to_node'] = 1;
/* Sortierkriterien: Inhalt: Titel */
$handler->display->display_options['sorts']['title']['id'] = 'title';
$handler->display->display_options['sorts']['title']['table'] = 'node';
$handler->display->display_options['sorts']['title']['field'] = 'title';
/* Filterkriterium: Inhalt: Veröffentlicht */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 0;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filterkriterium: Inhalt: Typ */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
'veranstaltung' => 'veranstaltung',
);
/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$translatables['letzte_veranstaltungen'] = array(
t('Master'),
t('Letzte Veranstaltungen'),
t('mehr'),
t('Übernehmen'),
t('Zurücksetzen'),
t('Sortieren nach'),
t('Aufsteigend'),
t('Absteigend'),
t('Block'),
);
hilft das weiter?
lg
hasel
Dann bau doch mal den Anfang
am 20.12.2011 - 10:26 Uhr
Dann bau doch mal den Anfang Deines Snippets um, um zu sehen, ob in dem Feld was sinnvolles drin ist
<?php
drupal_set_message(print_r($row->{$field->field_event_date}, true);
$time = strtotime($row->{$field->field_event_date});
?>
Dann bekommst Du die Struktur des Feldes von Drupal als Meldung gezeigt. Den Text kannst Du dann posten, wenn Du immer noch Probleme hast.
Beste Grüße
Werner
Dein Views Export hilft uns
am 20.12.2011 - 10:35 Uhr
Dein Views Export hilft uns nicht wirklich weiter - wie werden denn die Daten in field_event_date gespeichert ?
Die in Commons verwendete Funktion lässt sich nur auf Unix-Timestamps anwenden - d.h. du müsstest den Inhalt deines Feldes erst in einen unix-Timestamp umwandeln..
Eine Weiterverarbeitung des Timestamps kann dann auch in Drupal 7 über die Funktion http://api.drupal.org/api/drupal/includes--common.inc/function/format_da... erfolgen.
SteffenR
@ Werner ich habe den code in
am 20.12.2011 - 13:28 Uhr
@ Werner
ich habe den code in meine views-view-field--field-event-date.tpl.php Datei kopiert aber ich bekomme einen Syntaxfehler angezeigt.
@ Steffen
ich habe in meinem erstellten Inhaltstyp "Event" ein normales Date Feld angelegt Steuerelement "Pop Up Kalender". Eingesetzte Module "Date" und Calendar"
hilft das weiter?
Ich habe gesehen, dass ich auch ein Datumsfeld "timestamp" oder "Iso" anlegen kann.
lg
hasel
Ich habe gerade gesehen, daß
am 20.12.2011 - 13:52 Uhr
Ich habe gerade gesehen, daß eine schließende runde Klammer fehlt. Die Zeile muß also lauten:
drupal_set_message(print_r($row->{$field->field_event_date}, true));
Beste Grüße
Werner
habe die Zeile durch die neue
am 20.12.2011 - 14:12 Uhr
habe die Zeile durch die neue ersetzt. jetzt bekomme ich die Meldung:
Fatal error: Cannot access empty property in line 2
Ich muss unbedingt PHP lernen damit ich solche Meldungen auch deuten kann :-)
lg
hasel
Ich hatte Dein
am 20.12.2011 - 14:52 Uhr
Ich hatte Dein Ausgangssnippet nicht überprüft. Also ist der Fehler bei dem Zugriff auf das Feld. Es muß wohl heißen:
<?php
$time = strtotime($row->field_event_date);
?>
ich weiß jetzt allerdings nicht, ob das so ok ist, oder ob man noch etwas von der Unterstruktur angeben muß.
Setze doch bitte erst mal
<?php
drupal_set_message(print_r($row->field_event_date, true);
$time = strtotime($row->field_event_date);
?>
Dann sieht man, was evtl. noch anzugeben ist.
Beste Grüße
Werner
@Werner ich glaube ich bin zu
am 20.12.2011 - 17:10 Uhr
@Werner
ich glaube ich bin zu doof :-( also wenn ich diesen code so eingebe:
<?php
$time = strtotime($row->field_event_date);
?>
<?php if ($variables['view']->plugin_name != 'calendar_style'): ?>
<div class="dateblock">
<span class="month"><?php echo date('M', $time); ?></span>
<span class="day"><?php echo date('j', $time) ?></span>
<span class="year"><?php echo date('Y', $time) ?></span>
</div>
<?php else: ?>
<?php print $output; ?>
<?php endif; ?>
bekomme ich die Fehlermeldung:
Notice: Undefined property: stdClass::$field_event_date in include() (Zeile 25 von /Users/anje/Sites/test/sites/all/themes/why/templates/views-view-field--field-event-date.tpl.php).
gebe ich diesen Code so ein:
<?php
drupal_set_message(print_r($row->{$field->field_event_date}, true));
$time = strtotime($row->field_event_date);
?>
bekomme ich diese Meldung:
Fatal error: Cannot access empty property in /Users/anje/Sites/test/sites/all/themes/why/templates/views-view-field--field-event-date.tpl.php on line 2
Als Test habe ich dann mal dieses snippet eingefügt um zu sehen was passiert.
<?php
drupal_set_message(t('Don\'t panic!'), 'warning');
?>
Die Ausgabe ist korrekt und es erscheint keine Fehlermeldung.
Hast Du noch eine Idee?
lg
hasel
so das Problem ist gelöst
am 22.12.2011 - 16:54 Uhr
so das Problem ist gelöst :-)
vielen Dank an @wla der das Problem super gelöst hat :-):-)
für alle die vielleicht das gleiche vorhaben hier die Lösung:
<?php
$mydate = $row -> field_field_event_date[0]['rendered'];
$mydatum = explode(' ', $mydate);
$mydatum = explode('/', $mydatum[9]);
?>
<div class="dateblock">
<span class="month"><?php echo $mydatum[0]; ?></span>
<span class="day"><?php echo $mydatum[1] ?></span>
<span class="year"><?php echo $mydatum[2] ?></span>
</div>
lg
hasel