“轻”内容管理系统的一些例子:
他们的共同点是,您只需将特定的类名添加到您要进行编辑的网页部分。 在后端,它们以某种方式将编辑的片段保存回您编辑的文件(无数据库)。
原创内容和编辑内容的示例:
原始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触及文档的其余部分,但我不知道。所以,如果你知道,请告诉我。
答案 0 :(得分:2)
你的问题有点模糊,但也许这会对你有所帮助:
要编辑轻量级页面,您必须在页面中注入一些javascript。这个javascript搜索具有“editable”类的所有元素,并将它们设置为可编辑(请将contentEditable属性作为一个非常基本的起点)。
保留已编辑元素的一些标识,例如id,xpath或索引。要保存文本,只需将它们写入服务器即可。
您可以将这些部分存储在数据库中,但我假设您要直接更改该文件。为此,您只需将每个元素的内容替换为您通过AJAX收到的内容。要查找源代码中的元素,您必须使用类似PHP的SimpleDOM(这也意味着HTML页面是有效的XHTML)。
找到元素,编写更改,编写文件,完成。
但是,请注意,如果您希望将其用于实际项目,事情会变得更加复杂。
编辑:刚看到你的“PHP代码必须继续工作”这个问题的一部分。考虑这个的一些正则表达式魔术 - 用文本占位符替换每个/(<?.*?>)/
(例如“-PHPCODE- $ i-”),并在更新dom树之后,替换这些占位符。无论哪种方式,一份艰苦的工作。
答案 1 :(得分:1)
你的问题太过模糊,没有最好的方式,我的方式可能是10种好方法的好方法,而且它们仍然不是最好的方式。对于一些人来说,我的方式甚至会在100种不好的方式中出现。
关于此class="editable"
属性:您不能将这些服务器端与PHP一起使用。我不知道这些轻量级的CMS,但他们可能正在使用Javascript / AJAX来定位该类,并且可能添加了一个编辑按钮。
UDPATE 啊看起来确实,这些“轻型CMS”改变了网页文件。好吧,这就是事情。这些不是CMS而是在线HTML编辑器。在这种情况下,最佳事物是DOM Document,由于某种原因你不想要。
答案 2 :(得分:1)
当您只需要编辑几个文本时,有一个新的非常简单的CMS实用程序 - Minorit。可以在没有逻辑更改,没有安装的旧网站上使用它。