轻CMS更新编辑在文件与PHP


Light CMS update edits in file with PHP

一些"轻型"内容管理系统的例子:

  • CushyCMS
  • 超现实的CMS
  • 统一

它们的共同之处在于,你只需在你想要编辑的网页部分添加一个特定的类名。在后台,它们以某种方式将编辑后的片段保存回您编辑的文件(没有数据库)。

原始内容和编辑内容示例:

原始HTML代码

<div class="editable">
<ul>
<li>an</li>
<li>unordered list</li>
</ul>
</div>

编辑后的HTML代码

<div class="editable">
<ol>
<li>an</li>
<li>ordered list</li>
</ol>
</div>

前端对我来说很清楚,但我如何最好地处理后端(PHP)?

我需要确保动态PHP代码保持工作,所以我不能只是更新完整的文件。

任何资源或指针都是非常受欢迎的,因为我已经搜索了这种技术,但无法找到任何深入的想法或方法。
上面列出的轻量级内容管理系统不是开源的,所以从源代码中学习也不是一个选择。

编辑

我说过我不想使用PHP DOM,但是事情已经改变了。超现实CMS和CushyCMS都在使用它,这是一个很好的指标,这是一个很好的方向。

我使用PHP DOM遇到的问题是,我无法替换,只有用户编辑的原始文档的部分。当加载原始文件时,PHP DOM会对文档做一些不必要的事情,如更改元标记,将单引号转换为双引号,…
现在,对于已编辑的部分,这是可以的,但对于文档的其余部分,这是不可接受的,因为它应该保持不变(用户没有编辑这个,对吧)。

Cushy和Surreal似乎都知道如何阻止PHP DOM触及文档的其余部分,但我不知道。如果你知道,请告诉我

你的问题有点模糊,但也许这对你有帮助:

A部分:编辑

要编辑您的轻量级页面,您必须在页面中注入一些javascript。这个javascript搜索所有具有"editable"类的元素,并将它们设置为可编辑的(看看这个的contentteditable属性作为一个非常基本的起点)。

保留已编辑元素的一些标识,例如id、xpath或索引。要保存文本,只需将它们ajax到服务器。

第二部分:保存到文件

您可能将这些片段存储在数据库中,但我假设您希望直接更改文件。为此,只需将每个元素的内容替换为通过AJAX接收到的内容。要在源代码中找到元素,必须使用类似php SimpleDOM的东西(这也意味着HTML页面是有效的XHTML)。

只要找到元素,写修改,写文件,完成。

注意,然而,如果你想让它在实际项目中工作,事情会变得复杂得多。

编辑:刚刚看到你的"PHP代码必须继续工作"的问题的一部分。考虑一些正则表达式的魔力——用一个文本占位符替换每个/(<?.*?>)/(例如"- phpcode -$i-"),更新dom树后,把这些占位符替换回来。

你的问题太模糊了,没有最好的方法,我的方法可能是10种好方法中的一种,但它们都不是最好的方法。对有些人来说,我的方式甚至是100种糟糕方式中的一种。

关于class="editable"属性:您不能在PHP服务器端使用这些属性。我不知道这些轻量级的CMS,但他们可能使用Javascript/AJAX的目标类,可能会增加一个编辑按钮。

UDPATE啊看确实,这些"轻CMS"改变网页文件。事情是这样的。这些不是CMS,而是在线HTML编辑器。在这种情况下,最好的的东西是DOM文档,因为某些原因,你不希望。

当您需要编辑几个文本时,有一个新的非常简单的CMS实用程序- minor。它可以在旧网站上使用,不需要改变逻辑,不需要安装。