2

“轻量级”内容管理系统的一些示例:

它们的共同点是您只需将特定的类名添加到您想要使其可编辑的网页部分。在后端,他们以某种方式将编辑的片段保存回您编辑的文件(无数据库)。

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

原始 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,但事情已经发生了变化。Surreal CMS 和 CushyCMS 都在使用它,这是一个很好的指标,它是要走的路。

我在使用 PHP DOM 时遇到的问题是我不能替换用户编辑的原始文档的一部分。加载原始文件时,PHP DOM 会对文档做一些不需要的事情,比如更改元标记、将单引号转换为双引号
......文档,因为它应该保持不变(用户没有编辑它,对)。

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

4

3 回答 3

2

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

A 部分:编辑

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

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

B 部分:保存到文件

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

只需找到元素,写入更改,写入文件,完成。

但是请注意,如果您想让它适用于实际项目,事情会变得更加复杂。

编辑:刚刚看到您的“PHP 代码必须继续工作”部分问题。考虑一些正则表达式魔术 - 用/(<?.*?>)/文本占位符替换每个(例如“-PHPCODE-$i-”),并在更新 dom 树后,将这些占位符替换回来。无论哪种方式,都是一项艰巨的工作。

于 2011-07-19T14:25:06.243 回答
1

您的问题对于最佳方法来说太模糊了,我的方法可能是 10 种好方法中的一种,但它们仍然不是最好的方法。对于某些人来说,我的方式甚至会是 100 种糟糕方式中的一种。

关于此class="editable"属性:您不能将这些服务器端与 PHP 一起使用。我不知道这些轻量级 CMS,但它们可能使用 Javascript/AJAX,它针对该类并可能添加了一个编辑按钮。

UDPATE啊,确实,这些“轻量级CMS”改变了网页文件。事情就是这样。这些不是 CMS,而是在线 HTML 编辑器。在这种情况下,最好的是 DOM 文档,由于某种原因你不想要它。

于 2011-07-18T21:35:58.033 回答
1

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

于 2013-05-05T09:36:49.543 回答