Datum
am 01.07.2005 - 08:17 Uhr in
Hallo allerseits,
wie kann ich realisieren, das unter dem Titel eines Blog-Beitrages oder Artikels das Datum angezeigt wann der Artikel eingetragen wurde? Ich möchte nicht das der Name da mit steht wie es bei $submitted ist sondern wirklich nur das Datum.
Eine weitere Frage dazu:
Wie kann ich einstellen, das die Ausgabe des RSS Newsfeeds chronologisch nach Datum des Eintragsdatums angezeigt wird?
Momentan ist es so, das zwar ein beitrag den ich nachträglich zB. aus einem Archiv mit älterem Datum versehe auf der Webseite beispielsweise an letzter Stelle (wenn das Datum zB 1996-10-12 ist) angezeigt wird, aber der Newsfeed setzt dies nicht um und zeigt auch einen älter datierten beitrag an erster Stelle.
mfg holger
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Holger,
am 01.07.2005 - 08:30 Uhr
Hallo Holger,
nutzt du phpTemplate? Dann kopiere folgendes in deine template.php Datei (Quick & Dirty).
<?php
function phptemplate_node($node, $main = 0, $page = 0) {
global $node_cache;
$node_cache[] = $node;
if (module_exist('taxonomy')) {
$taxonomy = taxonomy_link('taxonomy terms', $node);
}
else {
$taxonomy = array();
}
$vars = array(
'title' => check_plain($node->title),
'node_url' => url('node/' . $node->nid),
'terms' => theme('links',$taxonomy),
'name' => format_name($node),
'date' => format_date($node->created),
'sticky' => $node->sticky,
'picture' => theme_get_setting('toggle_node_user_picture') ? theme('user_picture', $node) : '',
'content' => ($main && $node->teaser) ? $node->teaser : $node->body,
'links' => $node->links ? theme('links', $node->links) : '',
'mission' => $mission,
'page' => $page,
'taxonomy' => $taxonomy,
'node' => $node,
'main' => $main,
'page' => $page
);
if (theme_get_setting('toggle_node_info_' . $node->type)) {
$vars['submitted'] = t('%b.', array('%a' => format_name($node), '%b' => format_date($node->created)));
}
return _phptemplate_callback('node', $vars, 'node-' . $node->type);
}
?>
Dann sollte ausschließlich das Datum angezeigt werden.
LG
Björn
[EDIT:] Du mußt es in die "class Template" kopieren, d.h. am besten vor das schließende "}".
Man bist du schnell *g ich
am 01.07.2005 - 08:36 Uhr
Man bist du schnell *g
ich teste es nachher, danke.
Zum Thema Newsfeed habe ich auch mal im internationalen Forum gepostet: http://drupal.org/node/26156
mfg holger
http://www.ebec.net ...
http://www.stnetwork.de ...
noch eine Möglichkeit
am 01.07.2005 - 09:03 Uhr
weitere Möglichkeit wäre das direkt in der node.tpl.php zu machen
z.B. so hier
<?php if ($submitted) { ?><p class="nodemeta">
posted <?php print format_date($node->created, 'custom','d\.m\.Y'); ?>
</p>
...die Darstellung von $submitted müßte dann natürlich rausgenommen werden
wobei ich hier noch zusätzlich das Datum konvertiere
($node->created liegt in roher Unix-Datumsform vor)
stattdessen ginge auch die Nutzung von $date darin ist ein formatiertes Datum abgelegt, formatiert entsprechend der Drupal "medium" Einstellung
[edit]
das mit dem Newsfeed dürfte direkt im Modul zu ändern sein, ich nehm an das das Modul direkt auf die "last updated" Nodes geht....was so gesehen erstmal ok wäre
ok ich schau grad entsprechend nach, bisher schauts so aus, als würde grds. das "created" Datum in der Sortierreihenfolge maßgeblich sein, das könnte bedeuten, dass beim Ändern eines Datums eines nodes nicht das "created" sondern ein anderes geändert wird....auf ins php Getümmel
siehe function node_save in
am 01.07.2005 - 09:43 Uhr
siehe function node_save in imodules/node.module
.....
// Update an existing node.
// Set some required fields:
$node->changed = time();
// Prepare the query:
foreach ($node as $key => $value) {
if (in_array($key, $fields)) {
$q[] = db_escape_string($key) ." = '%s'";
$v[] = $value;
}
}
"created" wird also nicht verändert, die standard node_feed Function
sortiert aber danach
if (!$nodes) {$nodes = db_query_range(db_rewrite_sql('SELECT n.nid FROM {node} n WHERE n.promote = 1 AND n.status = 1 ORDER BY n.created DESC'), 0, 15);
}
ich bin mir da nicht so sicher, aber ich könnt mir denken, dass die RSS Spec. eine Änderung des Datums nicht als Content-Änderung sieht und deshalb der Feed nicht angepasst werden müßte
mal schauen was die drupals dazu sagen
Und? Gibt´s zur Feed
am 01.07.2005 - 18:08 Uhr
Und? Gibt´s zur Feed Sortierung schon eine Lösung?
Bisher nichts neues, ausser
am 01.07.2005 - 18:38 Uhr
Bisher nichts neues, ausser das micha das hier schon geschriebene hinzufügte. Mich wundert etwas, dass darüber noch nie wer gestolptert ist...
Wenn ich eine Lösung hab sag ich bescheid, vielleicht finde ich am WE auch selbst eine.
mfg holger
http://www.ebec.net ...
http://www.stnetwork.de ...
Ich hab´s noch nicht ganz
am 01.07.2005 - 19:04 Uhr
Ich hab´s noch nicht ganz verstanden...
Wenn ich in einem Node eine Änderung durchführe, wird das "created" Datum nicht verändert, sondern nur das "changed" Datum bzw die Spalte in der Tabelle "nodes". Verändere ich aber das Datum des Nodes, wird das "created"-Feld verändert... Eigentlich müßte es dann doch funktionieren bzw. richtig sortiert werden... ???
Ich schau auch nochmal in den Quellcode, evtl. komme ich ja noch drauf... ;-)
LG
Björn
Ich erklär es nochmal
am 02.07.2005 - 03:01 Uhr
Ich erklär es nochmal kurz:
Also ich erstelle jetzt einen Artikel. Dieser muss aber zurückdatiert werden auf den 11.11.2003 damit die Anzeige im Archiv zeitlich korrekt ist.
Dieser Artikel wird nun auf der Homepage genau so, wie es sein soll, chronologisch an derrichtigen Stelle platziert. Also sagen wir mal eben nicht an erster Stelle der Hauptseite, sondern zB auf node?from=58
Bis dahin klappt alles und der Artikel wurde richtig archiviert, ist auch im Archiv-Kalender zeitlich korrekt dargestellt.
Nun der Haken:
Eine an meinem RSS-Newsfeed interessierte fremde Seite stellt meine RSS-News dar, zB im Newsfeed-Generator. Normalerweise wäre es logisch, dass dort nun immer der zeitlich aktuellste Beitrag auch an erster Stelle steht - dem ist aber NICHT so, es wird generell der zuletzt geschriebene Artikel unabhängig vom Datum als erster angezeigt.
Logisch wäre aber, das ein Artikel den ich im Jahr 2005 auf den 11.11.2003 zurück datiere auch hinten an gestellt wird, weil er ja eben nicht der aktuellste ist.
Und darum geht es bei meiner Frage :-)
http://www.ebec.net ...
http://www.stnetwork.de ...
Das mit dem Datum habe ich
am 02.07.2005 - 08:11 Uhr
Das mit dem Datum habe ich jetzt folgendermaßen in der node.tpl.php gelöst:
<?phpprint format_date($node->created, 'custom','d.m.Y');
?>
funktioniert prima ;-)
danke für eure tipps!
http://www.ebec.net ...
http://www.stnetwork.de ...
Erläuterung
am 04.07.2005 - 06:34 Uhr
1. Erstellen eines Nodes -> "created" Datum wird erzeugt
2. beliebiges Ändern eines Nodes -> "changed" wird erzeugt bzw. überschrieben
3. feed "engine" sortiert nach "created"
mal davon abgesehen, das man theoretisch immer mit Revision arbeiten sollte, scheints nötig den Sourcode der Feed-Erzeugung anzupassen
<?phpif (!$nodes) {
$nodes = db_query_range(db_rewrite_sql('SELECT n.nid FROM {node} n WHERE n.promote = 1 AND n.status = 1 ORDER BY n.changed, n.created DESC'), 0, 15);
}
?>
allerdings sollte man das ausgiebig testen, ich kann aus dem Stehgreif nicht sagen, wie MySQL die Ergebnisse sortiert, wenn eine große Menge Nodes für "changed" den Defaultwert
changed int(11) NOT NULL default '0', hat
...für DB2 wüßt ichs ;-)
Sorry wenn ich so
am 04.07.2005 - 09:43 Uhr
Sorry wenn ich so frage...aber wo genau muss das rein? Also welche php und wo dort?
mfg holger
http://www.ebec.net ...
http://www.stnetwork.de ...
Der Code muß in die Datei
am 04.07.2005 - 09:53 Uhr
Der Code muß in die Datei node.module.
Ich habe es aber immer noch nicht verstanden (wahrscheinlich stehe ich total auf dem Schlauch...): Du kannst doch den Feed anhand des "created"-Datums sortieren, reicht das nicht aus?
LG
Björn
Du kannst doch den Feed
am 04.07.2005 - 11:20 Uhr
Wo ???
mfg holger :-)
http://www.ebec.net ...
http://www.stnetwork.de ...
nach “created” ist von
am 04.07.2005 - 12:04 Uhr
nach "created" ist von vorneherein sortiert, ändert Holger nur das "authored on" Datum eines Nodes, wird auf Datenbankebene das "created" Datum nicht verändert, sondern das "changed" gesetzt bzw. geändert
in der späteren Feed-Sortierung wird dann diese Datumsänderung nicht gewertet, da weiterhin "created" auschlaggebend ist
--> Drupal bzw. das node.module setzen das "created" Datum exakt einmal, nämlich beim erstmaligen Erstellen, später wird nur noch das "changed" Datum geändert, gilt auch für Admin
warum das so ist...kA, ich persönlich würde für Leute die entsprechende Rechte haben( Admin) die Änderung des "created" Datums durchaus zulassen
ergo... Modul suchen, mit dem man direkt die FEED-Einträge zuweisen kann (wäre wirklich mal ne gute Sache, oder den Sourcecode ändern
alternativ kannst du einfach bei allen Nodes denen du z.B. den Term "Archiv" zugewiesen hast, per Update jeweils das "created" Datum verändern (1 Monat weniger?)
In den Core-Dateien werde
am 04.07.2005 - 14:13 Uhr
In den Core-Dateien werde ich lieber nichts ändern.
Das Datum wird zumindest jetzt so angezeigt wie ich es für sinvoll halte und das mit den feeds überlasse ich doch lieber den core-entwicklern die sich damit auch auskennen :-)
danke euch!
mfg holger
http://www.ebec.net ...
http://www.stnetwork.de ...
@micha Das ganze habe ich
am 04.07.2005 - 15:32 Uhr
@micha
Das ganze habe ich schon verstanden, aber Holger hatte in seinem ersten Posting folgende Frage gestellt:
>Wie kann ich einstellen, das die Ausgabe des RSS Newsfeeds chronologisch nach Datum des Eintragsdatums angezeigt wird?
Und genauso funktioniert´s doch, das hat mich ein wenig irritiert...
LG
Björn
das hatte ich dann
am 04.07.2005 - 16:17 Uhr
das hatte ich dann geflissentlich überlesen und mich nur auf seinen Beispielfall bezogen
ein Zeichen dafür, dass wir mal professionellen Drupal 24h Support aufmachen sollten, so nebenbei und in der Mittagspause geht für mich zuviel unter *sorry*
@Holger : wie hast du es nun für dich gelöst ?
Ich habe am Newsfeed erstmal
am 04.07.2005 - 17:13 Uhr
Ich habe am Newsfeed erstmal nichts geändert aber teste da noch lokal etwas.
Björn es ist nicht ganz so mit der Anzeige...Teste es doch mal selbst---schreib einen neuen Artikel und datiere den auf den 1.1.2004 - dann wird der auf der Seite hier hinten angestellt weil er ja quasi der erste dann wäre was auch richtig ist vom datum gesehen...aber ... wenn jemand deinen Newsfeed aboniert, dann erscheint der Artikel obwohl er ja 2004 datiert ist trotzdem als neuer artikel und das ist irgendwo unlogisch und vor alem bei Seiten die ältere beiträge migrieren nicht vorteilhaft...natürlich bricht einem das niun nicht gleich das genick aber es ist eben irgendwo nicht so toll ;-)
Wenn ich was dazu noch entdecke meld ich mich nochmal.
mfg holger
http://www.ebec.net ...
http://www.stnetwork.de ...