[gelöst] nach load_node($nid) die "view" Werte zum value eines cck feldes
Eingetragen von nomoresleep (27)
am 12.01.2011 - 15:50 Uhr in
am 12.01.2011 - 15:50 Uhr in
Hallo Community,
im Backend habe ich ein cck Feld "Status" angelegt (Radio Button). Mit einer Werteliste:
1|Aktiv
2|Inaktiv
3|Krank
...
Ich speichere nun eine Node und fülle das Feld Feld "Status", also den Radio Buttons z.B. "Aktiv" anklicken, aus.
In einer neuen Node, die auf die eben angelegte per Node Referenz ULR referenziert, will ich nun deren Status ausgeben.
Dazu lade ich per load_node($nid_mutter_node) diese, Im Feld Status ist nun jedoch nur der "value" hinterlegt also für Aktiv = 1.
Wie kann ich zu diesem value nun den "Text" laden?
Danke für eure Hilfe :)
Phil
- Anmelden oder Registrieren um Kommentare zu schreiben
content_fields
am 12.01.2011 - 20:30 Uhr
Hallo.
Wie kann ich zu diesem value nun den "Text" laden?
Das ist nicht ganz so einfach.
Dazu musst Du Dir zuerst die Felddefinition mittels content_fields() laden und kannst dann auf die Einstellungen des Feldes zugreifen.
Lass Dir mal das Ergebnis von content_fields() mittels [do:devel Devel] ausgeben, dann siehst Du, was da so alles zurückkommt.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, $tmp =
am 12.01.2011 - 21:06 Uhr
Hallo Stefan,
$tmp = content_fields('field_casting_status', NULL);
print_r($tmp);
liefert mir:
Array
(
[field_name] => field_casting_status
[type_name] => c_001_a
[display_settings] => Array
(
[weight] => 43
[parent] =>
[label] => Array
(
[format] => above
)
[teaser] => Array
(
[format] => default
[exclude] => 0
)
[full] => Array
(
[format] => default
[exclude] => 0
)
[4] => Array
(
[format] => default
[exclude] => 0
)
[token] => Array
(
[format] => default
[exclude] => 0
)
)
[widget_active] => 1
[type] => text
[required] => 1
[multiple] => 0
[db_storage] => 1
[module] => text
[active] => 1
[locked] => 0
[columns] => Array
(
[value] => Array
(
[type] => text
[size] => big
[not null] =>
[sortable] => 1
[views] => 1
)
)
[text_processing] => 0
[max_length] =>
[allowed_values] => 1|Bewerbungsphase
2|Bewerbungspause
3|Bewerbungsstopp
4|Go and See Phase
5|Casting mit Erfolg abgeschlossen
6|Casting ohne Erfolg abgeschlossen
[allowed_values_php] =>
[widget] => Array
(
[default_value] => Array
(
[0] => Array
(
[value] =>
)
)
[default_value_php] =>
[label] => Status
[weight] => 43
[description] =>
[type] => optionwidgets_select
[module] => optionwidgets
)
)
Dann muss ich mir wohl [allowed_values] so da rausziehen und dann mit php am "|" Splitten... irgendwie müsste es auch ne Drupal funktiongeben um direkt auf diese Sachen zuzugreifen, so etwas braucht man ja öffters oder?
explode
am 12.01.2011 - 23:17 Uhr
Hallo.
[allowed_values] => 1|Bewerbungsphase
2|Bewerbungspause
3|Bewerbungsstopp
4|Go and See Phase
5|Casting mit Erfolg abgeschlossen
6|Casting ohne Erfolg abgeschlossen
Dann muss ich mir wohl [allowed_values] so da rausziehen
Genau.
Eigentlich ist es besser, die Werteliste mittels PHP zu generieren, damit die Labels auch übersetzbar sind (ist hier aber erstmal unerheblich).
Probier mal die Funktion
content_allowed_values($field)
. Die gibt Dir (ein wenig verschachtelt) die möglichen Werte als Array.<?php
$field = content_fields('field_casting_status', 'c_001_a');
$allowed_values = content_allowed_values($field);
print_r($allowed_values);
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
works
am 13.01.2011 - 09:57 Uhr
Hallo,
<?php
$field = content_fields('field_casting_status', 'c_001_a');
$allowed_values = content_allowed_values($field);
print_r($allowed_values);
?>
Array ( [1] => Bewerbungsphase [2] => Bewerbungspause [3] => Bewerbungsstopp [4] => Go and See Phase [5] => Casting mit Erfolg abgeschlossen [6] => Casting ohne Erfolg abgeschlossen )
So ist es perfekt, direkter Zugriff über dieses nette Array und ohne gescripte.
Vielen Dank für deine super Tipps Stefan.
PHP
am 13.01.2011 - 10:08 Uhr
Super.
Ich habe gerade mal ausprobiert, wie sich der Code verhält, wenn man die Werte mittels PHP erzeugt. In "Allowed values PHP" habe ich dazu Folgendes eingetragen:
<?php
return array(
t('First'),
t('Second'),
t('Third'),
);
?>
Ergebnis:
Array ( [0] => First [1] => Second [2] => Third )
So kann man die Optionen gleich noch übersetzbar machen und dann trotzdem mit weiterarbeiten.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.