Saya sendiri menabrak masalah ini, tapi saya tidak ingin menggunakan modul beta (Format Lebih Baik), dan saya harus memperluas fungsionalitas dan mengotomatiskannya, sehingga pengaturan tersebut tidak hardcoded, tetapi diatur dari back-office .
Jadi saya melakukan yang berikut:
- Saya menambahkan pengaturan pada formulir Edit Pengaturan bidang yang saya butuhkan untuk format teks standar
- Saya menggunakan kode yang disediakan di atas dan memodifikasinya sedikit sehingga mendapat menetapkan format teks default seperti yang disimpan dalam pengaturan bidang
- Saya menggunakan Fitur untuk mengekspor tipe konten sehingga pengaturan saya tersimpan dalam kode
Bagian Edit Pengaturan bagian
/**
* 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,
);
}
}
Jadi bagian dari kode ini harus cukup jelas ... ia menambahkan fieldset dan menambahkan daftar pilih di dalamnya, yang diisi oleh profil WYSIWYG yang ada di situs Anda. Profil WYSIWYG tersebut terkait dengan format teks, jadi ketika seseorang memilih format teks / filter, itu benar-benar memilih profil yang dikonfigurasi.
Sekarang bagian ke-2 adalah kode yang sama seperti yang disediakan di atas oleh pengguna lain, dan yang diambil dari modul Better Format.
/**
* 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;
}
Jadi pengaturan disimpan, oleh karena itu Fitur Ekspor mungkin atau metode apa pun yang Anda gunakan untuk menyimpan pengaturan Anda.
Saya harap ini membantu orang lain yang mengalami masalah ini!