Ich bin selbst auf dieses Problem gestoßen, wollte aber kein Beta-Modul (Better Formats) verwenden, und ich musste die Funktionalität erweitern und automatisieren, damit solche Einstellungen nicht fest codiert, sondern vom Backoffice aus festgelegt werden .
Also habe ich folgendes gemacht:
- Ich habe im Formular "Einstellungen bearbeiten" des Felds eine Einstellung hinzugefügt, für die ich das Standardtextformat benötige
- Ich habe den oben angegebenen Code verwendet und ihn leicht geändert, damit das Standardtextformat festgelegt wird, das in den Einstellungen des Felds gespeichert ist
- Ich habe Features verwendet, um den Inhaltstyp zu exportieren, damit meine Einstellungen im Code erhalten bleiben
Feld Einstellungen bearbeiten
/**
* Implements hook_form_FIELD_UI_FIELD_EDIT_FORM_alter().
*/
function MY_MODULE_form_field_ui_field_edit_form_alter(&$form, &$form_state) {
if ($form['#field']['type'] == 'text_long') {
$instance = $form['#instance'];
// Fieldset for Default Formats settings.
$filters = filter_formats();
$options = array('_none' => t('None'));
foreach ($filters as $key => $filter) {
$options[$key] = $filter->name;
}
$form['instance']['settings']['default_filter'] = array(
'#type' => 'fieldset',
'#title' => t('Default Filter Settings'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
);
$form['instance']['settings']['default_filter']['wysiwyg_profile'] = array(
'#type' => 'select',
'#title' => t('Select a default format for this field'),
'#description' => t('The selected text format will influence the button and plugin configuration of WYSIWYG.'),
'#default_value' => isset($instance['settings']['default_filter']['wysiwyg_profile'])
? $instance['settings']['default_filter']['wysiwyg_profile'] : '_none',
'#options' => $options,
);
}
}
Dieser Teil des Codes sollte also offensichtlich genug sein ... er fügt ein Feldset und eine Auswahlliste hinzu, die mit den auf Ihrer Site vorhandenen WYSIWYG-Profilen gefüllt wird. Diese WYSIWYG-Profile sind an die Textformate gebunden. Wenn also jemand ein Textformat / einen Filter auswählt, wählt er tatsächlich das konfigurierte Profil aus.
Jetzt ist der zweite Teil derselbe Code, den ein anderer Benutzer oben angegeben hat und der aus dem Modul "Bessere Formate" stammt.
/**
* Implements hook_element_info_alter().
*
* Sets the text format processor to a custom callback function.
* This code is taken from the Better Formats module.
*/
function MY_MODULE_element_info_alter(&$type) {
if (isset($type['text_format']['#process'])) {
foreach ($type['text_format']['#process'] as &$callback) {
if ($callback === 'filter_process_format') {
$callback = 'MY_MODULE_filter_process_format';
}
}
}
}
/**
* Callback for MY_MODULE_element_info_alter().
*
* Alters the default text format of fields.
*/
function MY_MODULE_filter_process_format($element) {
$element = filter_process_format($element);
// Configuration array that specifies the fields that need to be altered.
$field_info = field_info_instance($element['#entity_type'],
$element['#field_name'],
$element['#bundle']);
// Change input format to configured value.
if (isset($field_info['settings']['default_filter']['wysiwyg_profile']) && $field_info['settings']['default_filter']['wysiwyg_profile'] != '_none') {
$element['format']['format']['#default_value'] = $field_info['settings']['default_filter']['wysiwyg_profile'];
}
return $element;
}
Die Einstellungen werden also gespeichert, daher ist der Export von Funktionen möglich oder eine andere Methode, mit der Sie Ihre Einstellungen speichern.
Ich hoffe, das hilft allen anderen, die auf dieses Problem gestoßen sind!