【问题标题】:Disable TinyMCE auto clean up禁用 TinyMCE 自动清理
【发布时间】:2010-12-29 16:02:56
【问题描述】:

我想使用 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>

点击确定按钮后变成这段代码:

<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>

【问题讨论】:

标签: php html tinymce smarty


【解决方案1】:

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

显而易见的事实是,可视化 HTML 编辑器旨在编辑 HTML。 Smarty 模板仅类似于 HTML。

【讨论】:

  • 没错,我已经用 HTML 注释标记替换了括号。现在代码是 HTML 验证。
【解决方案2】:

所有文本都需要在一个 html 容器内——通常是一个 p-tag。 这就是为什么

{if empty($test)}

转换成

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

。 您可以选择将此代码包装在您选择的标签内,但它必须在一个元素内!

【讨论】:

    【解决方案3】:

    改用 html cmets:

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2012-03-29
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多