panthro
panthro

Reputation: 24061

tinymce adding p tags automatically?

Im using tinymce and saving it to a database.

When I edit the saved content using tinymce and save again, it inserts a p tag at the beginning.

Editing the content over and over again leaves a large gap at the beginning of the content.

DOes anyone know a fix?

Upvotes: 50

Views: 57531

Answers (6)

Nihal Chandwani
Nihal Chandwani

Reputation: 146

using @tinymce/tinymce-react with ^4.3.2 version use any string in forced_root_block, but not empty string worked for me

init:{{ height: 600, forced_root_block: "anything", }}

Upvotes: 0

Sander van Doorn
Sander van Doorn

Reputation: 21

I have been working with TinyMCE v7 recently and encountered this issue. However the force_*_new_lines does no longer work. After a bit of reading through the docs I found the solution here. Although the issue is already solved, I figured adding this for anyone else searching.

TinyMCE v6.1 and up use the following to for shift_enter behavior on every enter

newline_behavior: 'linebreak'

Upvotes: 2

Fernando Gabrieli
Fernando Gabrieli

Reputation: 1010

From tinymce.js v4.1.10 code:

newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;

So the key to avoid <p> seems to be as stated before

settings.force_p_newlines = false

and

settings.forced_root_block = ''

Upvotes: 1

Abhay Maurya
Abhay Maurya

Reputation: 12277

For me it worked by making "force_br_newlines : true" instead of false.

 tinyMCE.init({
      mode : "textareas",
      theme : "advanced",
      force_br_newlines : true,
      force_p_newlines : false,
      forced_root_block : ''
  });

I hope it helps

Upvotes: 6

nickspiel
nickspiel

Reputation: 5630

I am sure that @Fonski answer is correct but thought I would update this for anyone else that did was confused as to where to put the code. I placed the following in my _config.php file to get it to work:

$defaultEditorConfig = HtmlEditorConfig::get('cms');
$defaultEditorConfig->setOptions(
    array(
        'mode'              => 'textareas',
        'theme'             => 'advanced',
        'force_br_newlines' => false,
        'force_p_newlines'  => false,
        'forced_root_block' => ''
    )
);

Note: If you just want to remove the p tag that automatically wraps image tags (etc) all you need to set is the 'forced_root_block' => '' option.

EDIT: This advice is for those using SilverStripe, I posted this thinking the questions was SilverStripe specific.

Upvotes: 4

Fonski
Fonski

Reputation: 1174

TinyMce automatically add "<p>" in new lines. You can set this option in tinyMce initialization like this:

  tinyMCE.init({
      mode : "textareas",
      theme : "advanced",
      force_br_newlines : false,
      force_p_newlines : false,
      forced_root_block : '',
  });

Hope it will help

Fonski

Upvotes: 106

Related Questions