web-dev-qa-db-ja.com

returnキーを押すと、tinyMCEは前のブロック要素を複製します(ビジュアルエディタ)

これに夢中になります。これが正常な動作であるかどうかわかりません。

<figure><figcaption>を使うように画像の挿入を書き直すためのフィルタを追加しました。うまくいきます。

ただし、ビジュアルビューに画像を挿入してReturnキーを押すと、新しい段落が始まります。

代わりに別の<figure>要素を作成し、その中に次の行のテキストを入れます。

テキストビューに切り替えた場合に生成されるコードの例:

<figure class="alignnone">

<a href="path/to/image.jpg"><img class="alignnone size- wp-image-209" src="path/to/image.jpg" width="199" height="43" /></a>

<figcaption>Image Caption</figcaption>

</figure>

<figure class="alignnone"`>This should be a new paragraph but is inside a figure tag.</figure>

TinyMCEが前のブロック要素を複製しないようにする方法はありますか?テキストを<h2>のように設定してreturnキーを押すと、次の行のデフォルトは<p>に戻ります。それが私が望む行動です。

2
Pete

私は現在同じ問題を抱えています。これが私の回避策です。

add_filter( 'tiny_mce_before_init', 'workaround' );
public function workaround( $in ) {
    $in['force_br_newlines'] = true;
    $in['force_p_newlines'] = false;
    $in['forced_root_block'] = '';
    return $in;
}

tiny_mce_before_initを使用すると、WordPressのエディタが使用するTinyMCE設定にアクセスできます。 TinyMCEConfiguration もご覧ください。

これの欠点は(return)ではなくpという結果になり、代わりにbrになります。 force_br_newlinesforce_p_newlinesを逆にしてみましたが、元の問題が発生します。これが助けになることを願っています。

2
Ryan Gannon

Initではkeep_stylesオプションをfalseに設定できます。

このオプションは、ユーザーがEnter/Returnを押したときにエディタの現在のテキストスタイルを維持します。

tinymce.init({
  selector: 'textarea',  // change this value according to your HTML
  keep_styles: false
});

のドキュメント から引用

1
musicvicious

私は同じ問題を抱えていましたが、Wordpressにはありません。とにかく、私は 'p'ブロックに 'p'タグの間の内容を取らせる。そしてそのために、戻るボタンを押して内容をDBに保存すると、TinyMceは 'p'タグを複製します。また、保存するたびにタグが複製されます。私の解決策はinitにあります:

force_br_newlines: true,
force_p_newlines: false,
forced_root_block: 'p',
invalid_elements: 'p',

最も重要なのはinvalid_elementsです。ここでは 'p'タグをリストする必要があります。この設定の後、私のコードは 'p'タグをもう複製しません。あなたのものが同じことを願っています。

1
Imre

これは、このソリューションの他のバージョンです。前の設定は問題ないので、新しい設定を書く必要がありますが、それ以外の設定ではうまくいきません。この解決法では、改行と見出しの後にpタグが重複するのを防ぎますが、段落の間に単純なbrタグを1つ入れます。

forced_root_block: 'p',
force_p_newlines: false,
force_br_newlines: false,
extended_valid_elements: '-p',

Extended_valid_elementsを使用します。デフォルト設定を再定義したくないため、valid_elementsの1つの値だけを再定義したいのです。 -pの意味と他の設定はここで です

この設定では、エディタ内のテキスト要素間のスペースが視覚的に大きくなることに注意してください

0
Imre