News teaser und Inhalt auf der gleichen Seite
am 20.09.2014 - 20:07 Uhr in
Ich versuche die News Anrisstexte untereinander in einer Spalte darzustellen. Dazu habe ich eine View gemacht. Das funktioniert prima. Wenn ich nun auf "weiterlesen" klicke erhalte ich eine neue Seite. Das Ziel ist aber, dass dann der News Inhalt in der rechten Spalte angezeigt wird und in der linken immer noch alle Anrisstexte sichtbar sind.
Ich habe das schon mit verschiedenen Varianten versucht zu lösen, z.B. habe ich Display Suite versucht, dort habe ich die einzelnen Felder versucht darzustellen. Leider habe ich es nicht hingekriegt. Auch mit Panels habe ich es versucht, ohne Erfolg.
Ich wäre euch sehr dankbar, wenn mir jemand den Weg weisen könnte.
Vielen Dank!
Rolf
- Anmelden oder Registrieren um Kommentare zu schreiben
Du baust eine neue View
am 20.09.2014 - 21:24 Uhr
mit den entsprechenden Feldern und Widgeteinstellungen, die du dann in einem Block darstellst.
Hallo Ronald vielen Dank für
am 21.09.2014 - 09:37 Uhr
Hallo Ronald
vielen Dank für die Antwort. Ich kann mir damit aber nicht wirklich was vorstellen.
Grundsätzlich ist es ja so, dass der Weiterlesen-Link einen node im content öffnet.
Ich sehe einfach den Trick nicht wie ich alle Teaser und den Volltext des gewählten auf einer Seite gleichzeitig anzeigen kann.
Würde mich riesig freuen, wenn du mir etwas ausführlich auf die Sprünge helfen könntest.
Danke!
Rolf
Machbar ist es, aber ob Es
am 21.09.2014 - 11:11 Uhr
Machbar ist es, aber ob Es für Dich schon machbar ist bleibt die Frage.
Die aufgerufene Seite zeigt einen View mit einer Teaserliste. Vermutlich wird die Seite über den Pfad des Views angesprochen, denn dann funktioniert auch ein Paging für diesen View (anzeigen weiterer Seiten, wenn die Liste länger ist). Jetzt willst Du auf dieser Seite die normale Ansicht eines Nodes anzeigen, vermutlich in einem vorgesehenen Block. Diesen Block kannst Du anlegen und Plazieren und mit einem
versehen, daß er auf jedenfall in der Struktur der Seite vorhanden ist. Das war schon der erste Trick. Jetzt muß über einen AJAX-Callback auf dem Server der inhalt des ausgewählten Nodes abgeholt und in den leeren Block eingefügt werden.Dazu muß zunächst mal die View so umbebaut werden, daß die Links im der Teaserdarstellung (Titel und Weiterlesen) einen JavaScript(/jQuery)-Aufruf auslösen und nicht normal der Node geliefert wird.
In diesem JavaScipt-Programm wird der AJAX-Aufruf durchführt und die zurückgelieferte Info in den Block einfügt. So ewas findest Du vielleicht mit googlen, wenn Du das nicht selber schreiben kannst.
Für den Callback muß innerhalb von Drupal eine URL definiert sein, die den Node-Inhalt liefert. Mit dem normalen Seitenaufruf von Drupal kann das nämlich nicht gehen, da dabei immer die komplette Seite mit Header, Menüs und sonstigen Inhalten geliefert wird. Diese URL muß in einem eigenen Modul durch Implemantation von hook_menu definiert werden. Dort wird dann auch die Funktion angegeben, die den Inhalt liefert, die Du auch selbst schreiben mußt.
Nach diesem Strickmuster kann man Deinen Wunsch umsetzen, aber die Durchführung setzt erhebliche Kenntnisse von JavaScript/jQuery und Drupal voraus.
Falls es für dich auch in
am 21.09.2014 - 13:27 Uhr
Falls es für dich auch in Frage kommt, dass der Node in einem Popup angezeigt wird, könntest du das Modul Colorbox Node nutzen.
https://www.drupal.org/project/colorbox_node
Hallo Werner vielen Dank für
am 21.09.2014 - 17:44 Uhr
Hallo Werner
vielen Dank für die ausführliche Anleitung. Module und php sind mir nicht wirklich fremd, habe ich auch schon gemacht.
Ich habe versucht im Views den Link auf Javascript umzuändern, habe versucht das mit "Ergebnis überschreiben", funktioniert aber nicht. Brauche ich ein Zusatzmodul, oder kann ich das direkt machen?
Nochmals ganz herzlichen Dank für eure Unterstützung!
Rolf
Die Links mußt Du auf einen
am 21.09.2014 - 18:00 Uhr
Die Links mußt Du auf einen Dummy (z.B. #) umbiegen. Die dürfen ja nichts machen sondern sollen nur das JavaScript auslösen. Du mußt im JavaScript auf diese Links reagieren. Views liefert doch von Hause aus genügend Klassen, damit man dort einen Ansatzpunkt bekommt.
Da dann die Seite nicht mehr ohne JavaScript zu bedienen ist, ist dieser Ansatz allerdings nicht sauber. Besser ist der Austausch der Links durch Javascript. Wenn dann der Klient kein Javascript zuläßt funktionieren die Links normal.