Comment modifier par programme le format de texte du corps du type de contenu de la page en HTML complet?

8

J'ai un profil d'installation personnalisé et je dois modifier par programme le format de texte du corps du type de contenu de la page en HTML complet. Cependant, je n'ai pas réussi à trouver comment le faire.

Comment puis-je le faire?

Codium
la source
vous souhaitez le modifier pour tous les types de contenu?
Aboodred1
@ Aboodred1 uniquement pour la page (type standard)
Codium
vous avez déjà créé le format Full HTML?
Aboodred1
@ Aboodred1 oui je l'ai fait
Codium

Réponses:

6

Vous pouvez le faire avec hook_element_info_alter, voici un extrait.

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

Comme CE après vous suggère pouvez essayer

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

dans votre hook_form_alterou danshook_FORM_ID_alter

Il existe également un module de meilleurs formats

De meilleurs formats est un module pour ajouter plus de flexibilité au système de format d'entrée principal de Drupal.

niksmac
la source
2

La deuxième réponse de Nikhil M est la meilleure -

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

pas besoin de hook_element_info

Druvision
la source
Cela fait partie du commentaire de la réponse de Nikhil.
timofey.com
-1

vous n'avez besoin que d'une seule ligne de code

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

Ramsesiden
la source
Quel est le problème avec cette requête? Je pense que c'est une solution de contournement ...
shasi kanth