Overriding flexinode 'date/time' (timestamp) field
Eingetragen von Poldrack (288)
am 28.06.2006 - 21:04 Uhr in
am 28.06.2006 - 21:04 Uhr in
Hi, habe laut der Anleitung auf drupal.org mein flexinode-feld "date/time" gethemt
-> http://drupal.org/node/17455
Funktioniert soweit auch prima. Nur wenn ich die Listenansicht benutze
also:
flexinode/table/x
erscheint das feld nach wie vor mit datum UND zeit. ich brauche jedoch nur das datum und die zeit stört ungemein. Umsteigen hinsichtlich der datumsangabe auf einen anderen feld-type (zB text-feld) möchte ich jedoch auch nicht, da ich zwingend die sortierfunktion hinsichtlich des datums benötige.
Habt Ihr da Ideen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Poste bitte den Code Deines
am 29.06.2006 - 14:09 Uhr
Poste bitte den Code Deines Template, mit dem Du
mein flexinode-feld "date/time" gethemt
hast.
Offensichtlich hast Du da etwas nicht richtig verstanden bzw. wendest etwas nicht richtig an.
-------------
quiptime
Da geht noch was.
code
am 29.06.2006 - 14:23 Uhr
also die Datei
flexinode_timestamp.tpl.php:
<?php
$formatted_value = strftime ("%d.%m.%Y", $value); // format as Month and Year, eg. 'July 2004'
?>
<div class="flexinode-timestamp-<?php print $field_id; ?>">
<strong><?php print $label; ?>: </strong><br />
<?php print $formatted_value; ?>
</div>
und die Datei
template.php:
<?php //$Id: template.php, v 1.0 2006/06/13 quiptime Exp $
/**
* Catch the theme_print_link function, and redirect through the template api
*/
function phptemplate_print_link($node) {
return _phptemplate_callback('print_link', array('node' => $node));
}
/**
* Override theme_flexinode_timestamp() from modules/flexinode/field_timestamp.inc
*/
function phptemplate_flexinode_timestamp($field_id, $label, $value, $formatted_value) {
// nothing happens here.
return _phptemplate_callback('flexinode_timestamp', array('field_id' => $field_id, 'label' => $label, 'value' => $value, 'formatted_value' => $formatted_value));
}
function pushbutton_book_export_html($title, $content) {
global $base_url;
$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . "\n";
$html .= '<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">' . "\n";
$html .= '<head>' . "\n";
$html .= '<title>'. $title .'</title>' . "\n";
$html .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
$html .= '<base href="'. $base_url .'/" />' . "\n";
$html .= '<style type="text/css"> @import url(misc/print.css); </style>' . "\n";
$html .= '</head>' . "\n";
$html .= '<body>' . "\n";
$html .= '<img src="/files/aurbannerlogobig.png" />' . "\n";
$html .= $content . "\n";
$html .= '</body>' . "\n";
$html .= '</html>' . "\n";
return $html;
}
?>
Danke!
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Ich sehe mir das Nachher mal
am 29.06.2006 - 14:36 Uhr
Ich sehe mir das Nachher mal in Ruhe an. Wird ca. 2h dauern bis zu einer Antwort.
-------------
quiptime
Da geht noch was.
@quiptime
am 29.06.2006 - 15:04 Uhr
Keine Eile, bin ja megafroh, daß Du mir da unter die Arme greifst. Danke nochmal. :-)
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Um zu testen und auch zu
am 29.06.2006 - 16:23 Uhr
Um zu testen und auch zu sehen, an welchen Stellen bei der HTML-Ausgabe das Template verwendet wird ändere mal bitte temporär den Templatecode
von
<?php
print $formatted_value;
?>
nach
<?php
print 'MyStamp :'.$formatted_value;
?>
Und schau Dir danach mal an, wo überall "MyStamp :" bei der Anzeige des Timestamp zu sehen ist.
Offensichtlich wird das Timestamp-Template nicht generell bei den Anzeigen verwendet. Das wiederum bedeutet, die Stelle im Code zu finden, welche die Ausgabe mit Datum (also ohne Template) verwendet.
-------------
quiptime
Da geht noch was.
ja, wie zu erwarten
am 29.06.2006 - 16:33 Uhr
ja, wie zu erwarten erfolgt die Ausgabe MyStamp bei der Table View Ansicht nicht, bei den anderen Ausgaben schon. Nämlich da, wo auch korrekt das Template überschrieben wird.
Liegt das nun an Flexinode oder liegt dies an views (ich glaube nur mit views war ja die Tabellenansicht möglich im Zusammenhang mit Flexinode)
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Du verwendest für die
am 29.06.2006 - 16:48 Uhr
Du verwendest für die Anzeige der Tabellenansicht das Modul "views"?
-------------
quiptime
Da geht noch was.
views und nein
am 29.06.2006 - 16:54 Uhr
ähm, nein ... da hab ich mich wohl vertan. ich dachte erst, ich brauche dringend views, damit die tabellenansicht kommt. hab aber views ausgeschaltet und die tabellenansicht erscheint denoch.
der fehler bleibt aber weiter bestehen, das heißt in der tabellenansicht wird das datumsfeld nicht überschrieben:
http://www.autokauf-und-recht.de/listurteile
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Ich mache mir mal schnell
am 29.06.2006 - 16:59 Uhr
Ich mache mir mal schnell selbst ein Feld timestamp zu einem Flexinode-Inhaltstypen und auch das Template dazu, damit ich hier nicht völlig rumtheoretisiere.
-------------
quiptime
Da geht noch was.
super ... an die
am 29.06.2006 - 17:05 Uhr
super ... an die tabellenansicht gelangst du dann, wenn du eingibst
flexinode/table/x
wobei x = die id der flexinode ist
(ich hab lediglich ein url-alias gesetzt - daher der etwas andere link)
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Es sieht erst mal nicht so
am 29.06.2006 - 17:21 Uhr
Es sieht erst mal nicht so gut aus mit der Formatierung des Datum in der Tabellenansicht.
Produziert wird die Ausgabe der Tabellenansicht in "flexinode.module" in "function flexinode_page_table".
In dieser Funktion kann ich erst mal keinerlei Optionen zum Beeinflussen des Datum erkennen. Ein Datum wird aus der DB-Tabelle ausgelesen wie jeder andere beliebige Inhalt und dann ausgegeben.
-------------
quiptime
Da geht noch was.
Wo genau findest du dies?
am 29.06.2006 - 17:40 Uhr
Wo genau findest du dies? ich hatte auch schon geschaut, bin aber als laie nicht so recht schlau geworden. notfalls müßte es halt ein hard-code-hack sein, auch wenn ich diese lösungen hasse, wg update und so.
Oder geht es möglicherweise eleganter, wenn ich was im field_timestamp.inc ändere? Daher auch meine Frage im anderen Thema hier.
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Es sieht im Moment nach
am 29.06.2006 - 18:25 Uhr
Es sieht im Moment nach einem hard-code-hack aus,
da in der Funktion flexinode_page_table ohne Ansehen des Inhaltes diese in die Tabelle geschoben werden - und das Datum wird nicht extra behandelt.
Man muss da eine Abfrage nach einem Datum-Inhalt einbauen und wenn es ein Datum ist, dann soll das Template verwendet werden.
Bin noch dran.
Du hast nicht ganz das Ergebnis des Test weiter oben mit "MyStamp" kapiert zu haben:
Du kannst im Timestamp-Template auch "Hallo Datum" schreiben. In der Tabelle wird "Hallo Datum" nicht ausgegeben, weil die Funktion zur Tabellansicht-Ausgabe NICHT auf das Timestamp-Template zugreift.
-------------
quiptime
Da geht noch was.
Re: Es sieht im Moment nach
am 29.06.2006 - 18:38 Uhr
Du hast nicht ganz das Ergebnis des Test weiter oben mit "MyStamp" kapiert zu haben:
Du kannst im Timestamp-Template auch "Hallo Datum" schreiben. In der Tabelle wird "Hallo Datum" nicht ausgegeben, weil die Funktion zur Tabellansicht-Ausgabe NICHT auf das Timestamp-Template zugreift.
Habe ich nicht genau dies beschrieben? Dann hab ich mich wohl falsch ausgedrückt ... Mir ist schon klar, daß die Tabellenansicht-Ausgabe nicht auf das Timestamp-Template zugreift. Soweit komme ich schon noch, nur wie ich das ändern kann, da habe ich keinerlei ahnung ...
danke für deine hilfe, ist echt nett
--------------------------------
So, ich habe eine Lösung.
am 29.06.2006 - 21:23 Uhr
So,
ich habe eine Lösung. Räume nur noch meinen Code auf und dann poste ich die Lösung.
-------------
quiptime
Da geht noch was.
Flexinode Tabeleview - Format des Datums beeinflussen [Lösung]
am 29.06.2006 - 23:02 Uhr
Ich wiederhole noch mal: Der Maintainer des Modules Flexinode hat es bisher versäumt, bei der Ausgabe eines Datum-Feldes die Ausgabe auch für die Tabellenansicht durch ein Template veränderbar zu machen.
Meine Lösung stellt also nur einen Hack des Code einer Moduldatei dar und ist keinesfalls eine offizielle Lösung.
Lösung
In der Moduldatei "field_timestamp.inc" die Funktion "flexinode_field_timestamp_format" wie folgt verändern.
Vor der Änderung:
<?php
function flexinode_field_timestamp_format($field, $node, $brief = 0) {
$fieldname = 'flexinode_'. $field->field_id;
return format_date($node->$fieldname);
}
?>
Geänderter Code:
<?php
function flexinode_field_timestamp_format($field, $node, $brief = 0) {
$fieldname = 'flexinode_'. $field->field_id;
return strftime ("%d.%m.%Y", $node->$fieldname);
}
?>
Die Nachnutzung des vorhandenen Template erscheint wenig sinnvoll, da das Datum in der Tabellenansicht mit großer Warscheinlichkeit eine andere Formatierung (z. Bsp. Label) bekommensoll als im node. In der Tabelle soll halt einfach nur das Datum gezeigt werden.
Die Formatierung des Datums muss damit logischer Weise in der "field_timestamp.inc" vorgenommen werden.
@Frugol,
sollte auch bei Dir funktionieren. Habe es bei mir getestet - klappt.
-------------
quiptime
Da geht noch was.
Daaankke!
am 29.06.2006 - 23:22 Uhr
@quiptime
Funktioniert einfach klasse. Danke! Da hast Du mir echt ein ganzes Stück weit geholfen. Jetzt sieht auch meine Tabelle schön aus .... :-))
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Habe eben mal geklickt:
am 29.06.2006 - 23:31 Uhr
Habe eben mal geklickt: http://www.autokauf-und-recht.de
Sehe nur 'ne leere Seite!
-------------
quiptime
Da geht noch was.
arrg
am 30.06.2006 - 00:12 Uhr
bekomme plötzlich diese fehlermeldung:
warning: Cannot modify header information - headers already sent by (output started at xxxxxx/modules/book.module:1) in xxxxxxx/portal/includes/common.inc on line 139.
scheint mit dem book-modul zusammenzuhängen.
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Schalte mal testhalber auf
am 30.06.2006 - 00:41 Uhr
Schalte mal testhalber auf ein anderes Theme um.
Oder wenn Du viel am Content rumgefummelt hast hilft manchmal auch, die DB-Tabelle "cache" zu leeren.
-------------
quiptime
Da geht noch was.
habe mal schnell die
am 30.06.2006 - 00:42 Uhr
habe mal schnell die vorhergehende book-version aufgespielt und da ging es wieder ... hmm
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Man, ich sehe gerade, Du
am 30.06.2006 - 00:47 Uhr
Man,
ich sehe gerade, Du bist auch aus Dresden.
Wir sollten uns mal auf einen Kaffee treffen.
-------------
quiptime
Da geht noch was.
*g*
am 30.06.2006 - 00:49 Uhr
hast du meine mail nicht gelesen? *g* hatte ich schon vor ner weile vorgeschlagen ... ;-)
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------
Bin derzeit dermaßen mit
am 30.06.2006 - 00:58 Uhr
Bin derzeit dermaßen mit Spam zugekackt das ich sie eventuell auch versehentlich gelöscht habe - nochmal senden bitte.
Bei der Gelegenheit, kann man nicht auch hier Messages an andere Member senden?
-------------
quiptime
Da geht noch was.
ja, habe dir auch über
am 30.06.2006 - 01:03 Uhr
ja, habe dir auch über diese funktion eine nachricht geschickt, die kommt dann aber bei dir auch als email an.
konnte das problem soweit eingrenzen, daß ich beim book-modul themen was falsch gemacht haben muss. Daher sollte wir die diskussion dort fortsetzen -> http://www.drupalcenter.de/node/1184
--------------------------------
http://www.autokauf-und-recht.de
--------------------------------