如何以编程方式将页面内容类型上的正文文本格式更改为完整HTML?


8

我有一个自定义安装配置文件,我必须以编程方式将页面内容类型上的正文文本格式更改为完整HTML。但是,我没有找到解决方法。

我该怎么做?


您想为所有内容类型更改它吗?
Aboodred1

@ Aboodred1仅用于页面(标准类型)
Codium

您已经创建了完整的HTML格式?
Aboodred1

@ Aboodred1是的,我做了
Codium

Answers:


6

您可以使用来实现hook_element_info_alter,这是一个代码段。

<?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 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';
      }
    }
  }
}

/**
 * Callback for MODULENAME_element_info_alter().
 */
function MODULENAME_filter_process_format($element) {
  $element = filter_process_format($element);
  // Change the default text format of the 'field_company_spotlight' field to
  // 'Media HTML'. 
  if ($element['#bundle'] == 'company' && $element['#field_name'] == 'field_company_spotlight') {
    $element['format']['format']['#default_value'] = 'media_html';
  }
  return $element;
}
?>

作为后建议你可以试试

$form['field_name'][LANGUAGE_NONE][0]['#format'] = 'full_html';
$form['field_name'][LANGUAGE_NONE][0]['#format'] = 'filtered_html';

在你hook_form_alter或在hook_FORM_ID_alter

也有更好的格式模块

更好的格式是为Drupal的核心输入格式系统增加更多灵活性的模块。


2

Nikhil M的第二个答案是最好的-

$form['field_name'][LANGUAGE_NONE][0]['#format'] = 'full_html';  

无需hook_element_info


这属于Nikhil的回答。
timofey.com 2014年

-1

您只需要一行代码

$ result = db_query('UPDATE field_data_body SET body_format ='full_html'WHERE bundle='page');


此查询有什么问题?我认为这是一种解决方法...
shasi kanth 18-3-7
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.