回答:
Better Formatsモジュールの安定リリースがない場合は、カスタムモジュールを作成して、特定のコンテンツタイプまたはフィールドに対してこれを行うことができます。
モジュール(modulename.infoおよびmodulename.module、「modulename」フォルダー内)を作成します。例:default_text_format.module:
<?php
/**
* 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 default_text_format_element_info_alter(&$type) {
if (isset($type['text_format']['#process'])) {
foreach ($type['text_format']['#process'] as &$callback) {
if ($callback === 'filter_process_format') {
$callback = 'default_text_format_filter_process_format';
}
}
}
}
/**
* Callback for MODULENAME_element_info_alter().
*/
function default_text_format_filter_process_format($element) {
$element = filter_process_format($element);
// Change input format to "Filtered HTML" for body fields of article nodes
if ($element['#bundle'] == 'article' && $element['#field_name'] == 'body') {
$element['format']['format']['#default_value'] = 'filtered_html';
}
return $element;
}
そしてdefault_text_format.info:
name = Default text format
description = Adapt the module code to set a default format for a content type.
package = Custom modules
core = "7.x"
これらのファイルを、sites / all / modules / customの「default_text_format」フォルダーに配置します。
コンテンツタイプに応じてバンドル名を変更します。また、「body」を独自の「field_contenttype_fieldname」に置き換えることができます。(このコメントの後/ better_formatsコード。)
Better Formatsモジュールを使用します。
Betterフォーマットは、Drupalのコア入力フォーマットシステムに柔軟性を追加するモジュールです。コンテンツタイプごとにデフォルトの形式を設定することができます。
私はこの問題にぶつかっただけですが、ベータモジュール(Better Formats)を使用したくなかったため、機能を拡張して自動化する必要がありました。そのため、このような設定はハードコーディングされず、バックオフィスから設定されました。 。
だから私は次のことをしました:
フィールド編集設定パーツ
/**
* 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;
}
したがって、設定が保存されるため、機能のエクスポートや、設定の保存に使用する方法が可能になります。
これがこの問題に遭遇した他の人に役立つことを願っています!