Estou usando o CKEditor como editor de back-end no meu site. Isso está me levando à curva, já que parece querer mudar o código para a forma que achar melhor sempre que pressiono o botão de fonte. Por exemplo, se eu clicar no código-fonte e criar um <div>
...
<div class="myclass">some content</div>
Então, sem motivo aparente, retira a classe do <div>
, então quando eu clico no código novamente, ele foi alterado para ...
<div>some content</div>
Eu presumo que esse comportamento irritante pode ser desativado no config.js
, mas eu tenho cavado e não consigo encontrar nada na documentação para desativá-lo.
Respostas:
Desativando a filtragem de conteúdo
A solução mais fácil é ir para o config.js e a configuração:
( Lembre-se de limpar o cache do navegador ). Então o CKEditor para de filtrar o conteúdo inserido. No entanto, isso desativará totalmente a filtragem de conteúdo, que é um dos recursos mais importantes do CKEditor.
Configurando a filtragem de conteúdo
Você também pode configurar o filtro de conteúdo do CKEditor com mais precisão para permitir apenas esses elementos, classes, estilos e atributos necessários. Essa solução é muito melhor, porque o CKEditor ainda remove muitos códigos ruins que os navegadores produzem ao copiar e colar conteúdo, mas não tira o conteúdo desejado.
Por exemplo, você pode estender a configuração padrão do CKEditor para aceitar todas as classes div:
Ou algumas coisas do Bootstrap:
Ou você pode permitir listas de descrição com
dir
atributos opcionais paradt
edd
elementos:Estes foram apenas exemplos muito básicos. Você pode escrever todo tipo de regras - exigindo atributos, classes ou estilos, combinando apenas elementos especiais, combinando todos os elementos. Você também pode proibir coisas e redefinir totalmente as regras do CKEditor. Leia mais sobre:
fonte
Eu encontrei uma solução.
Isso desativa a filtragem, está funcionando, mas não é uma boa ideia ...
Jogar com uma sequência de conteúdo funciona bem para id, etc, mas não para os atributos de classe e estilo, porque você tem () e {} para filtragem de classe e estilo.
Portanto, minha aposta é permitir que qualquer classe no editor seja:
Isso permite qualquer classe e qualquer estilo embutido.
Para permitir apenas class = "asdf1" e class = "asdf2" para qualquer tag:
(então você deve especificar os nomes das classes)
Para permitir apenas class = "asdf" apenas para a tag p:
Para permitir o atributo id para qualquer tag:
etc etc
Para permitir a tag de estilo (<style type = "text / css"> ... </style>):
Para ser um pouco mais complexo:
Espero que seja uma solução melhor ...
fonte
Edit : esta resposta é para quem usa o módulo ckeditor no drupal.
Encontrei uma solução que não requer modificação do arquivo ckeditor js.
esta resposta é copiada daqui . todos os créditos devem ir para o autor original.
fonte
Desde o CKEditor v4.1, você pode fazer isso no config.js do CKEditor:
Você pode consultar a documentação oficial para obter a sintaxe detalhada das Regras de conteúdo permitido
fonte
*[id](*)
fez o truque, eu tentei*[id,class]
antes, mas isso não permite que o atributo de classe de alguma forma. Os documentos do CKeditor são um pouco como um labirinto.se você estiver usando o ckeditor 4.x, tente
Se você estiver usando o ckeditor 3.x, pode estar tendo esse problema .
tente colocar a seguinte linha em config.js
fonte
config.ignoreEmptyParagraph=false;
é a única solução que funcionou para mim, de todas as respostas que tentei. Obrigado.Isso é chamado ACF (Filtro Automático de Conteúdo) no ckeditor. Ele remove todas as tags não desejadas. O que estamos usando no conteúdo de texto.
fonte
Consulte o guia oficial do Filtro de conteúdo avançado e o tutorial de integração de plugins .
Você encontrará muito mais do que isso sobre esse recurso poderoso. Consulte também config.extraAllowedContent que parece adequado para suas necessidades.
fonte
Se você usar o Drupal AND o módulo chamado "WYSIWYG" com a biblioteca CKEditor, a seguinte solução alternativa poderá ser uma solução. Para mim, funciona como um encanto. Eu uso o CKEditor 4.4.5 e o WYSIWYG 2.2 no Drupal 7.33. Encontrei esta solução alternativa aqui: https://www.drupal.org/node/1956778 .
Aqui está: eu crio um módulo personalizado e coloco o seguinte código no arquivo ".module":
Espero que isso ajude outros usuários do Drupal.
fonte
A seguir, é apresentado o exemplo completo do CKEDITOR 4.x :
HTML
ROTEIRO
O código acima permitirá todas as tags no editor.
Para mais detalhes: Regras de conteúdo permitido pelo editor CK
fonte
Eu descobri que a mudança para usar html completo em vez de html filtrado (abaixo do editor na caixa suspensa Formato de texto) é o que corrigiu esse problema para mim. Caso contrário, o estilo desapareceria.
fonte
Eu gostaria de adicionar este config.allowedContent = true; precisa ser adicionado ao arquivo ckeditor.config.js, não o config.js, config.js não fez nada por mim, mas adicioná-lo à área superior do ckeditor.config.js manteve minhas classes div
fonte
Outra opção, se estiver usando o drupal, é simplesmente adicionar o estilo css que você deseja usar. dessa forma, não retira o estilo ou o nome da classe.
Portanto, no meu caso, na guia css do drupal 7, basta adicionar algo como
facebook = span.icon-facebook2
verifique também se o botão estilos de fonte está ativado
fonte
Enfrento o mesmo problema no chrome com o ckeditor 4.7.1. Apenas desative o pasteFilter no ckeditor instanceReady. Essa propriedade desabilita todas as opções de filtro do Advanced Advance Content Filter (ACF).
fonte