Come si ottengono le interruzioni di riga quando si utilizza il formato di testo normale?


11

Sento che questo dovrebbe essere davvero semplice, ma mi sta facendo impazzire.

Ho 'testo in chiaro' selezionato per tutti i miei elementi del corpo. Non voglio che nessuno sia in grado di inserire alcun codice HTML durante la compilazione dei moduli.

Tuttavia, desidero preservare le interruzioni di riga. Nella pagina di configurazione di plain c'è davvero un 'selezionare questa casella per trasformare le interruzioni di linea in br e p, ma non importa cosa controllo o come riorganizzo il peso dei filtri, non riesco a farlo per preservare le interruzioni.

Qual è la configurazione corretta per farlo funzionare in modo da poter preservare i ritorni nei testi?


1
È bizzarro. Ho la stessa configurazione e funziona per me. È un'installazione pulita o un aggiornamento? Stai usando un modulo personalizzato, magari facendo delle sovrascritture o qualcos'altro?
Emil Orol,

Sembrava un bug o come se qualcosa fosse un po 'fuori posto. Quello che immaginavo stesse accadendo è che potevo restituire i tag br e p per le interruzioni di riga, ma poi venivano filtrati per preservare il vero "testo normale". Che cosa hai controllato e qual è l'ordine dei tuoi filtri?
blue928

Ho ancora quel problema con il testo normale. Ho anche aggiunto i tag <p> e <br> ma senza fortuna. Mi manca qualcosa ??
sokratis

Risposte:



11

Sembra un bug di Drupal 7.x. La modifica dell'ordine dei filtri non funziona nel mio caso.

La mia soluzione a breve termine è stata quella di inserire questo nel template.php del mio tema ( 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']);
  }
}
?>

Per i campi nelle viste, è necessario impostare questa opzione separatamente nella sezione "Riscrivi risultati" delle impostazioni del campo.


3

In realtà, dovrebbe funzionare con questa impostazione dell'ordine dei filtri in "admin / config / content / format / plain_text"

  1. Visualizza qualsiasi HTML come testo normale
  2. Converti gli URL in collegamenti
  3. Converti le interruzioni di riga in HTML (ovvero <br> e <p>)

Prova i filtri seguenti rimuovendo "Visualizza qualsiasi HTML come testo normale":

  1. Limita tag HTML consentiti (imposta solo <a> e <br> per l'elenco di tag HTML consentiti)
  2. Converti gli URL in collegamenti
  3. Converti le interruzioni di riga in HTML (ovvero <br> e <p>)

2
questo non funzionerà se il formato di input non è Testo filtrato.
artfulrobot,

3

La soluzione è semplice Basta visualizzare il contenuto in testo semplice con i seguenti CSS.

white-space: pre-line;

2
In realtà, white-space: pre-line;come menzionato su drupal.org/node/1095838#comment-6679314 è meglio.
Jeroen,

Una soluzione così elegante.
Sephiith,

Funziona, ma solo se vuoi indirizzare manualmente ciascuno dei tuoi campi, o se tutti i tuoi campi di testo lunghi richiedono che ciò avvenga. Se hai mischiato campi di "testo semplice" con altri tipi di campi e se lo stai usando con mpdf per creare un file PDF, funziona solo la soluzione di Druvision.
Richard,

1

Ho usato il modulo Advanced Text Formatter per risolvere rapidamente questo problema senza codice.

  1. Installa e abilita il modulo.
  2. Fai clic su "Gestisci display" del tipo di contenuto.
  3. Modifica il "Testo normale" del formato del campo in "Testo avanzato"
  4. Fai clic sull'ingranaggio a destra (o su un link per formattare le impostazioni)

    1. Impostare la lunghezza del taglio su 0
    2. Imposta il filtro su "Limita tag HTML consentiti"
    3. Rimuovi tutti gli elementi da "Tag HTML consentiti"
    4. Seleziona "Converti le interruzioni di riga in HTML"
    5. Fai clic su "Aggiorna" e salva la visualizzazione del campo.

Formatta le impostazioni del modulo Advanced Text Formatter per consentire solo le interruzioni di riga


0

Non credo sia il filtro di input: è probabilmente l'impostazione di visualizzazione per il campo. Se è impostato su "Testo normale", modificalo in "Predefinito". Altrimenti i tag generati per le interruzioni di riga di input vengono rimossi prima che il campo venga visualizzato.

Per chiarezza, questo è nel pannello "Gestisci display" per il tipo di contenuto in questione. In Amministrazione »Struttura» Tipo di contenuto »MyContentType» Gestisci display. Sotto la colonna Formato per il campo.


0

Non penso che questo sia un bug, ma il risultato di confusione (non aiutato dal modo in cui Drupal è impostato) tra un campo con un formato di input "testo filtrato" impostato su "testo normale" e un campo "testo normale". Se quando crei il tuo campo selezioni "testo filtrato", l'utente avrà la possibilità di selezionare tra "testo normale" e qualsiasi altro formato di input disponibile, e usando l'opzione "testo semplice" qui durante la creazione del tuo contenuto renderà la riga interrompe e collega fuori dalla scatola. Se tuttavia durante la creazione del campo si seleziona "testo normale", nessun tag sarà disponibile / reso affatto, indipendentemente da come si configura il formato di input "testo normale". Quindi, prima di andare nel panico che il "testo normale" non funziona, controlla innanzitutto nella configurazione del tipo di contenuto che il campo abbia "testo filtrato" selezionato. È paradossale e fastidioso, ma Drupal ...;)


0

Il metodo "Formato testo normale" come metodo "Elaborazione testo" NON supporta alcun tag HTML, pertanto le interruzioni di riga non funzionano normalmente.

Crea un "formato testo" per "Testo filtrato (l'utente seleziona il formato testo)" e imposta "Formato testo" su "Testo semplice".


Ciò che ho risolto per me è stato quello di cambiare il campo nel tipo di contenuto in "testo filtrato - selezione utente", ma poi mi sono assicurato che l'utente avesse accesso solo all'editor di testo semplice. In qualche modo ha funzionato. Se l'utente avesse accesso ad altri editor di testo questo non sarebbe così carino.
Christia,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.