Anzeige eines "Neu" Labels in Views, wenn der Node jünger als 5 Tage alt ist
am 22.06.2017 - 15:36 Uhr in
Hallo Zusammen,
Es gibt ja immer verschiedene Wege und hier wieder mal eine Frage: wie macht _Ihr_ das?
Ich habe eine simple Liste von Nodes in Views, sortiert vom neuesten zum ältesten. Die paar Nodes, die jünger sind als z.B. 5 Tage sollen beim Output
ein zusätzliches Symbol erhalten, im Stil von "Neu" (=Datum der Erstellung max 5 Tage zurück).
Man müsste also der Views-Row oder einem der Felder oder einem zusätzlichen Global-Feld eine Klasse mitgeben, damit man via CSS die jungen Nodes zusätzlich ansprechen
kann.
Ich würde nun also eines der Views-Templates anpassen und das ausprogrammieren.
Kennt Ihr einen andere Möglichkeit? Ist ja eigentlich eine wenig ungewöhnliche Anforderung...
Danke und Gruss
leda
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi,ich weiss nicht ob der
am 23.06.2017 - 09:51 Uhr
Hi,
ich weiss nicht ob der node is_new Parameter für dich optimal ist, denn er ist ein Boolean und enthält kein Datum!
Warum nimmt Du nicht einfach ein Datumsfeld und zeigst etwas an oder nicht wenn das Datum älter ist als 5 Tage?
MFG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi, Den "Node_is_New
am 23.06.2017 - 10:25 Uhr
Hi,
Den "Node_is_New Parameter" im Zusammenhang mit Views kenne ich nicht. Und das Datumsfeld ist ja das Creation-Date, da brauch ich kein neues.
Der Knackpunkt in Deiner Antwort ist "oder nicht".
Wie gesagt, über ein Views-Field-Template kann ich das durchaus ausprogrammieren.
Ich siche nach einer Lösung "outofthebox", mit der man übers Views GUI den Node anders ausgeben könnte, wenn der Node nicht älter als 5 Tage seit Creationdate ist.
Man müsste in einem Viewsfeld das Alter des Nodes berechnen.... (aber Views-php will ich nicht nutzen).
Das einzige Bordmittel, das mir mittlerweile in den Sinn gekommen ist, ist ein Taxonomy-Feld auf dem Node einzuführen, und dieses über den Rules-Scheduler zu steuern. Damit liesse sich definitiv in Views dann etwas anfangen.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Hi, Du kannst doch in der
am 23.06.2017 - 11:05 Uhr
Hi,
Du kannst doch in der View einen Filter setzen, der das Feld creation filtert.
createion date soll grösser sein, als als heute -5 Tage.
https://www.drupal.org/node/2481343
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Danke Robert. Aber es geht
am 23.06.2017 - 12:16 Uhr
Danke Robert. Aber es geht nicht ums filtern. Es geht darum, die jüngeren Nodes anders darzustellen.
Aber: man könnte die Anforderung auf zwei Views aufteilen. Die eine zeigt nur die neuesten, die andere den Rest.
PS: wie gesagt, ich selber habe kein Problem, die Anforderung umzusetzen, es geht mir in diesem Thread darum, Ideen zusammenzutragen, wie man das ohne Programmieren im Template erzielen kann....
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Hi,sorry aber"Danke Robert.
am 23.06.2017 - 15:24 Uhr
Hi,
sorry aber
"Danke Robert. Aber es geht nicht ums filtern. Es geht darum, die jüngeren Nodes anders darzustellen."
Genau dazu kann doch der Views Filter verwendet werden.
Da braucht es keine Templates oder weiteren Module die man Programmieren müsste.
Das kannst Du mit rein Views erledigen.
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
views_conditional
am 25.06.2017 - 20:05 Uhr
Schau dir mal https://www.drupal.org/project/views_conditional an. Damit habe ich schon ähnliches umgesetzt. Nimm das Create date field in die view als quelle für die views_conditional Ausgabe.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Hi Marco, yop, das ist ein
am 25.06.2017 - 22:28 Uhr
Hi Marco, yop, das ist ein cooles Modul. Aber ich bin mir fast sicher, dass das mit der Zeitberechnung immer noch nicht geht - oder hast Du's geschafft?
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
ja, stimmt, für sowas habe
am 26.06.2017 - 11:48 Uhr
ja, stimmt, für sowas habe ich zwar views_conditional genommen, aber noch php gebraucht, um die Datumswerte zu kriegen (https://www.drupal.org/node/2806757).
zuerst muss das relevante Datumsfeld (Node created oder updated) rein und als unix timestamp ausgegeben werden. dazu einfach ein datumsformat anlegen: 'U' zeigt den unix timestamp.
Dann wird das aktuelle datum abzüglich dem gewünschten NEU-Zeitraum in Sekunden als timestamp zum Vergleich gebraucht, z.b. mit views_php in die view holen.
Mit den beiden timestamp-Werten als Vergleichskriterien kann dann views_conditional versorgt und je nach Bedingung (neuer/älter => größer/kleiner) unterschiedliches ausgeben: [title] - NEU!! oder wenn älter, nur: [title]
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Du kannst das Creation Date
am 28.06.2017 - 08:16 Uhr
Du kannst das Creation Date als Feld hinzufügen und entsprechend formatieren, dann noch mit view_php ein Feld das das aktuelle Datum enthält und dann nimmst du ein Math Feld zum vergleichen und wenn der Vergleich kleiner 5 ist gibst du "neu" aus ansonsten nichts.
gruß pebosi
--
https://pebosi.net
Danke Pebosi, das ist
am 28.06.2017 - 10:50 Uhr
Danke Pebosi, das ist naheliegend, aber ich habe weiter oben bereits Views-Php für den Einsatz ausgeschlossen (aus Sicherheitsgründen).
Aber "man" könnte tatsächlich ein Modul im Stil von views_simple_math_field schreiben, welches die Aufgabe löst. Das werde ich mir mal genauer anschauen.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Gibt es einen Grund, warum du
am 28.06.2017 - 13:26 Uhr
Gibt es einen Grund, warum du eine Out-of-the-box Lösung möchtest?
Wie gesagt, über ein Views-Field-Template kann ich das durchaus ausprogrammieren.
Ich denke das ist sowohl die schnellste wie auch die sauberste Lösung. Letztendlich ist die Darstellung eines "New"-Labels auch eher Teil des Themes, also auch völlig richtig es themebasiert in einem Template File zu richten.
Als Alternative kannst du einen Views field handler implementierten, der dir abhängig vom einem anderen property (z.B. "created" timestamp) die Ausgabe generieren lässt. Funktioniert und kannst du flexibel zu jedem Node view als Feld hinzufügen. Das ist interessant; gerade für komplexere Anwendungsfälle, dauert jedoch um einiges länger, wenn du dich erst einmal reinfuchsen musst.
Danke für Deine Antwort. Ich
am 28.06.2017 - 14:16 Uhr
Danke für Deine Antwort.
Ich habs weiter oben bereits geschrieben - _ich kann_ das über ein Template ausprogrammieren und würde es auch so tun.
Da ich aber für die Lösung der Anforderung wie immer das Internet abgesucht habe, ob es bereits eine Lösung gibt, bin ich drauf gestossen, dass es sehr viele Anfragen für genau dieses Problem gibt, aber kaum einen Lösungsansatz.
Daher meine Umfrage hier im deutschsprachigen Forum. Man weiss ja nie, ob jemand etwas gescheiteres gefunden hat, das nicht mit Programmieren und php zu tun hat.
Wie wir in diesem Thread sehen, gibt es doch einige Möglichkeiten, ans Ziel zu kommen, aber kaum eine "outofthebox".
Danke Euch allen.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
ein weg ohne views_php
am 28.06.2017 - 14:23 Uhr
wäre ein verstecktes Datum-Feld am node und eine Rule, die dieses nach Events wie Create oder update füllt mit [site:current-date] und einem - X Tage offset.
Dann kann man auch auf views_php verzichten. Der Rest steht oben …
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Hi,also sorry, aber ich
am 28.06.2017 - 15:16 Uhr
Hi,
also sorry, aber ich verstehe nicht. was daran so schwierig sein
soll vor der Anzeige zu prüfen ob das created date eines nodes älter ist als 5 Tage?
Die node is_new variable ist der falsche Ansatz, das ist ein boolean und der wird nirgends gespeichert.
Drupal geht davon aus das eine node new ist, wenn sie noch keine nid hat oder das created date älter ist als 1 Tag
und setzt dann is_new.
MFG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
was dran schierig ein soll?
am 28.06.2017 - 16:31 Uhr
Ich habe eine simple Liste von Nodes in Views, sortiert vom neuesten zum ältesten. Die paar Nodes, die jünger sind als z.B. 5 Tage sollen beim Output
ein zusätzliches Symbol erhalten, im Stil von "Neu" (=Datum der Erstellung max 5 Tage zurück).
Ich verstehe die Anforderung so, dass keine nodes ausgefiltert werden sollen, das wäre natürlich sehr einfach, sondern dass alle ausgegeben werden sollen, aber je nach Fall unterschiedlich. Deshalb mein Vorschlag mit views_conditional.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Hallo Marco,selbst dannist
am 28.06.2017 - 19:17 Uhr
Hallo Marco,
selbst dann ist es doch wenn man den created timestamp
in der Ausgabe hat, relativ einfach zu entscheiden ob dieser timestamp älter ist als
5 Tage?
Unabängig ob es in einem Modul im Theme oder einfach nur Javascript ist.
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)