php - 设计良好内容发布系统的资源

标签 php mysql content-management-system

我目前使用的 cms 只支持实时编辑数据(新闻、事件、博客、文件等),我被要求构建一个支持起草(有节制)+修订历史系统的系统.我使用的 cms 是内部开发的,所以我可能不得不从头开始编写代码。

在每次保存项目时,它都会将数据快照创建到“时间轴”中。草稿也是如此。自动化功能会在需要时将时间线草稿拉入原始记录。

时间线表将存储数据类型和主键、数据的序列化版本+创建/修改日期+起草日期(如果在将来)

我快速浏览了其他系统,但我还没有改进我目前的想法。

我确定有人已经构建了这样的系统,我想在开始构建之前改进我的设计。任何好的文章/资源也会有所帮助。

谢谢

最佳答案

我认为使用 serialize() 将每一行编码为单个字符串,然后将其保存到中央数据库可能是一种解决方案。

您将拥有包含相关表格等的“实时”数据库,但是当您编辑或创建某些内容(不单击发布)时,它不会保存在您的主表格中,而是进入如下表格:

id - PRI INT
date - DATETIME
table - VARCHAR
table_id - INT
type - ENUM('UNPUBLISHED','ARCHIVED','DELETED');
data - TEXT/BLOB

...将类型设置为“未发布”并存储表和 table_id,以便它知道它来自哪里。单击发布将序列化当前表的内容,将其存储在上面设置为“存档”的表中,然后读出最新的更改(标记为未发布)并将其放入数据库中。这同样适用于删除行 - 将它们放入并标记为“已删除”以实现潜在的取消删除/回滚功能。

它需要大量的跑腿工作才能使其全部正常工作,但应该提供完整的发布/取消发布和回滚功能。正确集成到自定义数据库函数中,也可以透明地完成所有这些操作(从 SQL 的角度来看)。

我一直在计划将此作为您似乎遇到的相同问题的解决方案,但从我的角度来看它仍然是理论上的,但我认为这个想法是合理的。

关于php - 设计良好内容发布系统的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062011/

相关文章:

php imagecopyresampled 质量差

php - 如何为用户实现关注者,就像在推特中一样

php - 如何使用 php 从图像创建视频?

mysql - 如何解决 MySQL 中列名不明确的错误?

php - 使用 PHP 和 SQL 更新用户状态

database-design - 内容的 CMS 版本控制策略

PHP 停止与 Apache 合作

mysql - Hbase 与 Cassandra 或任何其他用于系统监控应用程序的大数据平台

php - 我应该实现自己的 CMS 吗?

java - Mercurial 项目中包重命名的问题