Php 禁用TinyMCE自动清理

Php 禁用TinyMCE自动清理,php,html,tinymce,smarty,Php,Html,Tinymce,Smarty,我想使用tinymce编辑器编辑smarty模板。 问题是编辑器总是重新排列代码。 如果我在HTML窗口中输入此代码: <table border="0"> <tbody> <tr> <td>&nbsp;</td> <td>&nbsp;</td> </tr> {if empty($test)} <tr> <td>&nbsp;</td> <

我想使用tinymce编辑器编辑smarty模板。 问题是编辑器总是重新排列代码。 如果我在HTML窗口中输入此代码:

<table border="0">
<tbody>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{if empty($test)}
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{/if}
</tbody>
</table>

{如果为空($test)}
{/if}
单击“确定”按钮后变为此代码:

<p>{if empty($test)} {/if}</p>
<table border="0">
<tbody>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
{if empty($test)}{/if}


所有文本都需要在html容器中—通常是一个p标签。 这就是原因

{if empty($test)}
转变为

<p>{if empty($test)} {/if}</p>
{if empty($test)}{/if}


您可以选择将此代码包装在您选择的标记内,但它必须位于元素内

我从未写过一个,但我认为JavaScript支持的HTML编辑器不会直接在HTML上工作。相反,它们可能在内存中构建DOM树。您使用的不是简单的HTML,而是Smarty代码。这意味着,如果您将其作为HTML处理,您将始终丢失信息,因为它不是这样的东西。您给出的示例很好地说明了这一点:无法将该字符串表示为HTML;如果你在浏览器中打开它,它看起来会坏掉


显而易见的事实是,可视化HTML编辑器是为编辑HTML而设计的。Smarty模板只类似于HTML

改用html注释:

<table border="0">
<tbody>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<!-- {if empty($test)} -->
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<!-- {/if} -->
</tbody>
</table>


尚未使用smarty,但此链接可能会有所帮助:或者实际上:将其设置为false?或者更好,只需使用文本编辑器即可没错,我用HTML注释标记替换了括号。现在代码是HTML valide。