Views und der aktuellste Node
am 21.09.2010 - 17:35 Uhr in
Hallo zusammen,
ich habe folgendes Problem: ich habe einen View, der mir die Inhalte chronologisch darstellt. Nun hätte ich gerne, dass der aktuellste Node nicht normal wie die anderen angezeigt wird, sondern mit einigen Feldern mehr über dem restlichen View angezeigt wird.
Wie und an welcher Stelle kann ich denn am besten herausfinden, welcher Node die höchste ID hat, und dann anders Themen? Kann ich nicht irgendwie diesen Node herausfiltern, und dann in der .tpl.php die benötigten Infos laden? Ich weiss da erstens nicht genau, wie man, den Node mit der höchsten ID des Inhaltstypen in dem View finde, und wie ich den einen Eintrag nicht anzeigen lassen kann.
Hat jemand Vorschläge? Danke,
Marie
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Marie, ich denke die
am 21.09.2010 - 20:06 Uhr
Hallo Marie,
ich denke die einfachste Variante wäre es Dein View in zwei einzelne Views zu teilen und diese dann einfach übereinander zum Beispiel als Blöcke anzeigen zu lassen. Dabei müsstest Du die beiden Views jeweils nach Beitragsdatum oder tatsächlich nach der Node-Id absteigend sortieren lassen.
Dann gibst Du im ersten View unter dem Punkt "Anzuzeigende Einträge" einfach eine 1 für die Anzahl und eine 0 für den Offset an. Damit wird nur noch der neueste Beitrag angezeigt und Du kannst beliebig das Theme anpassen oder weitere Felder hinzufügen.
Im zweiten View gibst Du wieder bei Anzuzeigende Einträge einfach die gewünschte Zahl der neuesten Beiträge und zusätzlich eine 1 für den Offset an. Durch die 1 im Offset wird der erste Beitrag nicht angezeigt (gezählt wird in dem Falle ab 0). Hier kannst Du jetzt diese Beiträge wieder beliebig anpassen und das auch unabhängig vom ersten View.
Gruß,
Sven
Ok super, das mit dem Offset
am 22.09.2010 - 11:28 Uhr
Ok super, das mit dem Offset hat geklappt, der letzte Beitrag wird nicht mehr angezigt. Nun arbeite ich aber gerade in einer Template-Datei für die Designausgabe für den einen View, und würde nun gerne einfach nur den aktuellsten Node per Drupal-Funktion, PHP oder von mir aus auch mit MySQL bekommen, und die Felder anzeigen.
Geht das nicht einfach so, ohne einen weiteren View anlegen zu müssen?
db_query / node_load
am 22.09.2010 - 13:38 Uhr
Hallo Marie,
die Alternative hast Du natürlich auch. Theoretisch könntest Du im View-Header per PHP-Code oder im Template des View direkt per db_query, den neuesten Node ermitteln. Diesen dann per node_load laden und dann die gewünschten Felder ausgeben.
Nachteil ist lediglich, dass es nur derjenige, der PHP programmieren kann, dann auch ändern kann. Mit der Doppel-Views-Variante hättest Du einfach eine etwas Benutzeroberflächen-orientiertere Lösung.
Gruß,
Sven
ich krieg das gerade einfach
am 22.09.2010 - 16:10 Uhr
ja, das ist schon ok so. die vorlage ist so, und das wird sich auch nicht ändern.
aber ich krieg das gerade einfach nicht hin, den neuesten node zu ermitteln.
soviel hab ich schon:
$type = 'type';
$query = db_query("SELECT * FROM {node} WHERE type = '%s' ", $type);
$row = db_fetch_array($query);
Aber wie finde ich jetzt heraus, welches der neueste ist bzw. der, mit der höchsten NID?
Wie wärs mit: $type =
am 22.09.2010 - 16:32 Uhr
Wie wärs mit:
$type = 'type';
$query = db_query("SELECT * FROM {node} WHERE type = '%s' ORDER BY node.nid DESC LIMIT 1", $type);
$row = db_fetch_array($query);
Dann bekommst Du genau ein Ergebnis, den Node mit der höchsten Nid.
Beste Grüße
Werner
ja, das hat funktioniert,
am 22.09.2010 - 16:45 Uhr
ja, das hat funktioniert, super! vielen dank!!
wla schrieb Wie wärs
am 22.09.2010 - 18:17 Uhr
Wie wärs mit:
$type = 'type';
$query = db_query("SELECT * FROM {node} WHERE type = '%s' ORDER BY node.nid DESC LIMIT 1", $type);
$row = db_fetch_array($query);
Dann bekommst Du genau ein Ergebnis, den Node mit der höchsten Nid.
Beste Grüße
Werner
Hi Werner,
Wenn Du oder andere gerade bei Datenbankabfargen zu Node-IDs sind ... man kann doch sicherlich auch die aktuell höchste Node-ID aus der Datenbank abrufen ... Kann mir jemand den Codeschnippsel dafür verraten ....
Lass die Abfrage nach dem
am 22.09.2010 - 21:50 Uhr
Lass die Abfrage nach dem Node-typ raus also:
$nid = db_result(db_query("SELECT nid FROM {node} ORDER BY node.nid DESC LIMIT 1"));
Beste Grüße
Werner
Performance
am 23.09.2010 - 09:36 Uhr
Jetzt muß ich auch nochmal nachhaken. Hat jemand eine Idee, ob die SQL-Variante mit dem Limit wie vom Werner beschrieben oder alternativ eine Variante mit einer direkten
select max(nid) ....
performanter auf dem mySQL-Server läuft? Wobei ich mal davon ausgehe, dass in diesem konkreten Fall die Unterschiede eh so minimal sind und kaum eine Rolle spielen, oder?Gruß,
Sven
wla schrieb Lass die Abfrage
am 23.09.2010 - 10:19 Uhr
Lass die Abfrage nach dem Node-typ raus also:
$nid = db_result(db_query("SELECT nid FROM {node} ORDER BY node.nid DESC LIMIT 1"));
Beste Grüße
Werner
Super ... Vielen Dank!