Answers:
对于Drupal 7,可以使用“ 简化”模块。它允许您隐藏“文本格式”选项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 dev版本,但它带有警告,表明它正在大量开发中。如果您的站点仍在开发中,那么值得尝试一下。
您实际上可以杀死格式表单项。
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;
}
CUSTOM
用作您的自定义主题名称。你应该从来没有硬编码的语言,如果你需要积极运用语言global $language;
来抓住它。
LANGUAGE_NONE
是一个带有值的常量und
。请勿使用und
。
我认为最好的解决方案是禁止访问文本格式选择元素。如果您完全取消设置,作为消失的所见即所得编辑器,您将面临不必要的副作用。因此,我提出以下代码。
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;}
祝好运。
对于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;
}
隐藏输入格式选项的另一种简单方法是从要隐藏该选项的用户配置文件中删除所有其他输入格式。为此,转到admin-> configuration-> input格式,然后从所有其他输入格式中删除所有用户角色,除了您要默认提供的一种。
我这样做:
匿名和授权用户的人员>权限中未选中“使用过滤的HTML文本格式”和“管理文本格式和过滤器”,这样他们就不能使用CKeditor。
当然,您可以通过“ display:none;”从CSS禁用它。对于特定的div类(它是.filter-wrapper),并隐藏您已指向上方的所有区域,但在这种情况下,该区域对所有人(包括超级用户)都是隐藏的。
安装CSS Injector模块(当前只有适用于Drupal 8的开发版本)。
然后转到CSS Injector的管理页面(/ admin / config / development / css-injector)。使用以下代码(或适用于格式区域文本类的任何代码)创建新的CSS规则:
.filter-guidelines {
display: none;
}
选择将其应用于七个主题(或正在使用的任何管理主题)。保存并享受!
您无法删除“纯文本”输入格式。当您使用“纯文本”输入格式时,RTE不显示。
我将使用CSS选项。
如果要隐藏格式但仍保持可用状态,请尝试“ 简化格式 ”模块:https : //www.drupal.org/project/simplified_formats
它将格式详细信息隐藏在格式选择下拉菜单旁边的小问号图标中。对于许多文本格式的过滤器,完全隐藏告诉他们如何使用它们的说明实际上并没有好处。其他过滤器更自动。我认为我们需要一个模块,该模块允许我们选择显示给最终用户的内容,而不显示给最终用户的内容。
对于Drupal8。这将删除两个字段的格式区域。
/**
* 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);
}
对于Drupal 7,您可以:
1)使用 hook_theme_registry_alter(&$theme_registry)
从模块内部以更改主题注册表,如 主题处理器定义。
2)然后,改变三大主题功能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
),并且每个过滤器均不返回任何内容。因此,不再有文本格式描述。
/ 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']
hook_form_alter
但是我不确定细节,因此我不会将其作为答案...