チャンネルフォームはチャンネルエントリのように<p>タグを挿入していません。不思議なことにすべての<p>タグがエントリから消えた

When we enter properly formatted HTML into the RTE via the CP, the

tags are present. But when we use the {exp:channel:form ...} we lose all the

tags but retain all other tags. We're using Textarea (Rich Text) fields because we need the RTE on our custom dashboard.

I tested the {exp:channel:entries ...} そしてthe

tags were properly retained.

では、これを引き起こす原因は何ですか?どうすれば修正できますか?入力された textarea 要素の内容を実際にプレビューしているので、適切なタグを出力するにはチャンネル形式が必要です。


更新:

When using {field:my_channel_field} the

tags are retained, but the RTE isn't created. It's just a textarea with html/text.


アップデート2:

I did some digging そしてfound that in the SQL tables there are no

tags, meaning that they're inserted when the data is called.

たとえば、これは実際にデータベースにあるものです

Lorem nascetur

Porttitor. Integer nunc. Hac ultricies velit magnis. Nunc est, tortor proin?

そして、これは {exp:channel:entries ...} を使って出力されるものです:

Lorem nascetur

Porttitor. Integer nunc. Hac ultricies velit magnis. Nunc est, tortor proin?

So at some point the

tags are being injected into the document, そしてI want to know how can I force this so they are in the RTE when the user goes to edit them within an {exp:channel:form ...} loop?


アップデート3:

私はこれらを /system/expressionengine/modules/rte/libraries/Rte_lib.php の445〜446行で見つけました

// Strip paragraph tags
$data = preg_replace("#<(/)?pre[^>]*?>#i", "<$1pre>", $data);
$data = preg_replace("#

|]*?".">|

#i", "", preg_replace("#<\/p>]*?".">#i", "\n", $data));

そして

if (stristr($str, ']*?>#i", "<$1pre>", $str);
    $str = preg_replace("#

|]*?".">|

#i", "", preg_replace("#<\/p>]*?".">#i", "\n", $str)); }

/system/expressionengine/libraries/EE_Typography.php にあります。

それらをコメントアウトすることは問題を解決するようには見えなかった


アップデート4:

I tested my theory more completely by simply doing a {exp:channel:entries ...} そして{exp:channel:form ..} on a blank template with nothing other than a field.

When output, the channel:form actually outputs HTML tags (

from update 2 above) that never get rendered, そしてthe channel:entries outputs the correct HTML そしてdoes get rendered. See picture:

Example of channel:form output

0

1 答え

多くの驚きの後、私は save_field()関数の Strip paragraph tags セクションを上記から再度コメントアウトしましたが、より完全にテストして動作します。タグは channel:form を通じて送信/再生成された状態に保たれます。これはバグを引き起こす可能性がありますが、今のところそれがあります。

/system/expressionengine/modules/rte/libraries/Rte_lib.php

445行目から447行目。

// Strip paragraph tags
/*
$data = preg_replace("#<(/)?pre[^>]*?>#i", "<$1pre>", $data);
$data = preg_replace("#

|]*?".">|

#i", "", preg_replace("#<\/p>]*?".">#i", "\n", $data)); */
1
追加された