Hallo zusammen,
was muß ich tun, damit im Modul Auflistung der Timestamp aus einer Tabelle in ein lesbares Datum umgewandelt wird?
mfg Hein
Hallo zusammen,
was muß ich tun, damit im Modul Auflistung der Timestamp aus einer Tabelle in ein lesbares Datum umgewandelt wird?
mfg Hein
Ich vermute mal das man bei Feld statt tstamp nicht eingeben könnte:
oder? Hab grad nichts zu testen.Code:DATE_FORMAT(`tstamp`, '%d.%m.%Y - %H:%i') AS `date`
Außerdem könnte man auch im Template selbst per PHP die Umwandlung vornehmen.
Grüße, BugBuster"view source" is your guide.Danke an alle Amazon Wunschlisten Erfüller
@all
Meine MySQL-Kenntnisse sind sehr bescheiden, aber aus dem Feld wird die Abfrage erzeugt, und bei der Abfrage schon formatieren? geht das? Dein Code funktioniert auf jeden Fall nicht, den hab ich getestet.
Man könnte das Template modifizieren, in etwa so:
Geht natürlich nur, wenn der Feldname welcher deine Zeitstempel enthält tstamp lautet. Machst du das öfters und auch aus unterschiedlichen Tabellen, könntest du dir ein Array od. String anlegen, welcher die Feldnamen der Timestamps enthält. z.B. tstamp,date,start,stop,addTime,startTime,endTime.. .PHP-Code:
/** * in system/modules/listing/templates/list_default.tpl */
/** * diese Zeilen: */
<?php foreach ($row as $col): ?>
<td class="body <?php echo $col['class']; ?>"><?php echo $col['content']; ?></td>
<?php endforeach; ?>
/** * ersetzen durch */
/** * diese Zeilen: */
<?php foreach ($row as $key => $col): ?>
<td class="body <?php echo $col['class']; ?>"><?php echo ($key == 'tstamp' ? date('d.m.Y',$col['content']) : $col['content']); ?></td>
<?php endforeach; ?>
/** * in system/modules/listing/templates/list_default.tpl */
Und dann abfragen, "wenn Feldname in dem String (Array) enthalten ist, dann..."
Außer der Formatierung mit date() hast du noch die Möglichkeit mit strftime() zu formatieren, das bietet den Vorteil, dass du sprachbezogene Werte bekommst, wenn du vorher mit setlocale() abhängig von der seitenspezifischen Sprach-Variablen z.B. de od. en die Sprache auf dem Server eingestellt hast. Mit date() bekommt man immer nur eine englische Ausgabe.
Oder du benutzt die Funktion parseDate(), welche Leo integriert hat. Damit bekommst du glaub ich auch länderspezifische Formatierungen ohne setlocale(). Ich hab parseDate() nicht im Einsatz, deshalb weiß ich das grad nicht so genau, hab's so im Vorbeifliegen mal mitbekommen. Einfach mal nach parseDate() im Forum suchen.
Gruß von Andreas
Mal aus der Date.php abgeschaut und leicht angepasst als Veranschaulichung, je nachem was man haben möchte
"tstamp" muss dabei der Inhalt des Datenbankfeldes sein.PHP-Code:
$Datum = $this->parseDate($GLOBALS['TL_CONFIG']['dateFormat'], tstamp);
$Zeit = $this->parseDate($GLOBALS['TL_CONFIG']['timeFormat'], tstamp);
$DatumZeit = $this->parseDate($GLOBALS['TL_CONFIG']['datimFormat'], tstamp);
Und ja, mein SQL hatte den Fehler das der tstamp ja in Unixtime Format vorliegt.
So gehts:
Ich vermute mal, das das Modul Auflistung aber nur Feldnamen und keine solchen Angaben zulässt. Werd ich mal testen bzw. nachschauen.Code:DATE_FORMAT( FROM_UNIXTIME(`tstamp`) , '%d.%m.%Y - %H:%i' ) AS `date`
Nachtrag:
Mitals Feldname funktioniert es im Modul Auflistung. Bei den weiteren Angaben kommt es dann durcheinander wegen des Kommas, da es als Feldtrenner dient.Code:FROM_UNIXTIME(`tstamp`)
Falls mal andere Datenbanken zum Einsatz kommen, würde ich es auch aus dem Grund im Template umformatieren.
Geändert von BugBuster (25.07.2009 um 18:21 Uhr)
Grüße, BugBuster"view source" is your guide.Danke an alle Amazon Wunschlisten Erfüller
Hallo BugBuster
Es ist mir schier peinlich zu fragen - aber ich will nun anfangen zu verstehen, was mit all den Code-Beispielen im Forum zu machen ist. Code-Beispiele finde ich haufenweise zu allen möglichen Fragestellungen, aber was genau damit jeweils zu machen ist (wo einfügen, platzieren), dazu finde ich kaum Hinweise.
Konkret: Ich will aus tl_comments (Modul Auflistung) statt tstamp ein lesbares Datum auf der Liste im Frontend ausgeben.
Aus #4:
Was muss ich mit den drei Zeilen, bzw. einer aus diesen machen? Z.B. ins Template z.B. list_default.html5 kopieren? Scheint mir zwar irgendwie schon vom Anschauen her nicht zum übrigen Template-Code zu passen. Oder in die /system/config/dcaconfig.php stellen?PHP-Code:
$Datum = $this->parseDate($GLOBALS['TL_CONFIG']['dateFormat'], tstamp);
$Zeit = $this->parseDate($GLOBALS['TL_CONFIG']['timeFormat'], tstamp);
$DatumZeit = $this->parseDate($GLOBALS['TL_CONFIG']['datimFormat'], tstamp);
Zu #4 Nachtrag
Ich habe FROM_UNIXTIME('tstamp') als Feldname verwendet, bekomme aber eine Fehlermeldung, die ich als MySQL-Syntaxfehler interpretiere. Inspirationen aus http://dev.mysql.com/doc/refman/5.1/...functions.html haben mich nicht weiter gebracht.
Meine Umgebung: Contao 3.1.1, PHP 5.3.10, MySQL 5.5.31.
Für Hilfe bin ich dir sehr dankbar.
OK, Schritt für Schritt.
Im Backend auf Layout - Templates - "Neues Template"
Dort in der Liste auswählen "list_default" - "Template erstellen.
In der jetzigen Ansicht auf den Bleistift und das Template umbenennen: list_default_date (Endung wird automatisch an gehangen, so wie vorher ausgewählt)
So nun das Template bearbeiten.
Zeile 65 und 66 ersetzen durch: (Achtung Zeile 66 wird im Forum umgebrochen, das muss im Template eine Zeile sein, sonst Syntax Error)
Das kannste auch über Backend machen oder mit einem Editor deiner Wahl, dazu musste die Datei natürlich vor Ort öffnen.PHP-Code:
<?php foreach ($row as $key => $col): ?>
<td class="body <?php echo $col['class']; ?>"><?php echo ($key == 'tstamp' ? $this->parseDate($GLOBALS['TL_CONFIG']['dateFormat'],$col['content']) : $col['content']); ?></td>
Nun ein Modul Aufllistung erstellen und dort bei " Template-Einstellungen" - "Listentemplate" das oben unbenannte Template auswählen.
Modul in ein Artikel einbauen, fertig.
Sieht bei mir dann so aus:
Jetzt müsste man sich noch die Stelle suchen wo der Feldname ausgegeben wird und den auch anpassen.Code:tstamp Author 21.06.2011 John Smith
Grüße, BugBuster"view source" is your guide.Danke an alle Amazon Wunschlisten Erfüller
Hilfreich dazu auch: Mit diesen Zeilen im Template kannst du dir im FE anzeigen lassen, welche Variablen das Template ausspuckt:
oderPHP-Code:
<?php
$this->showTemplateVars();
?>
PHP-Code:
<?php
$this->dumpTemplateVars();
?>
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Code-Zeilen von BugBuster eingesetzt - es funktioniert. Herzlichen Dank!
Zur Anpassung des Feldnamens (statt tstamp z.B. 'Datum'):
In der /system/config/langconfig.php habe ich mehrere funktionierende Einträge drin. Aber eine Lösung in dieser Art für tstamp ist mir nicht gelungen.
Am ehsten schien mir schliesslich folgender Eintrag in die /system/config/langconfig.php Erfolg versprechend:
Ohne Erfolg.Code:$GLOBALS['TL_LANG']['tl_comments']['tstamp'][0] = 'Datum';
Interessant finde ich, dass 'Autor' und 'Kommentar' sozusagen 'automatisch' deutsch ausgegeben, tstamp nicht.
Den Code von Andreas habe ich in die list_default.html5 eingesetzt und die Liste angezeigt bekommen. Herzlichen Dank.
Nur fehlt mir der Bezug (Wissen) zu meinem Problem. Immerhin meine ich gesehen zu haben, dass tstamp vorhanden ist.
Hoffe, das Richtige kopiert zu haben.Code:[list_fields] => name,comment,tstamp ... [2] => Array ( [link] => tstamp [href] => index.php/test.html?order_by=tstamp&sort=asc [title] => Sortiere nach tstamp [class] => )
Wo liegt da der Ansatz zur Lösung 'Datum' statt tstamp?
PS: Welches Buch würde mir in solchen Fragen (PHP, Template anpassen, ...) am ehsten weiter helfen?
Geändert von peter.fl (11.08.2013 um 09:27 Uhr) Grund: Info zu #8
Das 'label' für tstamp ist in den dca-Dateien nicht gesetzt. Deswegen kannst du es so setzen:
In der system/config/dcaconfig.php (probiert habe ich es nur in der langconfig.php, das ging auch).PHP-Code:
$GLOBALS['TL_DCA']['tl_comments']['fields']['tstamp']['label'][0] = 'Datum';
$GLOBALS['TL_DCA']['tl_comments']['fields']['tstamp']['label'][1] = 'Hilfetext (nicht nötig)';
Einen ersten schnellen Einstieg in PHP habe ich damals hiermit gemacht
http://tut.php-quake.net/de/
Das erschien mir ausreichend und ging recht schnell. Ansonsten immer http://www.php.net/manual/de/ offen haben und oben bei search ne Funktion eintippen und danach suchen, mit der Zeit lernt man dann PHP-Zeugs dazu.
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Hallo zusammen,
ich klinke mich hier mal ein, weil ich ein ähnliches Problem habe. Da es für contao 3.X keine funktionierende Erweiterung "Latest Comments" gibt, versuche ich gerade das über das Auflistungsmodul umzusetzen. Ich möchte folgende Ausgabe im Frontend erzielen:
Max Mustermann (12.12.2013) zu "Titel des Nachrichtenbeitrags".
Dementsprechend hole ich über das Modul Auflistung die Werte name,date,id und versuche jetzt, den Nachrichtenbeitrag mittels {{news::ID}} Insert-Tag zu verlinken. Danach möchte ich außerdem noch den Namen auf den Wert 'website' verlinken.
Leider find ich jedoch nicht heraus, wie ich die Abfragen trennen kann, im Template list_default werden ja alle Werte über einen Befehl abgerufen:
Wie kann ich diese trennen, um sie einzeln zu bearbeiten?HTML-Code:<?php echo $col['content']; ?>
Das ist schon getrennt. Du befindest dich in einer foreach-Schleife. $col['content'] liefert da jeweils den Inhalt des Feldes. Für date sieht das so aus
Kannst du sehen, wenn du das mit dem showTemplateVars() gemacht hast.Code:[date] => Array ( [raw] => 1196602246 [content] => 1196602246 [class] => col_2 col_last [id] => 1 [field] => date [url] => testseite.html?show=1 )
Hole im Template eine News besser mit $this->replaceInsertTags('{{news::ID}}'); . Es sei denn jemand weiß, wie man eine News noch besser holt, wie z.B. mit $this->getArticle();
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Hi Andreas,
so ganz verstehe ich das noch nicht.
Selbst mit $this->replaceInsertTags('{{news::ID}}'); muss ich doch vorher die ID des Beitrags auslesen und dann entsprechend im list_default-Template bearbeiten, oder nicht?
Wie muss dann der Code im Template aussehen, wenn ich Name, Datum und (verlinkte) News anzeigen will?
Einen kompletten Code möchte ich dir hier nicht geben. Aber, ja, ID steht nur als Platzhalter für die ID, die du dorthin bringen musst.
Über das Feld source kannst du prüfen, ob der comment zu einer News gehört (Wert: tl_news). Das Feld parent liefert dir die ID der News. Du musst diese beiden Felder dazu auch mit ausgeben, damit du sie im Template zur Verfügung hast.
ps Du hättest besser einen neuen Thread aufgemacht, denn das hat nicht mehr mit "Modul Auflistung Timestamp in Datum umwandeln" zu tun.
Bitte!
Vor Anfragen im Forum HTML validieren.
Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.
Vielen Dank an alle Wunschlistenerfüller
Andreas Burg, Web Solutions
Okay, das scheint komplizierter zu sein, soweit reichen meine Programmierkenntnisse dann doch nicht. Ich werd mir professionelle Hilfe suchen.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen