[gelöst] Ausgabe eines Feldes: Key statt Bezeichner
am 19.09.2018 - 13:21 Uhr in
Hallo,
ich stehe etwas auf der Leitung:
Ich habe in einem Content-Type ein zusätzliches Feld 'field_title_position' als 'Liste (Text)' mit mehreren Werten 'schlüssel1|Bezeichnung 1', schlüssel2|Bezeichnung 2' usw. angelegt.
Um den Wert des Feldes auszugeben, habe ich zunächst in der page.tpl.php folgendes eingefügt:
<?php
if(isset($node->field_title_position)) {
$field = field_get_items('node', $node, 'field_title_position');
$fieldContent = field_view_value('node', $node, 'field_title_position', $field[0]);
print render($fieldContent);
}
?>
Als Ergebnis wird die Bezeichnung des ausgewählten Wertes ausgegeben; benötigt wird aber der Schlüssel.
Wenn ich die Zeile
$fieldContent = field_view_value('node', $node, 'field_title_position', $field[0]);
ergänze in
$fieldContent = field_view_value('node', $node, 'field_title_position', $field[0]['value']);
wird zwar der Schlüssel angesprochen, allerdings nur dessen erster Buchstabe ausgegeben (also 's' statt 'schlüssel1').
Was muss ich ändern/ergänzen, damit der vollständige Schlüssel ausgegeben wird? Oder ist der eingeschlagene Weg insgesamt falsch, und in Drupal ist für diesen Fall eine andere Lösung vorgesehen?
Falls jemand einen Tipp hat, wäre ich sehr dankbar!
- Anmelden oder Registrieren um Kommentare zu schreiben
dsm($field[0]['value']); Lief
am 19.09.2018 - 15:30 Uhr
dsm($field[0]['value']);
Liefert doch den gewählten Schlüssel.
Gruß
Berthold
Drupal Video-Tutorials
Hilft leider nicht weiter
am 19.09.2018 - 21:57 Uhr
dsm($field[0]['value']);
Liefert doch den gewählten Schlüssel.
Gruß
Berthold
Vielen Dank für den hilfreichen Hinweis.
dsm($field[0]['value']);
Beim Aufruf, wie oben beschrieben, mit field_view_value('node', $node, 'field_title_position', $field[0]['value'], wird jedoch der Schlüssel (String) wieder auf das erste Zeichen gekürzt.
neebei mir sieht das so aus
am 19.09.2018 - 23:25 Uhr
nee
bei mir sieht das so aus...
unten hast du den PHP-Code und oben die drei Ausgaben.
Gruß
Berthold
Drupal Video-Tutorials
Vielen Dank, aber...
am 20.09.2018 - 06:33 Uhr
Hallo Berthold,
erst mal herzlichen Dank für deine Mühe!
Ich habe deinen Code auf einer neuen Seite noch mal 1:1 umgesetzt, und es sieht genauso aus. Soweit fein.
ABER:
Ich möchte als Ergebnis nicht den Bezeichner "Bezeichnung 1", sondern den Schlüssel "schlüssel1" ausgeben, und genau an dieser Stelle scheitere ich dann wieder:
ich dachte, das wäre durch den Zusatz ['value'] zu erreichen, so dass also die dritte Zeie deines PHP-Code lauten würde:
$fieldContent = field_view_value('node', $node, 'field_title_position', $field[0]['value']);
Das funktioniert aber nicht, das Ergebnis ist immer nur der erste Buchstabe des Wertes, bei dem Wert "schlüssel1" also "s".
Ich bitte, meine Ahnungslosigkeit zu entschuldigen... sowas passiert, wenn mann sowas Tolles wie Drupal quasi nur hobbymäßig anwendet.
Beste Grüße
Alex
AlexFfm schrieb Das
am 20.09.2018 - 12:12 Uhr
Das funktioniert aber nicht, das Ergebnis ist immer nur der erste Buchstabe des Wertes, bei dem Wert "schlüssel1" also "s".
Du siehst doch an meinem kleinen Programmschnippsel, dass die Ausgabe in der Tat schlüssel1 und Bezeichner 1 ist.
Es ist nicht so wie du sagst, dass dort nur ein "s" ausgegeben wird.
Es kann nur sein, dass du etwas bei der Ausgabe falsch machst.
Gruß
Berthold
Drupal Video-Tutorials
Noch mal zum Verständnis
am 20.09.2018 - 19:06 Uhr
Dass ich was bei der Ausgabe falsch mache, davon gehe ich aus. Und dank Deiner Hilfe verstehe ich auch, was (zumindest glaube ich es):
Ich hatte angenommen, dass man mit der Funktion "field_view_value('node', $node, 'field_title_position', $field[0]['value']);" den Schlüssel bekommt. Aber das ist offenbar falsch, scheinbar hat ['value'] an der Stelle nichts zu suchen.
print render($fieldContent) ermöglicht es bei deinem Code, den Bezeichner auszugeben.
Um stattdessen den Schlüssel auszugeben, ist "print render($field[0]['value'])" der richtige Weg? Zumindest scheint es zu funktionieren.
Auf jeden Fall habe ich einiges dazugelernt - besten Dank noch mal für die Hilfe!
Um stattdessen den Schlüssel
am 20.09.2018 - 23:34 Uhr
Um stattdessen den Schlüssel auszugeben, ist "print render($field[0]['value'])" der richtige Weg?
Ja natürlich ist das der richtige Weg. Du kannst aber auch das render weglassen, wenn es sich nur um einen einfachen String handelt.
Gruß
Berthold
Drupal Video-Tutorials