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?


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.


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


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 ');


Quel est le problème avec cette requête? Je pense que c'est une solution de contournement ...
— shasi kanth
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.