Views - Pro Zeile Feld-Inhalt als CSS Klasse anstatt normaler Output
Eingetragen von mudds (18)
am 27.05.2013 - 14:53 Uhr in
am 27.05.2013 - 14:53 Uhr in
Hallo zusammen,
an folgender Stelle komme ich nach zwei Tagen des Suchen und Probierens einfach nicht weiter.
Ich habe einen View. Für diesen View möchte ich im div jeder Zeile den Inhalt eines bestimmten Feldes als CSS-Klasse ausgeben, anstatt als normalen Output.
Grund: Ich möchte abhängig vom Inhalt dieses Feldes einen bestimmten Hintergrund-Banner einblenden.
An welcher Stelle greife ich da ein?
Folgendes habe ich versucht:
- views-view-unformatted--VIEWNAME.tpl.php: Leider habe ich hier nur ein flachgeklopftes Array für jede View-Zeile
- HOOK_preprocess_views_view(): auch hier bekomme ich via $vars['rows'] nur das flachgeklopfte Array
Über Hinweise würde ich mnich sehr freuen.
Vielen Dank im Voraus
MAthis
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie wäre es mit einer
am 27.05.2013 - 15:03 Uhr
Wie wäre es mit einer foreach-Schleife für dein "flachgeklopftes Array"?
Gruß
Christian
das problem dabei ist, dass
am 27.05.2013 - 15:28 Uhr
das problem dabei ist, dass das Array ja gar nicht das betreffende Feld enthält. das soll ja gerade aus dem normalen Output herausfallen und nur als CSS-Klasse erscheinen. mit dieser Methode müsste ich in der View-admin-oberfläche das Feld normal einblenden und dann nachhdem ich es im views_template (z.B. views-view-unormatted.tpl.php) durchloopt habe, an anderer Stelle wieder rausschmeissen...
Ich finde das höchst unbefriedigend :(
Inzwischen suche ich nach einer Möglichkeit, wie ich an geeigneter Stelle ein "node_load" einbauen könnte, um das volle Objekt zu erhalten. Leider sendet mit der View die NID des Objekts der Row nicht mit :(
So ganz verstehe ich leider
am 27.05.2013 - 15:42 Uhr
So ganz verstehe ich leider nicht, was du da vorhast.
Aber wenn du den Output einen Feldes überschreiben willst, kannst du ja auch die entprechende views-view-fields.tpl.php überschreiben, oder ein Overwrite in der Views-Administration machen, oder es eben in der foreach-Schleife machen, (nachdem Du es wieder verfügbar gemacht hast)
Gruß
Christian
Hier der Screenshot von
am 27.05.2013 - 16:32 Uhr
Hier der Screenshot von meinem View:
Die rot durchstrichenen Felder sollen nicht dargestellt werden.
Stattdessen sollen abhängig vom Wert dieses nicht dargestellten Inhalts rechts diese Banderolen als Hintergrundbild basierend auf einer CSS-Klasse dargestellt werden.
Wenn ich den Outbut in "views-view-fields" oder in der views-admininstration überschreibe, dann habe ich die benötigten Daten in "view-view-unformatted.tpl.php nicht mehr zur zur Verfügung.
Meine sehr unschöne Lösung: den flachgeklopfpten $row-string in views-view-unformatted-tpl.php mit "strpos" und "str_replace" zu bearbeiten.
Ja - aber ich verstehe nicht
am 27.05.2013 - 17:19 Uhr
Ja - aber ich verstehe nicht was unschön daran sein sollte. Wenn es klappt ist es doch gut.
String-Manipulationen macht man doch oft beim Theming - und es gut dass man mit Drupal in diese Richtung arbeiten kann.
"Schöner" könnte man es vielleicht mit einer preprocess Funktion machen, wenn Du der Meinung bist, dass der Code dort nicht hingehört.
Gruß
Christian
Da hast du recht
am 27.05.2013 - 17:46 Uhr
Da hast du recht :).
Wahrscheinlich ist das gar nicht so unschön.
Vielen dank für die Unterstützung beim Denken!
LG Mathis
Schon mal Semantic Views ausprobiert?
am 27.05.2013 - 19:02 Uhr
Hallo,
evtl. hilft Dir auch das Modul weiter.
Du musst im Views nach Installation und Aktivierung dann auf Semantic Views umstellen, dann kannst Du jedem Feld eine eigene css-Klasse geben. Und damit natürlich auch per css dann darauf zugreifen.
Viele Grüße
Marita Betz
danke! das werde ich
am 13.06.2013 - 17:36 Uhr
danke! das werde ich ausprobieren
VG Mathis
du kannst bei den
am 14.06.2013 - 06:32 Uhr
du kannst bei den einstellungen im view doch zeilenklassen vergeben
echt? Das finde ich
am 14.06.2013 - 09:11 Uhr
echt?
Das finde ich nirgends.
Ich sehe nur bei den "Fields" die Möglichkeit durch token substitutions CSS-Klassen zu vergeben. Aber das hilft mir nicht,
da die Klasse im Element für die "Row" eingetragen werden muss.
Views: format-settings
am 14.06.2013 - 10:04 Uhr
Moin.
Klick mal beim Format auf "settings":
Da kannst Du dann die Token aus den Replacement-Patterns verwenden. Ich habe hier mal als Beispiel das Feld "Node: nid" verwendet. Das wurde per "Exclude this field from output" versteckt.
Gibt's nicht. Wie konnte ich
am 14.06.2013 - 10:16 Uhr
Gibt's nicht.
Wie konnte ich das übersehen!
Tausend Dank :)