CCK Select -> Views Ausgabe mit Bildern

am 15.08.2011 - 16:00 Uhr in
Hallo zusammen,
ich hab ein Problem, vielleicht kann mir jemand helfen:
Ich habe ein CCK Text-Feld mit Select-Option. Hier sollen die Nutzer drei Werte auswählen können
1|First Week
2|Second Week
3|Weekend Only
Nun will ich diese Daten (gemeinsam mit anderen die ich in die Node aufnehme) mit Views in einer Tabelle wieder ausgeben, aber statt dem Text ein kleines Bild anzeigen:
Für jede Option die ausgewählt wurde soll ein grüner Kreis gezeigt werden, für jede Option die nicht ausgewählt wurde stattdessen ein roter Kreis.
Ich hab nur leider keine Ahnung wo ich beim Theming ansetzen soll. Beim Views Field-Theming hab ich keine brauchbaren Informationen gefunden.
Hat irgendjemand eine Idee?
- Anmelden oder Registrieren um Kommentare zu schreiben
In Views siehst du unter den
am 17.08.2011 - 21:00 Uhr
In Views siehst du unter den "Basic Settings" einen Link: "Theme: Information". Dort drauf klicken.
Es werden dir dann alle möglichen (optionalen) Views Templates angezeigt, die benutzt werden könnten. Die fett gedruckten werden aktuell benutzt.
Für dich ist die unterste Reihe interessant, das sind die Templates für die einzlenen Felder. Voreingestellt wird views-view-field.tpl.php benutzt.
Dieses Template einfach aus dem modules/views/theme Ordner in das benutzte Theme rüberkopieren, dort umbenennen und dann mit PHP die AUsgabe definieren.
Hoffe, das hilft.
.
am 18.08.2011 - 11:31 Uhr
nicht wirklich.
Die Ausgabe des entsprechenden Feldes ist
<?php
// $Id: views-view-field.tpl.php,v 1.1 2008/05/16 22:22:32 merlinofchaos Exp $
/**
* This template is used to print a single field in a view. It is not
* actually used in default Views, as this is registered as a theme
* function which has better performance. For single overrides, the
* template is perfectly okay.
*
* Variables available:
* - $view: The view object
* - $field: The field handler object that can process the input
* - $row: The raw SQL result that can be used
* - $output: The processed output that will normally be used.
*
* When fetching output from the $row, this construct should be used:
* $data = $row->{$field->field_alias}
*
* The above will guarantee that you'll always get the correct data,
* regardless of any changes in the aliasing that might happen if
* the view is modified.
*/
?>
<?php
print $output;
?>
in $output ist lediglich die normale html ausgabe gespeichert. Durch die Ausgabe in $view, $field und $row blicke ich nicht durch.
gibt es in views nicht auch
am 18.08.2011 - 12:52 Uhr
gibt es in views nicht auch die Möglichkeit von rewrite output? Damit sollte sich doch so ein Punkt davor viel einfacher realisiern lassen.
Richtig, $output ist die
am 18.08.2011 - 13:04 Uhr
Richtig, $output ist die HTML-Ausgabe. Um die Variablen $field und $row zu verstehen, ist es absolut notwendig mit dem Modul "devel" zu arbeiten.
Mit dem Befehl "dsm($field);" bekommst du eine Anzeige des Inhalts der Variablen, der dann einmal verstanden per simpler PHP-If-Schleife zum gewünschten Ergebnis abgeändert werden kann.
.
am 18.08.2011 - 13:06 Uhr
Wenn ich die rewrite Option des Felds benutze habe ich doch auch nur den Token [field_reg_weeks_value]. Da drinne steckt das gleiche wie in $output, nämlich (wenn alle drei Optionen ausgewählt sind)
<div class="field-item field-item-0">First Week</div>
<div class="field-item field-item-1">Second Week</div>
<div class="field-item field-item-2">Weekend</div>
Und zwar als ganzes.
Nur HTML ist aber zu wenig. Da könnte ich zwar mit jquery den Text verstecken und an die entsprechende Stelle 'nen Bild setzen, aber das finde ich eher unelegant gelöst. Ich würde lieber nen Schritt vorher ansetzen und bereits die SQL Abfrage auseinandernehmen und statt Text einfach dem Text zugeordnete Bilder anzeigen lassen.
sTr schrieb Wenn ich die
am 18.08.2011 - 13:54 Uhr
Wenn ich die rewrite Option des Felds benutze habe ich doch auch nur den Token [field_reg_weeks_value]. Da drinne steckt das gleiche wie in $output, nämlich (wenn alle drei Optionen ausgewählt sind)
<div class="field-item field-item-0">First Week</div>
<div class="field-item field-item-1">Second Week</div>
<div class="field-item field-item-2">Weekend</div>
Und zwar als ganzes.
Tja aber mit dem bereits vorgeschlagenen "Rewrite the output" könntest Du auch
<div class="field-item field-item-0"><div class="First Week"> </div></div>
<div class="field-item field-item-1"><div class="Second Week"> </div></div>
<div class="field-item field-item-2"><div class="Weekend"> </div></div>
erhalten. Dafür müstest du eben beim rewrite
<div class="[field_reg_weeks_value]"> </div>
als Ersatzwert eintragen.Damit kannst Du dann in der Ansicht den drei DIV Klassen First, Second und Weekend per CSS wunderschöne verschiedene Background Images zukommen lassen und der Text ist auch schon weg. ( Ein eigenes Beispiel : Die Länderflaggen )