ノードを追加|編集するときに、テキスト領域の下の入力フォーマットオプションとヘルプテキストを非表示にする方法
Drupal 7の場合、 Simplify モジュールを使用できます。これにより、テキスト形式オプションtextareaだけでなく、ノードフォームの他の要素も非表示にできます。
これを行うには、カスタムモジュールでhook_form_alterを使用できます。
たとえば、drupal 7の場合:
// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
// We want this on a specific node type
if ($form_id == 'NODE_TYPE_node_form') {
$form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
}
}
// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
// We want this on a specific field
$form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
return $form;
}
drupal 6にはモジュールがあります Better Formats これはまさにあなたが望むことを行います、7開発バージョンがありますが、開発が進んでいるという警告が付いています。あなたのサイトがまだ開発中であるなら、それを試してみる価値があるかもしれません。
実際には、フォーマットフォームアイテムを強制終了できます。
function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
$form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}
function MY_THEME_configure_comment_form(&$form) {
unset($form[LANGUAGE_NONE][0]['format']);
return $form;
}
私は最良の解決策は、テキスト形式の選択要素へのアクセスを許可しないことだと思います。完全に設定を解除すると、WYSIWYGエディターが消えて、不要な副作用が発生します。だから私は次のコードを提案します。
function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
$form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}
function MY_MODULE_hide_text_format(&$form) {
$form[LANGUAGE_NONE][0]['format']['#access'] = false;
return $form;
}
最も簡単な方法であるCSSを使用します。
#body-add-more-wrapper #edit-body-und-0-format {display: none;}
幸運を。
FOR Drupal 7
function MODULENAME_element_info_alter(&$type) {
if (isset($type['text_format']['#process'])) {
foreach ($type['text_format']['#process'] as &$callback) {
if ($callback === 'filter_process_format') {
$callback = 'MODULENAME_filter_process_format';
}
}
}
}
function MODULENAME_filter_process_format($element) {
$element = filter_process_format($element);
// Change input format to "Filtered HTML" for body fields of NODETYPE_NAME
if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {
$element['format']['format']['#default_value'] = 'filtered_html';
$element['format']['format']['#format'] = 'filtered_html';
$element['format']['format']['#value'] = 'filtered_html';
$element['#format'] = 'filtered_html';
}
return $element;
}
これは私がしました:
CKeditorを使用できないように、匿名および許可されたユーザーの[アクセス許可]から[フィルターされたHTMLテキスト形式を使用する]および[テキスト形式とフィルターを管理する]をオフにします。
もちろん、「display:none;」でCSSから無効にできます。特定のdivクラス(これは.filter-wrapperです)で、上を指しているすべての領域を非表示にしますが、この場合、その領域はスーパーユーザーを含むすべてのユーザーに対して非表示になります。
入力形式オプションを非表示にするもう1つの簡単な方法は、オプションを非表示にするユーザープロファイルから他のすべての入力形式を削除することです。このためには、admin-> configuration-> inputフォーマットに行き、デフォルトで与えたいものを除いて、他のすべての入力フォーマットからすべてのユーザー役割を削除します。
インストール CSSインジェクター モジュール(現在、Drupal 8)の作業用開発バージョンのみが存在します)。
次に、CSSインジェクターの管理ページ(/ admin/config/development/css-injector)に移動します。次のコード(またはフォーマット領域テキストのクラスに適用されるコード)を使用して、新しいCSSルールを作成します。
.filter-guidelines {
display: none;
}
Sevenテーマ(または使用中の管理テーマ)に適用することを選択します。保存してお楽しみください!
フォーマットを非表示にしたいが利用できるようにしたい場合は、「 簡易フォーマット モジュールを試してください: https://www.drupal.org/project/simplified_formats
フォーマットの選択ドロップダウンの横にある小さな疑問符アイコンでフォーマットの詳細を非表示にします。多くのテキスト形式のフィルターでは、その使用方法を指示する指示を完全に非表示にするのは実際には意味がありません。他のフィルターはより自動です。エンドユーザーに表示するものと表示しないものを選択できるモジュールが必要だと思います。
「ユーザープロファイルから他のすべての入力形式を削除する」とcssの方法の両方を使用しています。
「プレーンテキスト」の入力形式は削除できません。また、「プレーンテキスト」入力形式を使用すると、RTEが表示されません。
CSSオプションを使用します。
形式を非表示 モジュールを使用することもできます。
形式を非表示にすると、「テキスト形式」または「入力形式」のドロップダウンを折りたたんで、UIをクリーンアップできます。
Drupal 7の場合:
1)モジュール内からhook_theme_registry_alter(&$theme_registry)
を使用して、テーマレジストリを変更します。テーマプロセッサの定義。
2)次に、3つのテーマ関数theme_filter_tips
、theme_filter_tips_more_info
、およびtheme_filter_guidelines
を変更し、強制的に何も返さないようにします。次のように:
これがターゲット関数です。上記のテーマ関数はすべて、それにリダイレクトされます。
function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
return '';
}
/**
* Implements hook_theme_registry_alter
*/
function mymodule_theme_registry_alter(&$theme_registry) {
$theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
$theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
$theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}
キャッシュをクリアすると、Drupalは、選択したモジュールのパス(drupal_get_path
を参照)でこれらのフィルター定義を探し、フィルターごとに何も返しません。したがって、これ以上テキストはありません。フォーマットの説明。
simplify moduleを試してください。
Simplifyを使用すると、特定のフィールドをユーザーインターフェイスから非表示にできます。これにより、フォームが整理され、コンテンツエディターによりユーザーフレンドリーなエクスペリエンスが提供されます。
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
// We want this on a specific node type
if ($form_id == 'NODE_TYPE_node_form') {
$form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
}
}
// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
// We want to hide input formats and we can do it like following
$form['body']['und']['0']['format']= '<div style="display:none;">';
$form['body']['und']['0']['format']= '</div>';
return $form;
}
ほとんどの場合、これらの小さな変更でうまくいきました。
$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Drupal 8.の場合。これにより、2つのフィールドのフォーマット領域が削除されます。
/**
* Implements hook_form_FORM_ID_alter().
*/
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}
function CUSTOM_MODULE_eform_application_after_build ($form) {
unset($form['field_experience']['widget'][0]['format']);
unset($form['field_miscellaneous']['widget'][0]['format']);
return ($form);
}