質問: コンテンツタイプごとにデフォルトの入力テキスト形式をどのように設定しますか? コンテンツタイプごと、コンテンツフィールドごとに異なるデフォルトの入力テキスト形式を設定できるようにしたいと思います。たとえば、フォーマットタイプの選択肢は "プレーンテキスト"と "リッチテキストエディター"の場合があり、場合によってはフォーマットのデフォルトを "リッチテキストエディター) text editor "ですが、ドロップダウンの選択肢として" plain text "を保持します。 「リッチテキストエディター」を最初の選択肢にするためにテキスト形式の順序を変更できることは知っていますが、この方法ではすべてを変更するので、それは私がやりたいことではありません。
回答: 私はこの問題にぶつかっただけですが、ベータモジュール(better formats)を使用したくなかったため、機能を拡張して自動化する必要がありました。そのため、このような設定はハードコーディングされず、バックオフィスから設定されました。 。だから私は次のことをしました: デフォルトのテキスト形式が必要なフィールドの[設定の編集]フォームに設定を追加しました 上記のコードを使用し、フィールドの設定に保存されているデフォルトのテキスト形式を設定するように少し修正しました featuresを使用してコンテンツタイプをエクスポートし、設定をコードに保存しました フィールド編集設定部分/** * 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, ); } } したがって、コードのこの部分は十分に明らかであるはずです...フィールドセットを追加し、選択リストを追加します。選択リストは、サイトに存在するwysiwygプロファイルによって入力されます。これらのwysiwygプロファイルはテキスト形式に関連付けられているため、誰かがテキスト形式/フィルターを選択すると、実際に構成されているプロファイルが選択されます。ここで、2番目の部分は、別のユーザーによって上記で提供されたものと同じコードであり、better formatsモジュールから取得されます。/** * 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; } したがって、設定が保存されるため、機能のエクスポートや、設定の保存に使用する方法が可能になります。これがこの問題に遭遇した他の人に役立つことを願っています!