web-dev-qa-db-fra.com

Comment obtenir des sauts de ligne lorsque j'utilise le format Texte brut?

Je pense que cela devrait être vraiment simple, mais cela me rend fou.

J'ai "texte brut" sélectionné pour tous mes éléments de corps. Je ne veux pas que quiconque puisse mettre du html lors du remplissage des formulaires.

Cependant, je veux que les sauts de ligne soient préservés. Sur la page de configuration de plain, il y a en effet une `` cochez cette case pour transformer les sauts de ligne en br et p, mais peu importe ce que je vérifie ou comment je réorganise le poids des filtres, je ne parviens pas à conserver les sauts.

Quelle est la configuration correcte pour que cela fonctionne afin que je puisse conserver les retours dans les textes?

11
blue928

Ressemble à un bogue dans Drupal core http://drupal.org/node/1019042

8
giorgio79

Cela ressemble à un Drupal 7.x bug. Changer l'ordre des filtres ne fonctionne pas dans mon cas.

Ma solution à court terme a été de jeter ceci dans le template.php de mon thème ( ref ):

<?php
/**
 * Implements template_preprocess_field().
 */
function THEMENAME_preprocess_field(&$vars, $hook) {
  // Add line breaks to plain text textareas.
  if (
    // Make sure this is a text_long field type.
    $vars['element']['#field_type'] == 'text_long'
    // Check that the field's format is set to null, which equates to plain_text.
    && $vars['element']['#items'][0]['format'] == null
  ) {
    $vars['items'][0]['#markup'] = nl2br($vars['items'][0]['#markup']);
  }
}
?>

Pour les champs dans les vues, il est nécessaire de définir cette option séparément dans la section "Résultats de la réécriture" des paramètres de champ.

11
Druvision

En fait, cela devrait fonctionner avec ce paramètre d'ordre de filtres dans "admin/config/content/formats/plain_text"

  1. Afficher tout HTML en texte brut
  2. Convertir des URL en liens
  3. Convertir les sauts de ligne en HTML (c'est-à-dire <br> et <p>)

Essayez les filtres ci-dessous en supprimant "Afficher tout HTML en texte brut":

  1. Limiter les balises HTML autorisées (définissez uniquement <a> et <br> pour la liste des balises HTML autorisées)
  2. Convertir des URL en liens
  3. Convertir les sauts de ligne en HTML (c'est-à-dire <br> et <p>)
3
Sithu

La solution est simple. Affichez simplement le contenu en texte brut avec les CSS suivants.

white-space: pre-line;
3
Kevin Siji

J'ai utilisé le module Advanced Text Formatter pour résoudre rapidement ce problème sans code.

  1. Installez et activez le module.
  2. Cliquez sur "Gérer l'affichage" de votre type de contenu.
  3. Changez le 'Texte brut' du format de votre champ en 'Texte avancé'
  4. Cliquez sur l'engrenage à droite (ou sur un lien pour formater les paramètres)

    1. Réglez la longueur de coupe à 0
    2. Définissez le filtre sur "Limiter les balises HTML autorisées"
    3. Supprimer tous les éléments des "balises HTML autorisées"
    4. Cochez "Convertit les sauts de ligne en HTML"
    5. Cliquez sur "Mettre à jour" et enregistrez votre affichage de champ.

Format Settings of Advanced Text Formatter module to allow only line breaks

1
StackAttack

Je ne pense pas que ce soit le filtrage d'entrée: c'est probablement le paramètre d'affichage du champ. S'il est défini sur "Texte brut", remplacez-le par "Par défaut". Sinon, les balises générées pour les sauts de ligne en entrée sont supprimées avant l'affichage du champ.

Pour plus de clarté, cela se trouve dans le panneau "Gérer l'affichage" pour le type de contenu en question. Dans Administration "Structure" Type de contenu "MyContentType" Gérer l'affichage. Sous la colonne Format du champ.

0
Alfred Armstrong

Je ne pense pas que ce soit un bug mais le résultat d'une confusion (pas aidé par la manière Drupal est configuré) entre un champ avec un format d'entrée "texte filtré" réglé sur "texte brut" et un champ "texte brut". Si, lorsque vous créez votre champ, vous sélectionnez "texte filtré", l'utilisateur aura la possibilité de sélectionner parmi "texte brut" et tout autre format d'entrée disponible, et en utilisant l'option "texte brut" ici lors de la création de votre contenu, les sauts de ligne et les liens sortiront de la boîte. Si toutefois, lors de la création du champ, vous sélectionnez "texte brut", aucune balise ne sera disponible/rendue du tout, quelle que soit la configuration du format d'entrée "texte brut" . Donc, avant de paniquer que le "texte brut" ne fonctionne pas, vérifiez d'abord dans votre configuration de type de contenu que le champ a "texte filtré" sélectionné. C'est paradoxal et ennuyeux, mais, Drupal ...;)

0
Thoughtcat

Le "format de texte brut" comme la méthode de "traitement de texte" ne prend en charge aucune balise HTML, les sauts de ligne ne fonctionnent donc pas normalement.

Créez un "format de texte" pour "Texte filtré (l'utilisateur sélectionne le format de texte)" et définissez le "Format de texte" sur "Texte brut".

0
user9616