[gelöst] Feld-Anzeige-Optionen aus eigenen Modulen heraus ermitteln?
am 04.11.2013 - 18:25 Uhr in
Hallo,
ich such nun schon seit Stunden nach einer Möglichkeit aus einem meiner eigenen Module heraus an die optionalen Parameter für die Anzeige eines Feldes herann zu kommen. Konkret möchte ich für ein Feld (bzw. verschiedene Felder) des Types 'Langer Text und Zusammenfassung' in unterschiedlichen Inhaltstypen, individuelle Längen für den Teaser angeben. So soll das Feld im Inhaltstype 'article' den Teaser z.B. auf 400 Zeichen trimmen und im Inhaltstyp 'type2' auf 460 Zeichen.
Die UI Lässt diese Eingaben zu, nur leider kann ich die eingegeben Werte nicht aus meinem Modul heraus ermitteln 8~/
Zur Veranschaulichung, gemeint ist der hier markierte Wert:
Alle Versuche nach einer Lösung zu Googlen haben mich bislang ebenso wenig weiter gebracht, wie das Durchsuchen des Core-Source (field, field/modules, field/modules/text).
Vieleicht suche ich auch nur an der falschen Ecke und mir kann hier jemand einen passenderen Einstieg geben?
Danke schon mal :)
- Anmelden oder Registrieren um Kommentare zu schreiben
Moin,hook_field_display_ENTI
am 05.11.2013 - 00:39 Uhr
Moin,
hook_field_display_ENTITY_TYPE_alter
oderhook_field_display_alter
sind Deine Freunde ;)Beispiel:
<?php
function DEINMODULNAME_field_display_alter(&$display, $context) {
if (($context['instance']['bundle'] == 'article') && ($display['settings']['trim_length'] > 400)) {
$display['settings']['trim_length'] = 400;
}
else {
//mach was anderes
}
}
?>
Danke für Deine Antwort
am 05.11.2013 - 11:57 Uhr
Hallöchen,
danke für Deine Antwort.
Es war noch nicht ganz das wonach ich gesucht habe, hat mich aber dank debug_backtrace() auf die richtige Spur gebracht :o)
Gesucht hab ich den (ansich simplen Aufruf):
<?php
$fieldInfo = field_info_instances( 'node', 'article' );
// Nun steht der gesuchte Wert in:
$customTrimLen = $fieldInfo['field_nameXYZ']['display']['default']['settings']['trim_length'];
?>
ok, Du willst den Wert gar
am 05.11.2013 - 12:36 Uhr
ok, Du willst den Wert gar nicht direkt bearbeiten. Aber nun ist ja alles gut.