Как программно изменить формат основного текста в типе содержимого страницы на полный HTML?

8

У меня есть пользовательский профиль установки, и я должен программно изменить формат основного текста в типе содержимого страницы на полный HTML. Однако мне не удалось найти, как это сделать.

Как мне это сделать?

Codium
источник
Вы хотите изменить его для всех типов контента?
Aboodred1
@ Aboodred1 только для страницы (стандартный тип)
Codium
Вы уже создали формат Full HTML?
Aboodred1
@ Aboodred1 да, я сделал
Codium

Ответы:

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.

niksmac
источник
2

Второй ответ Nikhil M лучше всего -

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

нет необходимости в hook_element_info

Druvision
источник
Это относится к комментарию ответа Нихила.
timofey.com
-1

вам нужна только одна строка кода

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

Ramsesiden
источник
Что не так с этим запросом? Я думаю, что это обходной путь ...
Шаси Кант