[gelöst] Icons anzeigen anstatt Ja/Nein von der Auswahlliste?
Eingetragen von Ionit (1802)
am 02.04.2010 - 19:31 Uhr in
am 02.04.2010 - 19:31 Uhr in
Hallo,
User A kann unterschiedliche Dienstleister bewerten. Die Bewertung erfolgt über verschiedene Unterpunkte/Fragen welche mit JA/NEIN beantwortet werden können (Textfeld/Auswahlliste)
Wenn der User mit der Bewertung fertig ist, sollen auf dem (gespeicherten) Node aber nicht die ausgeschriebenen Worte JA oder NEIN erscheinen sondern ich hätte dies gerne als vordefinierte Icons!
Und zwar in dieser Art ....
JA als
Nein als
Hätte jemand eine Idee wie man das realisieren könnte?
Ich bin leider etwas ratlos!
Vielen Dank schonmal
Gruß Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
CSS?
am 02.04.2010 - 21:31 Uhr
Wie sieht denn die Ausgabe der Ergebnisse im Node aus?
Wenn "Ja" und "Nein" von HTML-Tags incl. Klassen umschlossen sind, kann man diese im CSS ansprechen. Dann ziehst Du den Text der Antworten nach links raus (sodass auch Screenreader noch was davon haben), die Bilder packst Du in den Background, etwa so:
.ja, .nein {position: absolute; left: -9999px;}
.ja {background: url(img/pic-ja.jpg) left top no-repeat;}
.nein {background: url(img/pic-nein.jpg) left top no-repeat;}
Hallo kissmedve, danke für
am 02.04.2010 - 21:45 Uhr
Hallo kissmedve,
danke für die interessante Antwort.
Wenn das klappen würde, wäre es natürlich super aber ich frage mich gerade wie ich "ja" und "nein" jeweils eine eigene CSS-Klasse zuordnen kann?
Die Ausgabe der Ergebnisse sieht im Moment ganz simple aus (bin noch am testen)
Frage 1: Ja
Frage 2: Ja
Frage 3: Nein
Frage 4: Ja
usw.
Das ist im Moment im Tabellendesign - also 2 Spalten nebeneinandern! (field_frage1, field_frage2 usw.)
Ich kann für den "Bewertungs/Antwort-Node" eine eigene Template-Datei anlegen - da es ein eigener Inhaltstyp ist - aber ich weiß nicht ob man für "ja" und "nein" eine eigene CSS-Klasse anlegen kann. Ich glaube nicht dass das geht oder? Ich wüsste jedenfalls nicht wie ich das machen soll?
Hast Du eine Idee?
Gruß Matthias
Ich habe mir mal die
am 02.04.2010 - 22:01 Uhr
Ich habe mir mal die PHP-Ausgabe angeschaut!
Die sieht für die Anwtorten (JA oder NEIN) leider nur so aus
$node->field_test_frage1[0]['view']
$node->field_test_frage2[0]['view']
$node->field_test_frage3[0]['view']
Ob der Wert Ja oder Nein ist kann man davon nicht ableiten und somit leider auch keine eigene Css-Klasse vergeben!
Gibts noch andere Ideen oder Vorschläge?
Testen ...
am 02.04.2010 - 22:14 Uhr
Da Du eine Auswahl von vorgegebenen Antworten hast, musst Du an diese auch rankommen. Ich weiß nur gerade nicht, wo die im Array sitzen. Sind das zufällig drei Ja-Antworten, die Du da hast? Versuch mal [0] mit['ja'] bzw. ['nein'] zu ersetzen, natürlich in der Schreibweise, die Du beim Festlegen der erlaubten Werte gewählt hast (groß/klein).
Edit: Ersetzen geht natürlich nicht, da es sich ja um die Ausgabe handelt. Meine Vermutung war eben, dass [0] für den ersten erlaubten Wert stehen könnte, [1] wäre dann der zweite ...
Ich habe mir die Werte aus
am 02.04.2010 - 22:41 Uhr
Ich habe mir die Werte aus Con Template raus gesucht!
Der Array ist immer 0 - egal ob "JA" oder "nein"
$node->field_test_frage1[0] (array)
$node->field_test_frage2[0] (array)
$node->field_test_frage3[0] (array)
$node->field_test_frage4[0] (array)
Frage 1, 2 und 4 ist "ja" - Frage 3 wäre Antwort "Nein" - trotzdem alles Array 0!
Wie sieht es eigentlich mit PHP-Code als Übersteuerung aus?
Unter "Felder verwalten" kann man unter "Zulässige Werte" PHP-Code angeben!
Ich kann überhaupt kein PHP aber ich versuche mal Laienhaft darzustellen was mir gerade durch den Kopf schwebt!
"zulässige Werte" (PHP-Code)
1. (if "ja" then print <div class="ja">Ja</div> )
2. (if "nein" then print <div class="nein">Nein</div>)
Ist das irgendwie möglich sodass "Ja" und "Nein" immer eine eigene CSS-Klasse zugeordnet werden? Dann könnte ich "ja" und "nein" ausblenden bzw. ins Aus verschieben und als Hintergrundbild die Icons verwenden!
Gruß Matthias
Probier mal ...
am 02.04.2010 - 23:00 Uhr
Der Wert muss wohl eine Array-"Stufe" tiefer sitzen: $node->field_test_frage1[0]['ja']. Vielleicht kann Dir Devel Theme-Developer genauer Auskunft geben?
Ansonsten probier mal, ob sowas im Node-Template funktioniert (ungetestet!):
<?php
if ($node->field_test_frage1[0]['value'] == 'ja') {
print "<div class="ja">" . $node->field_test_frage1[0] . "</div>";}
else if ($node->field_test_frage1[0]['value'] == 'nein') {
print "<div class="nein">" . $node->field_test_frage1[0] . "</div>";}
endif; ?>
Hallo kissmedve, vielen Dank
am 02.04.2010 - 23:21 Uhr
Hallo kissmedve,
vielen Dank für Deine Mühe aber leider funktioniert das nicht! Wenn ich den Code einfüge, passiert überhaupt nichts! Grübel!
Wie gesagt - ich habe von PHP keine Ahnung und wüsste nicht wie/wo man da ansetzen könnte!
Code wo?
am 02.04.2010 - 23:26 Uhr
Wo hast Du den Code eingefügt? Ich meinte ihn nicht für den php-Override, sondern für das Node-Template (die
<?php
?>
ich hatte den Code
am 02.04.2010 - 23:54 Uhr
ich hatte den Code tatsächlich im Override eingefügt!
Jetzt ist er im Node-Template!
Das gibt aber ne Fehlermeldung
Parse error: syntax error, unexpected T_STRING in /var/www/web227/html/d/themes/zen/node-frage_ja_nein.tpl.php on line 53
line 53:
print "<div class="ja">" . $node->field_test_frage1[0] . "</div>";}
Jetzt sollte es gehen!
am 03.04.2010 - 00:41 Uhr
Sorry, mea culpa! Das kommt davon, wenn man Code in ungewohnter Notation hinschreibt und nebenher Ostereier bastelt ;-). Der folgende ist getestet und sollte funktionieren:
<?php
if ($node->field_test_frage1[0]['value'] == 'ja'): ?>
<div class="ja"> <?php print $node->field_test_frage1[0]['value']; ?> </div>
<?php elseif ($node->field_test_frage1[0]['value'] == 'nein'): ?>
<div class="nein"> <?php print $node->field_test_frage1[0]['value']; ?></div>
<?php endif; ?>
?>
Guten Morgen Ursula, nochmals
am 03.04.2010 - 09:25 Uhr
Guten Morgen Ursula,
nochmals vielen Dank für den code aber leider funktioniert er bei mir nicht!
Ich habe den Code in node-inhaltstyp.tpl eingefügt aber hier passiert nichts!
Es gibt keine Fehlermeldung aber leider wird auch keine CSS-Klasse für Ja/nein vergeben!
Vielleicht mache ja ich auch etwas falsch - keine Ahnung!
Ich muss mir mal Gedanken über andere Möglichkeiten machen - vielleicht lasse ich die Iconanzeige auch erstmal weg und verwende Ja / Nein - ist zwar nicht so schön aber naja!
Trotzdem Danke für Deine Mühe erstmal!
Sonnige Grüße aus Berlin
Datei richtig benannt?
am 03.04.2010 - 09:59 Uhr
Guten Morgen Matthias,
das ist aber schade!
Hast Du getestet, ob die node-deininhaltstyp.tpl.php überhaupt reagiert? Will sagen, wenn die Datei z.B. nicht richtig benannt ist, sucht sich Drupal ganz normal die node.tpl.php und gibt die aus. Ok, das letzte Mal hat sie reagiert, aber wer weiß ...
Hallo Ursula, ja - ich habs
am 03.04.2010 - 10:11 Uhr
Hallo Ursula,
ja - ich habs ausprobiert - habe extra noch ein paar Wörter mit ins Template eingefügt um zu sehen ob es richtig verwendet wird!
Der Code allerdings hat leider keine Auswirkung!
Aber nicht so schlimm - ich verwende dann erstmal Ja / Nein anstatt der Icons!
Trotzdem Danke für die Hilfe
Viele Grüße Mattthias
Schaue dir mal den verlinkten
am 03.04.2010 - 11:12 Uhr
Schaue dir mal den verlinkten Thread an. Das ist zwar für 5.x und von 2008, aber eventuell hilft dir der Code weiter.
Link
Ganz unten der Beitrag von dreipunktnull, oder das hier. Da musst du dann nur die Bilder verlinken und die Werte entsprechend deiner Werte anpassen.
<?php
switch($node->field_news_kategorie[0][value]) {
case 'Sonstiges': echo 'Bild für Sonstiges'; break;
case 'Sonstwas': echo 'Bild für Sonstwas'; break;
case 'Undsonst': echo 'Bild für Undsonst'; break;
}
?>
Müsstest du dir nur entsprechend anpassen. Hoffe es hilft weiter. :)
Hallo Genesis, super - vielen
am 03.04.2010 - 12:36 Uhr
Hallo Genesis,
super - vielen Dank für den Hinweis!
Jetzt bekomme ich für die entsprechenden Werte die richtige Ausgabe des Bildes!
Ich muss das zwar noch anpassen und "Ja" u. "Nein" ausblenden aber die Ausgabe ist korrekt bzw. es funktioniert!
Juchuuu ;-)
Das hat sehr geholfen - besten Dank Meister!
Schulterklopfende Grüße
Matthias