Como obtenho quebras de linha ao usar o formato de texto sem formatação?

11

Eu sinto que isso deve ser realmente simples, mas está me deixando louco.

Eu tenho 'texto sem formatação' selecionado para todos os elementos do meu corpo. Não quero que ninguém consiga inserir html ao preencher formulários.

No entanto, quero que as quebras de linha sejam preservadas. Na página de configuração da planície, há de fato uma caixa de seleção para transformar as quebras de linha em br ep, mas não importa o que eu verifique ou como reorganize o peso dos filtros, não consigo preservar as quebras.

Qual é a configuração correta para que isso funcione, para que eu possa preservar retornos nos textos?

blue928
fonte
1
Isso é estranho. Eu tenho a mesma configuração e funciona para mim. Esta é uma instalação limpa ou uma atualização? Você está usando um módulo personalizado, talvez fazendo substituições ou algo mais?
Emil Orol
Parecia um bug ou algo fora do lugar. O que eu imaginei que estava acontecendo é que eu poderia retornar tags br e p para quebras de linha, mas elas estavam sendo filtradas para preservar o verdadeiro 'texto sem formatação'. O que você verificou e qual a ordem dos seus filtros?
blue928
Eu ainda tenho esse problema com o texto sem formatação. Também adicionei tags <p> e <br>, mas não tive sorte.
Sokratis

Respostas:

11

Parece um bug do Drupal 7.x. Alterar a ordem dos filtros não funciona no meu caso.

Minha solução a curto prazo foi colocar isso dentro do template.php do meu 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']);
  }
}
?>

Para campos em visualizações, é necessário definir esta opção separadamente na seção "Reescrever resultados" das configurações de campo.

Druvision
fonte
3

Na verdade, ele deve funcionar com essa configuração de ordem de filtros em "admin / config / content / formatos / texto simples"

  1. Exibir qualquer HTML como texto sem formatação
  2. Converter URLs em links
  3. Converter quebras de linha em HTML (por exemplo, <br> e <p>)

Experimente os filtros abaixo removendo "Exibir qualquer HTML como texto sem formatação":

  1. Limitar tags HTML permitidas (configure apenas <a> e <br> para a lista de tags HTML permitidas)
  2. Converter URLs em links
  3. Converter quebras de linha em HTML (por exemplo, <br> e <p>)
Sithu
fonte
2
isso não funcionará se o formato de entrada não for Texto filtrado.
Artfulrobot
3

A solução é simples. Basta exibir o conteúdo de texto sem formatação com o seguinte css.

white-space: pre-line;
Kevin Siji
fonte
2
Na verdade, white-space: pre-line;como mencionado em drupal.org/node/1095838#comment-6679314, é melhor.
Jeroen
Uma solução tão elegante.
sephiith 23/06
Isso funciona, mas apenas se você desejar segmentar cada um de seus campos manualmente ou se todos os seus campos de texto longo precisarem fazer isso. Se você misturou campos de "texto sem formatação" com outros tipos de campos e se estiver usando isso com mpdf para criar um arquivo PDF, somente a solução da Druvision funciona.
Richard
1

Usei o módulo Advanced Text Formatter para resolver rapidamente esse problema sem código.

  1. Instale e ative o módulo.
  2. Clique em "Gerenciar exibição" do seu tipo de conteúdo.
  3. Altere o 'Texto sem formatação' do formato do seu campo para 'Texto avançado'
  4. Clique na engrenagem à direita (ou em um link para formatar as configurações)

    1. Defina o comprimento de corte para 0
    2. Defina o filtro como "Limitar tags HTML permitidas"
    3. Remova todos os itens de 'Tags HTML permitidas'
    4. Marque 'Converte quebras de linha em HTML'
    5. Clique em 'Atualizar' e salve sua exibição no campo.

Formate as configurações do módulo Advanced Text Formatter para permitir apenas quebras de linha

StackAttack
fonte
0

Não acho que seja a filtragem de entrada: provavelmente é a configuração de exibição para o campo. Se estiver definido como "Texto sem formatação", altere para "Padrão". Caso contrário, os tags gerados para as quebras de linha de entrada serão removidos antes que o campo seja exibido.

Para maior clareza, isso está no painel "Gerenciar exibição" do tipo de conteúdo em questão. Em Administração »Estrutura» Tipo de conteúdo »MyContentType» Gerenciar exibição. Sob a coluna Formato para o campo.

Alfred Armstrong
fonte
0

Eu não acho que isso seja um bug, mas o resultado de confusão (não ajudada pela maneira como o Drupal é configurado) entre um campo com um formato de entrada "texto filtrado" definido como "texto sem formatação" e um campo "texto sem formatação". Se, ao criar seu campo, você selecionar "texto filtrado", o usuário terá a opção de selecionar "texto sem formatação" e quaisquer outros formatos de entrada disponíveis, e usar a opção "texto sem formatação" aqui ao criar seu conteúdo renderizará a linha quebra e links fora da caixa. Se, no entanto, na criação do campo, você selecionar "texto sem formatação", nenhuma tag estará disponível / renderizada, não importa como você configure o formato de entrada "texto sem formatação". Portanto, antes de entrar em pânico para que o "texto sem formatação" não funcione, primeiro verifique na configuração do tipo de conteúdo se o campo tem "texto filtrado" selecionado. É paradoxal e irritante, mas Drupal ...;)

Thoughtcat
fonte
0

O método "Texto sem formatação" como o método "Processamento de texto" NÃO suporta tags HTML, portanto, as quebras de linha não funcionam normalmente.

Crie um "formato de texto" para "Texto filtrado (o usuário seleciona o formato de texto)" e defina o "Formato de texto" como "Texto sem formatação".

user9616
fonte
O que resolveu isso para mim foi alterar o campo no tipo de conteúdo para "texto filtrado - seleção de usuário", mas depois verifiquei se o usuário só tinha acesso ao editor de texto sem formatação. De alguma forma isso funcionou. Se o usuário tivesse acesso a outros editores de texto, isso não seria tão bom.
Christia
-2

Este ótimo módulo pode ajudá-lo a https://drupal.org/project/wysiwyg_linebreaks

O Wysiwyg Linebreaks permite que os usuários dos editores do wysiwyg salvem e abram as marcações em seu site com quebras de linha em vez de <p>e <br /> tags.

user24291
fonte