[gelöst]Unterschiedliche Prefixes für Werte eines Multi-Value-Felds
Eingetragen von ThuleNB (379)
am 01.04.2016 - 12:22 Uhr in
am 01.04.2016 - 12:22 Uhr in
Hallo zusammen,
ich habe ein Feld, das zwei Werte haben kann. Für jeden Wert benötige ich ein eigenes Prefix. Dafür nutze ich ein kleines Modul:
<?php
/**
* Implements hook_form_alter().
*/
function your_module_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'article_node_form') {
$form['field_number'][LANGUAGE_NONE][0]['value']['#prefix'] = 'von';
$form['field_number'][LANGUAGE_NONE][1]['value']['#prefix'] = 'bis';
}
}
?>
Damit schaffe ich es, dass die unterschiedlichen Prefixes im Edit-Modus des Formulars richtig angezeigt werden. Leider werden die Prefixes nicht im "Display Mode" angezeigt, obwohl ich in den Appearance-Einstellungen "show prefixes and suffixes" geklickt habe.
Hat jemand eine Ahnung, wie ich das Prefixes auch bei der Anzeige des Inhalts erscheinen lassen kann?
VG
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
warum hier ein eigenes modul?
am 22.04.2016 - 21:22 Uhr
Ich weiß, dass das keine Antwort direkt auf deine Frage ist – empfehle in den meisten fällen, vorhandene Module zu nutzen vor eigenen Modulen.
Im add/edit Formular kannst du doch bei Ganzzahl- und dezimalzahlfeldern ohne extra modul prefix/suffix anzeigen lassen.
beim display wird prefix/suffix normalerweise auch ohne irgendwelhe Module angezeigt. Andere Formatierungen kannst du z.B. mit display suite ein 'code field' mit tokens erstellen, das die gewünschte Formatierung ausgibt oder eine view einhängen (gibt es versch. möglichkeiten).
Was nutzt du denn für einen Feldtyp?
beste Grüße
marco
Hallo Marco, danke für deine
am 28.04.2016 - 13:47 Uhr
Hallo Marco,
danke für deine Antwort. Ich hatte einen etwas speziellen Fall:
Im Standardfall kann man den Feldern Pre- und Suffixe geben. Ist mehr als ein Wert zulässig, dann haben alle Werte die gleichen Suffixe. Ich habe den oben beschriebenen Code so ergänzt:
/**
* Implements hook_preprocess_field().
*/
function mymodule_preprocess_field(&$vars) {
if ($vars['element']['#entity_type'] == 'node' &&
$vars['element']['#view_mode'] == 'full' &&
$vars['element']['#field_name'] == 'field_number') {
$vars['items'][0]['#markup'] = '<span>$</span>' . $vars['items'][0]['#markup'];
$vars['items'][1]['#markup'] = '<span>€</span>' . $vars['items'][1]['#markup'];
}
}
Sollte jemand ein ähnliches Problem haben.
Danke für die Hilfe!