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


11

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?


1
C'est étrange. J'ai la même configuration et cela fonctionne pour moi. S'agit-il d'une nouvelle installation ou d'une mise à niveau? Utilisez-vous un module personnalisé, faites-vous peut-être des remplacements ou autre chose?
Emil Orol

C'était comme un insecte ou comme si quelque chose n'était pas à sa place. Ce que je pensais, c'était que je pouvais retourner les balises br et p pour les sauts de ligne, mais ensuite ils étaient filtrés pour conserver le vrai `` texte brut ''. Qu'avez-vous vérifié et quel est l'ordre de vos filtres?
blue928

J'ai toujours ce problème avec le texte brut. J'ai également ajouté des balises <p> et <br> mais pas de chance. Suis-je en train de manquer quelque chose?
sokratis

Réponses:



11

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

Ma solution à court terme était 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.


3

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

2
cela ne fonctionnera pas si le format d'entrée n'est pas du texte filtré.
artfulrobot

3

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

white-space: pre-line;

2
En fait, white-space: pre-line;comme mentionné sur drupal.org/node/1095838#comment-6679314, c'est mieux.
Jeroen

Une telle solution élégante.
sephiith

Cela fonctionne, mais uniquement si vous souhaitez cibler chacun de vos champs manuellement, ou si tous vos champs de texte long ont besoin que cela soit fait. Si vous avez mélangé des champs "texte brut" avec d'autres types de champs, et si vous l'utilisez avec mpdf pour créer un fichier PDF, alors seule la solution de Druvision fonctionne.
Richard

1

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.

Paramètres de format du module Formateur de texte avancé pour autoriser uniquement les sauts de ligne


0

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

Je ne pense pas que ce soit un bug, mais le résultat d'une confusion (non facilitée par la façon dont 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 l'utilisation de l'option "texte brut" ici lors de la création de votre contenu rendra la ligne casse et liens hors 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 façon dont vous configurez le 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 contient du "texte filtré" choisi. C'est paradoxal et ennuyeux, mais, Drupal ...;)


0

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".


Ce qui a résolu cela pour moi a été de changer le champ dans le type de contenu en "texte filtré - sélection par l'utilisateur", mais je me suis alors assuré que l'utilisateur n'avait accès qu'à l'éditeur de texte brut. D'une manière ou d'une autre, cela a fonctionné. Si l'utilisateur avait accès à d'autres éditeurs de texte, ce ne serait pas si agréable.
Christia

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.